diff options
Diffstat (limited to 'python/samba/tests/blackbox/traffic_replay.py')
-rw-r--r-- | python/samba/tests/blackbox/traffic_replay.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/python/samba/tests/blackbox/traffic_replay.py b/python/samba/tests/blackbox/traffic_replay.py new file mode 100644 index 0000000..835c248 --- /dev/null +++ b/python/samba/tests/blackbox/traffic_replay.py @@ -0,0 +1,100 @@ +# Black box tests for script/traffic_leaner +# +# Copyright (C) Catalyst IT Ltd. 2017 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Blackbox tests for traffic_replay""" + +import os +import tempfile + +from samba.tests import BlackboxTestCase + +DATA_DIR = "python/samba/tests/blackbox/testdata" +SCRIPT = "script/traffic_replay" +FIXED = "--fixed-password=trafficreplay01%" +SERVER = os.environ["SERVER"] +PASSWORD = os.environ["PASSWORD"] +USER = os.environ["USERNAME"] +CREDS = "-U%s%%%s" % (USER, PASSWORD) +MODEL = os.path.join(DATA_DIR, "traffic-sample-very-short.model") +EXPECTED_OUTPUT = os.path.join(DATA_DIR, "traffic_replay-%s.expected") + + +class TrafficLearnerTests(BlackboxTestCase): + + def tearDown(self): + options = "--clean-up" + command = "%s %s %s %s" % (SCRIPT, options, CREDS, SERVER) + self.check_run(command) + + def test_generate_users_only(self): + """Ensure the generate users only option functions correctly + """ + options = ("--generate-users-only --number-of-users 20 " + "--number-of-groups 5 --average-groups-per-user 2") + command = "%s %s %s %s %s" % ( + SCRIPT, options, FIXED, CREDS, SERVER) + self.check_run(command) + command = "%s %s %s %s %s %s" % ( + SCRIPT, MODEL, options, FIXED, CREDS, SERVER) + self.check_run(command) + + def test_summary_generation(self): + """Ensure a summary file is generated and the contents are correct""" + + for i, opts in enumerate((["--random-seed=3"], + ["--random-seed=4"], + ["--random-seed=3", + "--conversation-persistence=0.5"], + ["--random-seed=3", + "--old-scale", + "--conversation-persistence=0.95"], + )): + with self.mktemp() as output: + command = ([SCRIPT, MODEL, + "--traffic-summary", output, + "-D1", "-S0.1"] + + opts + + [FIXED, CREDS, SERVER]) + self.check_run(command) + expected = open(EXPECTED_OUTPUT % i).read() + actual = open(output).read() + self.assertStringsEqual(expected, actual) + + def test_summary_replay_no_fixed(self): + """Ensure a summary file with no fixed password fails + """ + command = [SCRIPT, MODEL, CREDS, SERVER] + self.check_exit_code(command, 1) + + def test_model_replay(self): + """Ensure a model can be replayed against a DC + """ + command = [SCRIPT, MODEL, + FIXED, + '-D2', '-S0.1', + CREDS, SERVER] + self.check_run(command) + + def test_generate_users_only_no_password(self): + """Ensure the generate users only fails if no fixed_password supplied" + """ + options = ("--generate-users-only --number-of-users 20 " + "--number-of-groups 5 --average-groups-per-user 2") + command = "%s %s %s %s" % (SCRIPT, options, CREDS, SERVER) + self.check_exit_code(command, 1) + command = "%s %s %s %s %s" % (SCRIPT, MODEL, options, CREDS, SERVER) + self.check_exit_code(command, 1) |