Beispiel #1
0
    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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
 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)