def get_test_suite(suite, machine=None, compiler=None): ############################################################################### """ Return a list of FULL test names for a suite. """ expect(suite in _TEST_SUITES, "Unknown test suite: '%s'" % suite) machine = acme_util.probe_machine_name() if machine is None else machine compiler = acme_util.get_machine_info("COMPILERS", machine=machine)[0] if compiler is None else compiler inherits_from, tests_raw = _TEST_SUITES[suite] tests = [] for item in tests_raw: test_mod = None if (isinstance(item, str)): test_name = item else: expect(isinstance(item, tuple), "Bad item type for item '%s'" % str(item)) expect(len(item) in [2, 3], "Expected two or three items in item '%s'" % str(item)) expect(isinstance(item[0], str), "Expected string in first field of item '%s'" % str(item)) expect(isinstance(item[1], str), "Expected string in second field of item '%s'" % str(item)) test_name = item[0] if (len(item) == 2): test_mod = item[1] else: expect(type(item[2]) in [str, tuple], "Expected string or tuple for third field of item '%s'" % str(item)) test_mod_machines = [item[2]] if isinstance(item[2], str) else item[2] if (machine in test_mod_machines): test_mod = item[1] tests.append(acme_util.get_full_test_name(test_name, machine, compiler, testmod=test_mod)) if (inherits_from is not None): inherited_tests = get_test_suite(inherits_from, machine, compiler) expect(len(set(tests) & set(inherited_tests)) == 0, "Tests %s defined in multiple suites" % ", ".join(set(tests) & set(inherited_tests))) tests.extend(inherited_tests) return tests
def create_cdash_xml(results, cdash_build_name, cdash_project, cdash_build_group, start_time): ############################################################################### # # Create dart config file # if (start_time is None): warning("No valid start_time provided, using current time instead") start_time = time.time() utc_time_tuple = time.gmtime(start_time) cdash_timestamp = time.strftime("%H:%M:%S", utc_time_tuple) hostname = acme_util.probe_machine_name() if (hostname is None): hostname = socket.gethostname().split(".")[0] warning("Could not convert hostname '%s' into an ACME machine name" % (hostname)) dart_config = \ """ SourceDirectory: %s BuildDirectory: %s # Site is something like machine.domain, i.e. pragmatic.crd Site: %s # Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ BuildName: %s # Submission information IsCDash: TRUE CDashVersion: QueryCDashVersion: DropSite: my.cdash.org DropLocation: /submit.php?project=%s DropSiteUser: DropSitePassword: DropSiteMode: DropMethod: http TriggerSite: ScpCommand: %s # Dashboard start time NightlyStartTime: %s UTC """ % (os.getcwd(), os.getcwd(), hostname, cdash_build_name, cdash_project, distutils.spawn.find_executable("scp"), cdash_timestamp) with open("DartConfiguration.tcl", "w") as dart_fd: dart_fd.write(dart_config) utc_time = time.strftime('%Y%m%d-%H%M', utc_time_tuple) os.makedirs(os.path.join("Testing", utc_time)) # Make tag file with open("Testing/TAG", "w") as tag_fd: tag_fd.write("%s\n%s\n" % (utc_time, cdash_build_group)) create_cdash_test_xml(results, cdash_build_name, cdash_build_group, utc_time, start_time, hostname) create_cdash_upload_xml(results, cdash_build_name, cdash_build_group, utc_time, hostname) acme_util.run_cmd("ctest -VV -D NightlySubmit", verbose=True)