def test_completed_task_count(self, restore_mock): restore_mock.return_value.completed_count.return_value = 42 rule = ScannerQueryRule(state=RUNNING, celery_group_result_id=str(uuid.uuid4())) assert rule._get_completed_tasks_count() == 42 restore_mock.return_value = None assert rule._get_completed_tasks_count() is None
def test_query_rule_change_state_to_invalid(current_state, target_state): rule = ScannerQueryRule(name='some_rule', scanner=YARA) rule.state = current_state with pytest.raises(ImproperScannerQueryRuleStateError): rule.change_state_to(target_state) # Manually changing state doesn't affect 'completed' property, and since # changing through change_state_to() failed before it should always be # None in this test. assert rule.completed is None
def test_query_rule_change_state_to_valid(current_state, target_state): rule = ScannerQueryRule(name='some_rule', scanner=YARA) rule.state = current_state with freeze_time('2020-04-08 15:16:23.42') as frozen_time: rule.change_state_to(target_state) if target_state == COMPLETED: assert rule.completed == frozen_time() else: assert rule.completed is None
def test_completion_rate_not_running(self): rule = ScannerQueryRule(state=NEW, task_count=10000) assert rule.completion_rate() is None rule.state = SCHEDULED assert rule.completion_rate() is None rule.state = ABORTING assert rule.completion_rate() is None rule.state = ABORTED assert rule.completion_rate() is None
def test_completion_rate(self, _get_completed_tasks_count_mock): rule = ScannerQueryRule(state=RUNNING, task_count=10000) _get_completed_tasks_count_mock.return_value = None assert rule.completion_rate() is None _get_completed_tasks_count_mock.return_value = 0 assert rule.completion_rate() == '0.00%' _get_completed_tasks_count_mock.return_value = 1000 assert rule.completion_rate() == '10.00%' _get_completed_tasks_count_mock.return_value = 3333 assert rule.completion_rate() == '33.33%' _get_completed_tasks_count_mock.return_value = 10000 assert rule.completion_rate() == '100.00%' rule.task_count = 0 assert rule.completion_rate() is None
def test_completed_task_count_no_group_id(self): rule = ScannerQueryRule(state=RUNNING, celery_group_result_id=None) assert rule._get_completed_tasks_count() is None
def test_query_rule_change_state_to_invalid(current_state, target_state): rule = ScannerQueryRule(name='some_rule', scanner=YARA) rule.state = current_state with pytest.raises(ImproperScannerQueryRuleStateError): rule.change_state_to(target_state)
def test_query_rule_change_state_to_valid(current_state, target_state): rule = ScannerQueryRule(name='some_rule', scanner=YARA) rule.state = current_state rule.change_state_to(target_state)