selftest: Add --random-order option.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 26 Oct 2012 23:53:57 +0000 (15:53 -0800)
committerJelmer Vernooij <jelmer@samba.org>
Sat, 27 Oct 2012 13:16:19 +0000 (05:16 -0800)
selftest/selftest.pl
selftest/wscript

index b50853e54d3a5fad2aba2319b2b6d1479864089d..ffb61495a9ee16eeae069f61441f6770822a1307 100755 (executable)
@@ -42,6 +42,7 @@ my $opt_quick = 0;
 my $opt_socket_wrapper = 0;
 my $opt_socket_wrapper_pcap = undef;
 my $opt_socket_wrapper_keep_pcap = undef;
+my $opt_random_order = 0;
 my $opt_one = 0;
 my @opt_exclude = ();
 my @opt_include = ();
@@ -236,8 +237,9 @@ my $result = GetOptions (
                'ldap:s' => \$ldap,
                'resetup-environment' => \$opt_resetup_env,
                'testlist=s' => \@testlists,
+               'random-order' => \$opt_random_order,
                'load-list=s' => \$opt_load_list,
-                'binary-mapping=s' => \$opt_binary_mapping
+               'binary-mapping=s' => \$opt_binary_mapping
            );
 
 exit(1) if (not $result);
@@ -825,6 +827,12 @@ sub teardown_env($)
 # This 'global' file needs to be empty when we start
 unlink("$prefix_abs/dns_host_file");
 
+if ($opt_random_order) {
+       require List::Util;
+       my @newtodo = List::Util::shuffle(@todo);
+       @todo = @newtodo;
+}
+
 if ($opt_testenv) {
        my $testenv_name = $ENV{SELFTEST_TESTENV};
        $testenv_name = $testenv_default unless defined($testenv_name);
index 9ea2f6fdd4a7f1485e83bdfd9f4ce8fd96e798bd..a5b2e5358f6460380dfdc3c2c6b60225c439363e 100644 (file)
@@ -69,6 +69,8 @@ def set_options(opt):
     gr.add_option('--socket-wrapper-keep-pcap',
                   help=("create a pcap file for all individual test"),
                   action="store_true", dest='SOCKET_WRAPPER_KEEP_PCAP', default=False)
+    gr.add_option('--random-order', dest='RANDOM_ORDER', default=False,
+                  action="store_true", help="Run testsuites in random order")
 
 def configure(conf):
     conf.env.SELFTEST_PREFIX = Options.options.SELFTEST_PREFIX
@@ -134,6 +136,8 @@ def cmd_testonly(opt):
         env.OPTIONS += ' --socket-wrapper-pcap'
     if Options.options.SOCKET_WRAPPER_KEEP_PCAP:
         env.OPTIONS += ' --socket-wrapper-keep-pcap'
+    if Options.options.RANDOM_ORDER:
+        env.OPTIONS += ' --random-order'
     if os.environ.get('RUN_FROM_BUILD_FARM') is not None:
         env.FILTER_OPTIONS = '${FILTER_XFAIL} --strip-passed-output'
     else: