summaryrefslogtreecommitdiffstats
path: root/tests/test-framework/vmware/run.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-framework/vmware/run.py')
-rw-r--r--tests/test-framework/vmware/run.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/test-framework/vmware/run.py b/tests/test-framework/vmware/run.py
new file mode 100644
index 000000000..f02571051
--- /dev/null
+++ b/tests/test-framework/vmware/run.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import ConfigParser, datetime, optparse, os, sys
+from functools import partial
+import cdashreporter, control, ftpsource, source, reporter, utils
+
+def die( msg ):
+ sys.stderr( msg + '\n' )
+ sys.exit( 1 )
+
+optionParser = optparse.OptionParser(usage="%prog [options] configfile installer0 [installer1 ...]", version="%prog 0.1")
+optionParser.add_option("-r", "--vmrun", dest="vmrun", help="vmrun executable to use", metavar="VMRUN" )
+optionParser.add_option("-s", "--only-since", dest="since", help="test only installers newer than timestamp (YYYY-MM-DD or YYYY-MM-DD-hh-mm)", metavar="SINCE" )
+optionParser.add_option("-c", "--checkerInstallation", dest="checkerInstallation", help="checker installation to use for post-installation checks", metavar="CHECKERINSTALLATION" )
+(options, args) = optionParser.parse_args()
+
+try:
+ configpath = utils.makeAbsolutePath( args[0], os.getcwd() )
+except IndexError:
+ optionParser.print_usage( sys.stderr )
+ sys.exit( 1 )
+
+config = ConfigParser.SafeConfigParser()
+config.read( configpath )
+
+#make an unary functor to create absolute paths
+abspath = partial( utils.makeAbsolutePath, relativeTo=os.path.dirname( configpath ) )
+
+vmrun = utils.get_config_option( config, options.vmrun, "vmrun", utils.findVMRun() )
+useGui = utils.get_config_option( config, None, "gui", "true" ).lower() == "true"
+createErrorSnapshots = utils.get_config_option( config, None, "createErrorSnapshots", "true" ).lower() == "true"
+hostType = utils.get_config_option( config, None, "type", "", "Host" )
+hostLocation = utils.get_config_option( config, None, "location", "", "Host" )
+hostUsername = utils.get_config_option( config, None, "username", "", "Host" )
+hostPassword = utils.get_config_option( config, None, "password", "", "Host" )
+
+cdashHost = utils.get_config_option( config, None, "host", "", "CDash" )
+cdashLocation = utils.get_config_option( config, None, "location", "", "CDash" )
+cdashProject = utils.get_config_option( config, None, "project", "", "CDash" )
+
+if vmrun == None:
+ die( "Could not find vmrun executable. Please specify it in the config file (vmrun=...) or via the --vmrun option" )
+
+checkerInstallation = utils.get_config_option( config, options.checkerInstallation, "checkerInstallation" )
+if checkerInstallation == None:
+ die( "Could not find checker installation. Please specify it in the config file (checkerInstallation=...) or via the --checkerInstallation option" )
+
+#apply functor to list to get absolute paths:
+testcases = map( abspath, utils.get_enumerated_config_option( config, 'testcase' ) )
+if len( testcases ) == 0:
+ die( "No testcases specified. Please specify at least one test case in the configuration" )
+
+vms = map( abspath, utils.get_enumerated_config_option( config, 'vm' ) )
+if len( vms ) == 0:
+ die( "No VMs specified. Please specify at least one VM in the configuration" )
+
+installers = args[1:]
+
+if len( installers ) > 0:
+ source = source.Source()
+ for i in installers:
+ source.addDummy( 5, i )
+else:
+ source = ftpsource.FtpSource()
+ if options.since:
+ try:
+ sdt = datetime.datetime.strptime( options.since, '%Y-%m-%d' )
+ except ValueError:
+ sdt = datetime.datetime.strptime( options.since, '%Y-%m-%d-%H-%M' )
+ source.setStartDate( sdt )
+ found = True
+ nextsec = 0
+ while found:
+ sec = "Source{0}".format( nextsec )
+ nextsec += 1
+ try:
+ host = config.get( sec, "host" )
+ path = config.get( sec, "path" )
+ platform = config.get( sec, "platform" )
+ print( "** Add FTP location {0}:{1} ({2})".format( host, path, platform ) )
+ source.addLocation( host, path, platform )
+ except ConfigParser.NoSectionError:
+ found = False
+
+cdashHost = utils.get_config_option( config, None, "host", "", "CDash" )
+cdashLocation = utils.get_config_option( config, None, "location", "", "CDash" )
+cdashProject = utils.get_config_option( config, None, "project", "", "CDash" )
+
+if len( cdashHost ) > 0:
+ reporter = cdashreporter.CDashReporter( cdashHost, cdashLocation, cdashProject )
+else:
+ reporter = reporter.Reporter()
+
+control = control.Control( vmrun, checkerInstallation, source, reporter )
+control.setGuiEnabled( useGui )
+control.setCreateErrorSnapshots( createErrorSnapshots )
+
+if len( hostType ) > 0:
+ control.setRemoteHost( hostType, hostLocation, hostUsername, hostPassword )
+
+for i in vms:
+ control.addVM( i )
+for i in testcases:
+ control.addTestCase( i )
+
+control.run()