ldb: Free memory when repacking database
[garming/samba-autobuild/.git] / script / traffic_replay
index fab9a8ded2631e97354638ddababce392e5b1d37..d29f0a9839c05fd000a1d1c33e6f715c7e7981f4 100755 (executable)
@@ -50,6 +50,8 @@ def main():
 
     parser.add_option('--dns-rate', type='float', default=0,
                       help='fire extra DNS packets at this rate')
+    parser.add_option('--dns-query-file', dest="dns_query_file",
+                      help='A file contains DNS query list')
     parser.add_option('-B', '--badpassword-frequency',
                       type='float', default=0.0,
                       help='frequency of connections with bad passwords')
@@ -114,7 +116,7 @@ def main():
                               'the traffic')
     user_gen_group.add_option('-n', '--number-of-users', type='int', default=0,
                               help='Total number of test users to create')
-    user_gen_group.add_option('--number-of-groups', type='int', default=0,
+    user_gen_group.add_option('--number-of-groups', type='int', default=None,
                               help='Create this many groups')
     user_gen_group.add_option('--average-groups-per-user',
                               type='int', default=0,
@@ -235,6 +237,10 @@ def main():
                      "are incompatible. Use one or the other.")
         sys.exit(1)
 
+    if not opts.scale_traffic and not opts.packets_per_second:
+        logger.info("No packet rate specified. Using --scale-traffic=1.0")
+        opts.scale_traffic = 1.0
+
     if opts.timing_data not in ('-', None):
         try:
             open(opts.timing_data, 'w').close()
@@ -301,6 +307,10 @@ def main():
         sys.exit(1)
 
     number_of_users = max(opts.number_of_users, len(conversations))
+
+    if opts.number_of_groups is None:
+        opts.number_of_groups = max(int(number_of_users / 10), 1)
+
     max_memberships = number_of_users * opts.number_of_groups
 
     if not opts.group_memberships and opts.average_groups_per_user:
@@ -317,6 +327,11 @@ def main():
                          opts.number_of_groups)))
         sys.exit(1)
 
+    # if no groups were specified by the user, then make sure we create some
+    # group memberships (otherwise it's not really a fair test)
+    if not opts.group_memberships and not opts.average_groups_per_user:
+        opts.group_memberships = min(number_of_users * 5, max_memberships)
+
     # Get an LDB connection.
     try:
         # if we're only adding users, then it's OK to pass a sam.ldb filepath
@@ -390,6 +405,7 @@ def main():
                    creds=creds,
                    accounts=accounts,
                    dns_rate=opts.dns_rate,
+                   dns_query_file=opts.dns_query_file,
                    duration=opts.duration,
                    latency_timeout=opts.latency_timeout,
                    badpassword_frequency=opts.badpassword_frequency,
@@ -400,7 +416,8 @@ def main():
                    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())
+                   domain_sid=ldb.get_domain_sid(),
+                   instance_id=opts.instance_id)
 
     if opts.timing_data == '-':
         timing_dest = sys.stdout