示例#1
0
def test_report_item_doubling(local_config):
    """Test that, when we add the same data to the report items twice, we get two copies."""
    manager = StateManager(local_config)
    manager.add_report_item(6, 'default', {'keyval': 42})
    manager.add_report_item(6, 'default', {'keyval': 42})
    returned_list = manager.get_current_report_items(6, 'default')
    assert returned_list == [{'keyval': 42}, {'keyval': 42}]
示例#2
0
def test_empty_database_retrieval(local_config):
    """Tests the two retrieval APIs on an empty database."""
    manager = StateManager(local_config)
    return_list = manager.get_unfinished_hashes('default')
    assert return_list == []
    return_list = manager.get_previous_hashes('default')
    assert return_list == []
def test_any_reports_present_yes(config):
    """Does _any_reports_present return True correctly?"""
    state_manager = StateManager(config)
    state_manager.add_report_item(6, ENGINE_NAME, {'keyval': 1})
    sut = AnalysisUtility(None)
    sut.config = config
    assert sut._any_reports_present(state_manager)
def test_clear_report_items(local_config):
    """Test the clear_report_items() API."""
    manager = StateManager(local_config)
    manager.clear_report_items(6, 'default')
    assert getattr(manager._persistor, "_sc", 0) == 0
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 0
    assert getattr(manager._persistor, "_p", 0) == 0
    assert getattr(manager._persistor, "_ari", 0) == 0
    assert getattr(manager._persistor, "_gcri", 0) == 0
    assert getattr(manager._persistor, "_cri", 0) == 1
def test_add_report_item(local_config):
    """Test the add_report_item() API."""
    manager = StateManager(local_config)
    manager.add_report_item(6, 'default', {'file_name': 'blort.exe'})
    assert getattr(manager._persistor, "_sc", 0) == 0
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 0
    assert getattr(manager._persistor, "_p", 0) == 0
    assert getattr(manager._persistor, "_ari", 0) == 1
    assert getattr(manager._persistor, "_gcri", 0) == 0
    assert getattr(manager._persistor, "_cri", 0) == 0
def test_prune(local_config):
    """Test the prune() API."""
    manager = StateManager(local_config)
    manager.prune("2020-01-01T00:00:00")
    assert getattr(manager._persistor, "_sc", 0) == 0
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 0
    assert getattr(manager._persistor, "_p", 0) == 1
    assert getattr(manager._persistor, "_ari", 0) == 0
    assert getattr(manager._persistor, "_gcri", 0) == 0
    assert getattr(manager._persistor, "_cri", 0) == 0
def test_set_checkpoint(local_config):
    """Test the set_checkpoint() API."""
    manager = StateManager(local_config)
    manager.set_checkpoint("148429-4", "default", "DONE")
    assert getattr(manager._persistor, "_sc", 0) == 1
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 0
    assert getattr(manager._persistor, "_p", 0) == 0
    assert getattr(manager._persistor, "_ari", 0) == 0
    assert getattr(manager._persistor, "_gcri", 0) == 0
    assert getattr(manager._persistor, "_cri", 0) == 0
def test_get_unfinished_hashes(local_config):
    """Test the get_unfinished_hashes() API."""
    manager = StateManager(local_config)
    return_list = manager.get_unfinished_hashes("default")
    assert len(return_list) == 2
    assert getattr(manager._persistor, "_sc", 0) == 0
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 1
    assert getattr(manager._persistor, "_p", 0) == 0
    assert getattr(manager._persistor, "_ari", 0) == 0
    assert getattr(manager._persistor, "_gcri", 0) == 0
    assert getattr(manager._persistor, "_cri", 0) == 0
def test_get_current_report_items(local_config):
    """Test the get_current_report_items() API."""
    manager = StateManager(local_config)
    items = manager.get_current_report_items(6, 'default')
    assert len(items) == 2
    assert getattr(manager._persistor, "_sc", 0) == 0
    assert getattr(manager._persistor, "_gph", 0) == 0
    assert getattr(manager._persistor, "_guh", 0) == 0
    assert getattr(manager._persistor, "_p", 0) == 0
    assert getattr(manager._persistor, "_ari", 0) == 0
    assert getattr(manager._persistor, "_gcri", 0) == 1
    assert getattr(manager._persistor, "_cri", 0) == 0
