def test_delay_controlled_random(self): for expected_result, delays in self.TEST_SUITE: urllib = ExtendedUrllib() side_effect = generate_delays(delays, rand_range=(0, 2)) urllib.send_mutant = MagicMock(side_effect=side_effect) delay_obj = ExactDelay('sleep(%s)') url = URL('http://moth/?id=1') req = FuzzableRequest(url) mutant = QSMutant(req) mutant.set_dc(url.querystring) mutant.set_token(('id', 0)) ed = ExactDelayController(mutant, delay_obj, urllib) controlled, responses = ed.delay_is_controlled() # This is where we change from test_delay_controlled, the basic # idea is that we'll allow false negatives but no false positives if expected_result: expected_result = [True, False] else: expected_result = [False] self.assertIn(controlled, expected_result, delays)
def test_delay_controlled(self): for expected_result, delays in self.TEST_SUITE: mock_uri_opener = Mock() side_effect = generate_delays(delays) mock_uri_opener.send_mutant = MagicMock(side_effect=side_effect) delay_obj = AproxDelay('%s9!', '1', 10) url = URL('http://moth/?id=1') req = FuzzableRequest(url) mutant = QSMutant(req) mutant.set_dc(url.querystring) mutant.set_token(('id', 0)) ed = AproxDelayController(mutant, delay_obj, mock_uri_opener) controlled, responses = ed.delay_is_controlled() self.assertEqual(expected_result, controlled, delays)
def test_delay_controlled(self): for expected_result, delays in self.TEST_SUITE: urllib = ExtendedUrllib() side_effect = generate_delays(delays) urllib.send_mutant = MagicMock(side_effect=side_effect) delay_obj = ExactDelay('sleep(%s)') url = URL('http://moth/?id=1') req = FuzzableRequest(url) mutant = QSMutant(req) mutant.set_dc(url.querystring) mutant.set_token(('id', 0)) ed = ExactDelayController(mutant, delay_obj, urllib) controlled, responses = ed.delay_is_controlled() self.assertEqual(expected_result, controlled, delays)