def test_dummy_exception(self, mock_interruptable_sleep): scenario = dummy.Dummy(test.get_test_context()) size_of_message = 5 self.assertRaises(dummy.DummyScenarioException, scenario.dummy_exception, size_of_message, sleep=10) mock_interruptable_sleep.assert_called_once_with(10)
def test_dummy_dummy_with_scenario_output(self): scenario = dummy.Dummy(test.get_test_context()) result = scenario.dummy_with_scenario_output() self.assertEqual(result["errors"], "") # Since the data is generated in random, # checking for not None self.assertIsNotNone(result["data"])
def test_dummy(self, mock_sleep): scenario = dummy.Dummy(test.get_test_context()) scenario.sleep_between = mock.MagicMock() scenario.dummy() self.assertFalse(mock_sleep.sleep.called) scenario.dummy(sleep=10) mock_sleep.assert_called_once_with(10)
def test_dummy_timed_atomic_actions(self, mock_interruptable_sleep, number_of_actions, sleep_factor): scenario = dummy.Dummy(test.get_test_context()) scenario.dummy_random_action(number_of_actions, sleep_factor) scenario.dummy_timed_atomic_actions(number_of_actions, sleep_factor) for i in range(number_of_actions): self._test_atomic_action_timer(scenario.atomic_actions(), "action_%d" % i) mock_interruptable_sleep.assert_any_call(i * sleep_factor)
def test_dummy_random_fail_in_atomic(self): scenario = dummy.Dummy(test.get_test_context()) for i in range(10): scenario.dummy_random_fail_in_atomic(exception_probability=0) for i in range(10): self.assertRaises(KeyError, scenario.dummy_random_fail_in_atomic, exception_probability=1)
def test_dummy_exception_probability(self): scenario = dummy.Dummy(test.get_test_context()) # should not raise an exception as probability is 0 for i in range(100): scenario.dummy_exception_probability(exception_probability=0) # should always raise an exception as probability is 1 for i in range(100): self.assertRaises(dummy.DummyScenarioException, scenario.dummy_exception_probability, exception_probability=1)
def test_dummy_output(self, mock_random): mock_random.randint.side_effect = lambda min_, max_: max_ desc = "This is a description text for %s" for random_range, exp in (None, 25), (1, 1), (42, 42): scenario = dummy.Dummy(test.get_test_context()) if random_range is None: scenario.dummy_output() else: scenario.dummy_output(random_range=random_range) expected = { "additive": [ {"chart_plugin": "StatsTable", "data": [[s + " stat", exp] for s in ("foo", "bar", "spam")], "title": "Additive Stat Table", "description": desc % "Additive Stat Table"}, {"chart_plugin": "StackedArea", "data": [["foo 1", exp], ["foo 2", exp]], "title": "Additive Foo StackedArea", "description": desc % "Additive Foo StackedArea"}, {"chart_plugin": "StackedArea", "data": [["bar %d" % i, exp] for i in range(1, 7)], "title": "Additive Bar StackedArea (no description)", "description": ""}, {"chart_plugin": "Pie", "data": [["spam %d" % i, exp] for i in range(1, 4)], "title": "Additive Spam Pie", "description": desc % "Additive Spam Pie"}], "complete": [ {"data": [["alpha", [[i, exp] for i in range(30)]], ["beta", [[i, exp] for i in range(30)]], ["gamma", [[i, exp] for i in range(30)]]], "title": "Complete StackedArea", "description": desc % "Complete StackedArea", "chart_plugin": "StackedArea"}, {"data": [["delta", exp], ["epsilon", exp], ["zeta", exp], ["theta", exp], ["lambda", exp], ["omega", exp]], "title": "Complete Pie (no description)", "description": "", "chart_plugin": "Pie"}, {"data": { "cols": ["mu column", "xi column", "pi column", "tau column", "chi column"], "rows": [ [r + " row", exp, exp, exp, exp] for r in ("iota", "nu", "rho", "phi", "psi")]}, "title": "Complete Table", "description": desc % "Complete Table", "chart_plugin": "Table"}]} self.assertEqual(expected, scenario._output)
def test_dummy_random_action(self, mock_interruptable_sleep, mock_random, **kwargs): mock_random.uniform.side_effect = range(100) scenario = dummy.Dummy(test.get_test_context()) scenario.dummy_random_action(**kwargs) actions_num = kwargs.get("actions_num", 5) calls = [mock.call(i) for i in range(actions_num)] self.assertEqual(calls, mock_interruptable_sleep.mock_calls) calls = [mock.call(kwargs.get("sleep_min", 0), kwargs.get("sleep_max", 2)) for i in range(actions_num)] self.assertEqual(calls, mock_random.uniform.mock_calls) for i in range(actions_num): self._test_atomic_action_timer(scenario.atomic_actions(), "action_%d" % i)
def test_dummy_output(self, mock_random): mock_random.randint.side_effect = lambda min_, max_: max_ desc = "This is a description text for %s" for random_range, exp in (None, 25), (1, 1), (42, 42): scenario = dummy.Dummy(test.get_test_context()) if random_range is None: scenario.dummy_output() else: scenario.dummy_output(random_range=random_range) expected = { "additive": [ {"chart_plugin": "StatsTable", "data": [["%s stat" % s, exp] for s in ("foo", "bar", "spam")], "description": desc % "Additive StatsTable", "title": "Additive StatsTable"}, {"chart_plugin": "StackedArea", "data": [["foo %i" % i, exp] for i in range(1, 7)], "label": "Measure this in Foo units", "title": "Additive StackedArea (no description)"}, {"chart_plugin": "Lines", "data": [["bar %i" % i, exp] for i in range(1, 4)], "description": desc % "Additive Lines", "label": "Measure this in Bar units", "title": "Additive Lines"}, {"chart_plugin": "Pie", "data": [["spam %i" % i, exp] for i in range(1, 4)], "description": desc % "Additive Pie", "title": "Additive Pie"}], "complete": [ {"axis_label": "This is a custom X-axis label", "chart_plugin": "Lines", "data": [["Foo", [[i, exp] for i in range(1, 8)]], ["Bar", [[i, exp] for i in range(1, 8)]], ["Spam", [[i, exp] for i in range(1, 8)]]], "description": desc % "Complete Lines", "label": "Measure this is some units", "title": "Complete Lines"}, {"axis_label": "This is a custom X-axis label", "chart_plugin": "StackedArea", "data": [["alpha", [[i, exp] for i in range(50)]], ["beta", [[i, exp] for i in range(50)]], ["gamma", [[i, exp] for i in range(50)]]], "description": desc % "Complete StackedArea", "label": "Yet another measurement units", "title": "Complete StackedArea"}, {"chart_plugin": "Pie", "data": [[s, exp] for s in ("delta", "epsilon", "zeta", "theta", "lambda", "omega")], "title": "Complete Pie (no description)"}, {"chart_plugin": "Table", "data": {"cols": ["%s column" % s for s in ("mu", "xi", "pi", "tau", "chi")], "rows": [["%s row" % s, exp, exp, exp, exp] for s in ("iota", "nu", "rho", "phi", "psi")]}, "description": desc % "Complete Table", "title": "Complete Table"}]} self.assertEqual(expected, scenario._output)
def test_dummy(self, mock_interruptable_sleep): scenario = dummy.Dummy(test.get_test_context()) scenario.sleep_between = mock.MagicMock() scenario.dummy(sleep=10) mock_interruptable_sleep.assert_called_once_with(10)
def test_is_scenario_non_existing(self): scenario = dummy.Dummy() self.assertFalse(base.Scenario.is_scenario(scenario, "non_existing"))
def test_is_scenario_not_scenario(self): scenario = dummy.Dummy() self.assertFalse( base.Scenario.is_scenario(scenario, "_random_fail_emitter"))
def test_is_scenario_success(self): scenario = dummy.Dummy() self.assertTrue(base.Scenario.is_scenario(scenario, "dummy"))
def test_is_scenario_non_existing(self): self.assertFalse( scenario.Scenario.is_scenario(dummy.Dummy(), "non_existing"))
def test_is_scenario_not_scenario(self): self.assertFalse( scenario.Scenario.is_scenario(dummy.Dummy(), "_random_fail_emitter"))
def test_is_scenario_success(self): self.assertTrue(scenario.Scenario.is_scenario(dummy.Dummy(), "dummy"))