示例#10
0
def test_update_existing_hash(local_config):
    """Tests updating an exising hash in the database, and how it affects the retrieval APIs."""
    manager = StateManager(local_config)
    manager.set_checkpoint('ABCDEFGH', 'default', 'ALPHA')
    return_list = manager.get_unfinished_hashes('default')
    assert return_list == [('ABCDEFGH', 'ALPHA')]
    return_list = manager.get_previous_hashes('default')
    assert return_list == []
    manager.set_checkpoint('ABCDEFGH', 'default', 'DONE')
    return_list = manager.get_unfinished_hashes('default')
    assert return_list == []
    return_list = manager.get_previous_hashes('default')
    assert return_list == ['ABCDEFGH']
示例#11
0
def test_prune(local_config):
    """Tests the prune() functionality."""
    manager = StateManager(local_config)
    manager.set_checkpoint('DEFGHIJK', 'default', 'DONE', '2020-01-15T12:00:00')
    manager.set_checkpoint('ABCDEFGH', 'default', 'DONE', '2020-01-10T12:00:00')
    manager.set_checkpoint('MNOPQRST', 'default', 'DONE', '2020-01-15T12:00:00')
    manager.set_checkpoint('JKLMNOPQ', 'default', 'DONE', '2020-01-10T14:00:00')
    manager.prune("2020-01-12T00:00:00")
    return_list = manager.get_previous_hashes('default')
    assert return_list == ['DEFGHIJK', 'MNOPQRST']
示例#12
0
def test_add_mixed_hashes(local_config):
    """Tests adding both done and not-done hashes to make sure they're separated properly."""
    manager = StateManager(local_config)
    manager.set_checkpoint('ABCDEFGH', 'default', 'ALPHA')
    manager.set_checkpoint('DEFGHIJK', 'default', 'DONE')
    return_list = manager.get_unfinished_hashes('default')
    assert return_list == [('ABCDEFGH', 'ALPHA')]
    return_list = manager.get_previous_hashes('default')
    assert return_list == ['DEFGHIJK']
示例#13
0
def test_add_finished_hashes(local_config):
    """Tests adding hashes that are finished and getting them with get_previous_hashes()."""
    manager = StateManager(local_config)
    manager.set_checkpoint('DEFGHIJK', 'default', 'DONE')
    manager.set_checkpoint('ABCDEFGH', 'default', 'DONE')
    manager.set_checkpoint('MNOPQRST', 'default', 'DONE')
    manager.set_checkpoint('ABCDEFGH', 'another', 'DONE')
    return_list = manager.get_previous_hashes('default')
    assert return_list == ['ABCDEFGH', 'DEFGHIJK', 'MNOPQRST']
    return_list = manager.get_previous_hashes('another')
    assert return_list == ['ABCDEFGH']
def test_config_without_provider_set():
    """Test the configuration without having a provider class set."""
    cfg = Config.load("""
    id: cbc_binary_toolkit
    version: 0.0.1
    database:
      is_test: "True"
    """)
    with pytest.raises(KeyError):
        StateManager(cfg)
def test_config_with_bogus_class():
    """Test the configuration while trying to load a bogus class."""
    cfg = Config.load("""
    id: cbc_binary_toolkit
    version: 0.0.1
    database:
      _provider: not_exist_package.NotExist
      is_test: "True"
    """)
    with pytest.raises(ImportError):
        StateManager(cfg)
示例#16
0
def test_add_unfinished_hashes(local_config):
    """Tests adding hashes that are unfinished and getting them with get_unfinished_hashes()."""
    manager = StateManager(local_config)
    manager.set_checkpoint('ABCDEFGH', 'default', 'ALPHA')
    manager.set_checkpoint('EFGHIJKL', 'default', 'BRAVO')
    manager.set_checkpoint('ABCDEFGH', 'another', 'CHARLIE')
    return_list = manager.get_unfinished_hashes('default')
    assert len(return_list) == 2
    tmp = _unfinished_as_map(return_list)
    assert tmp['ABCDEFGH'] == 'ALPHA'
    assert tmp['EFGHIJKL'] == 'BRAVO'
    return_list = manager.get_unfinished_hashes('another')
    assert len(return_list) == 1
    tmp = _unfinished_as_map(return_list)
    assert tmp['ABCDEFGH'] == 'CHARLIE'
