traffic_replay: --stop-on-any-error option to not ignore client trouble
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Fri, 19 Oct 2018 03:27:17 +0000 (16:27 +1300)
committerDouglas Bagnall <dbagnall@samba.org>
Tue, 8 Jan 2019 22:55:33 +0000 (23:55 +0100)
Sometimes you want to know if any client is crashing for any reason.
In those times use --stop-on-any-error for an early exit.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/emulate/traffic.py
script/traffic_replay

index 553ce5c7406ebf4d468587f666c357d781b94aa3..87c8daf1970ee1f87096a29bbe60cf4a9420411c 100644 (file)
@@ -1534,6 +1534,7 @@ def replay(conversation_seq,
            accounts=None,
            dns_rate=0,
            duration=None,
+           stop_on_any_error=False,
            **kwargs):
 
     context = ReplayContext(server=host,
@@ -1606,6 +1607,8 @@ def replay(conversation_seq,
                     print(("process %d finished conversation %d;"
                            " %d to go" %
                            (pid, c, len(children))), file=sys.stderr)
+                if stop_on_any_error and status != 0:
+                    break
 
     except Exception:
         print("EXCEPTION in parent", file=sys.stderr)
index f9ceef5878f9cbb48b673ba2680ccb79979e0811..6a449a4dbe38d60ee5e9821a225738c9e80b57d6 100755 (executable)
@@ -72,7 +72,9 @@ def main():
                       help='Clean up the generated groups and user accounts')
     parser.add_option('--random-seed', type='int', default=None,
                       help='Use to keep randomness consistent across multiple runs')
-
+    parser.add_option('--stop-on-any-error',
+                      action="store_true",
+                      help='abort the whole thing if a child fails')
     model_group = optparse.OptionGroup(parser, 'Traffic Model Options',
                                        'These options alter the traffic '
                                        'generated by the model')
@@ -373,6 +375,7 @@ def main():
                    base_dn=ldb.domain_dn(),
                    ou=traffic.ou_name(ldb, opts.instance_id),
                    tempdir=tempdir,
+                   stop_on_any_error=opts.stop_on_any_error,
                    domain_sid=ldb.get_domain_sid())
 
     if opts.timing_data == '-':