Source code for tests.integration_tests.test_network_interface

import pytest


[docs]@pytest.mark.integration_test @pytest.mark.skip( reason="Needs to be dropped and replaced with multiple separate tests " "for each action." ) def test_network_interface(create_yawning_titan_run): """ Test the network interface class and associated methods work as intended. .. todo:: Needs to be dropped and replaced with multiple separate tests for each action. """ yt_run = create_yawning_titan_run( game_mode_name="everything_guaranteed", network_name="mesh_18" ) env = yt_run.env for node in env.network_interface.current_graph.nodes: node = env.network_interface.current_graph.get_node_from_uuid( node.uuid ) # reset node reference as network graph has been reset node_name_lookup = env.network_interface.current_graph.get_nodes( key_by_name=True ) assert env.network_interface.adj_matrix.all() == 0 assert ( env.network_interface.current_graph.get_nodes(filter_true_compromised=True) == [] ) assert set( env.network_interface.current_graph.get_nodes(filter_true_safe=True) ) == set(env.network_interface.current_graph.get_nodes()) env.network_interface.attack_node(node=node, skill=0.5, guarantee=True) assert node.true_compromised_status == 1 assert ( sum(env.network_interface.get_all_node_compromised_states().values()) == 1 ) assert ( sum( env.network_interface.get_all_node_blue_view_compromised_states().values() ) == 1 ) assert env.network_interface.current_graph.get_nodes( filter_true_compromised=True ) == [node] assert env.network_interface.current_graph.get_nodes( filter_blue_view_compromised=True ) == [node] node.vulnerability_score = 2 assert node.vulnerability_score == 2 node.reset_vulnerability() target_nodes = [node_name_lookup[name] for name in ["2", "3", "9"]] env.network_interface.update_stored_attacks( [node, node, node_name_lookup["5"]], target_nodes, [True, False, True] ) assert env.network_interface.true_attacks == [ [node, node_name_lookup["2"]], [node, node_name_lookup["3"]], [node_name_lookup["5"], node_name_lookup["9"]], ] observation_size = env.calculate_observation_space_size(with_feather=False) # assert the observation space is the correct size assert env.network_interface.get_observation_size() == observation_size env.network_interface.reset_stored_attacks() assert env.network_interface.true_attacks == [] assert env.network_interface.detected_attacks == [] env.network_interface.isolate_node(node) assert env.network_interface.current_graph.get_nodes(filter_isolated=True) == [ node ] assert env.network_interface.current_graph.get_nodes( filter_isolated=True, filter_true_compromised=True ) == [node] env.network_interface.reconnect_node(node) assert env.network_interface.current_graph.get_nodes(filter_isolated=True) == [] env.network_interface.make_node_safe(node) assert ( env.network_interface.current_graph.get_nodes(filter_true_compromised=True) == [] ) assert ( env.network_interface.current_graph.get_nodes( filter_blue_view_compromised=True ) == [] ) env.reset()