def test_any_reports_present_no(config):
    """Does _any_reports_present return False correctly?"""
    state_manager = StateManager(config)
    sut = AnalysisUtility(None)
    sut.config = config
    assert not sut._any_reports_present(state_manager)
示例#18
0
def test_add_report_item_persistent(local_persistent_config):
    """Tests that add_report_item actually adds stuff to the database file on disk."""
    if os.path.exists(PERSISTENCE_FILE):
        os.remove(PERSISTENCE_FILE)
    manager = StateManager(local_persistent_config)
    manager.add_report_item(6, 'default', {'keyval': 1})
    manager.add_report_item(6, 'default', {'keyval': 4})
    manager.add_report_item(6, 'default', {'keyval': 9})
    manager.add_report_item(2, 'default', {'keyval': 2})
    manager.add_report_item(2, 'default', {'keyval': 3})
    manager.force_close()
    manager2 = StateManager(local_persistent_config)
    _test_check_report_items(manager2.get_current_report_items(6, 'default'), 'keyval', [1, 4, 9])
    _test_check_report_items(manager2.get_current_report_items(2, 'default'), 'keyval', [2, 3])
    _test_check_report_items(manager2.get_current_report_items(9, 'default'), 'keyval', [])
示例#19
0
def test_set_checkpoint_persistent(local_persistent_config):
    """Tests that set_checkpoint actually adds stuff to the database file on disk."""
    if os.path.exists(PERSISTENCE_FILE):
        os.remove(PERSISTENCE_FILE)
    manager = StateManager(local_persistent_config)
    manager.set_checkpoint('ABCDEFGH', 'default', 'ALPHA')
    manager.set_checkpoint('EFGHIJKL', 'default', 'BRAVO')
    manager.set_checkpoint('ABCDEFGH', 'another', 'CHARLIE')
    manager.force_close()
    manager2 = StateManager(local_persistent_config)
    return_list = manager2.get_unfinished_hashes('default')
    assert len(return_list) == 2
    return_list = manager2.get_unfinished_hashes('another')
    assert len(return_list) == 1
示例#20
0
def test_exception_handling(local_config):
    """Tests that OperationalError is handled by all methods without throwing an exception."""
    manager = StateManager(local_config)
    manager._persistor._cursor_factory = BreakingCursor
    manager.set_checkpoint('ABCDEFGH', 'default', 'ALPHA')
    assert manager.get_previous_hashes('default') == []
    manager.prune("2020-01-12T00:00:00")
    manager.add_report_item(6, 'default', {'keyval': 1})
    assert manager.get_current_report_items(6, 'default') == []
    manager.clear_report_items(6, 'default')
示例#21
0
def test_report_items_nodata(local_config):
    """Tests the extraction of report items when there are none in the database."""
    manager = StateManager(local_config)
    items = manager.get_current_report_items(6, 'default')
    assert len(items) == 0
示例#22
0
def test_report_items(local_config):
    """Tests the management of report items."""
    manager = StateManager(local_config)
    manager.add_report_item(6, 'default', {'keyval': 1})
    manager.add_report_item(6, 'default', {'keyval': 4})
    manager.add_report_item(6, 'default', {'keyval': 9})
    manager.add_report_item(2, 'default', {'keyval': 2})
    manager.add_report_item(2, 'default', {'keyval': 3})
    _test_check_report_items(manager.get_current_report_items(6, 'default'), 'keyval', [1, 4, 9])
    _test_check_report_items(manager.get_current_report_items(2, 'default'), 'keyval', [2, 3])
    _test_check_report_items(manager.get_current_report_items(9, 'default'), 'keyval', [])
    manager.clear_report_items(6, 'default')
    _test_check_report_items(manager.get_current_report_items(6, 'default'), 'keyval', [])
    _test_check_report_items(manager.get_current_report_items(2, 'default'), 'keyval', [2, 3])
    _test_check_report_items(manager.get_current_report_items(9, 'default'), 'keyval', [])