def test_delete_node(self, grpc_server, node_id, expected): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node() # then with client.context_connect(): response = client.delete_node(session.id, node_id) # then assert response.result is expected if expected is True: with pytest.raises(CoreError): assert session.get_node(node.id)
def test_set_service_defaults(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node_type = "test" services = ["SSH"] # then with client.context_connect(): response = client.set_service_defaults(session.id, {node_type: services}) # then assert response.result is True assert session.services.default_services[node_type] == services
def test_get_node_links(self, grpc_server, ip_prefixes): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() switch = session.add_node(_type=NodeTypes.SWITCH) node = session.add_node() interface = ip_prefixes.create_interface(node) session.add_link(node.id, switch.id, interface) # then with client.context_connect(): response = client.get_node_links(session.id, switch.id) # then assert len(response.links) == 1
def test_add_hook(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() # then file_name = "test" file_data = "echo hello" with client.context_connect(): response = client.add_hook(session.id, core_pb2.SessionState.RUNTIME, file_name, file_data) # then assert response.result is True
def test_get_node_terminal(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() session.set_state(EventTypes.CONFIGURATION_STATE) options = NodeOptions(model="Host") node = session.add_node(options=options) session.instantiate() # then with client.context_connect(): response = client.get_node_terminal(session.id, node.id) # then assert response.terminal is not None
def test_get_session(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() session.add_node() session.set_state(EventTypes.DEFINITION_STATE) # then with client.context_connect(): response = client.get_session(session.id) # then assert response.session.state == core_pb2.SessionState.DEFINITION assert len(response.session.nodes) == 1 assert len(response.session.links) == 0
def test_set_mobility_config(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() wlan = session.add_node(_type=NodeTypes.WIRELESS_LAN) config_key = "refresh_ms" config_value = "60" # then with client.context_connect(): response = client.set_mobility_config(session.id, wlan.id, {config_key: config_value}) # then assert response.result is True config = session.mobility.get_model_config(wlan.id, Ns2ScriptedMobility.name) assert config[config_key] == config_value
def test_set_wlan_config(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() wlan = session.add_node(_type=NodeTypes.WIRELESS_LAN) range_key = "range" range_value = "300" # then with client.context_connect(): response = client.set_wlan_config(session.id, wlan.id, {range_key: range_value}) # then assert response.result is True config = session.mobility.get_model_config(wlan.id, BasicRangeModel.name) assert config[range_key] == range_value
def test_mobility_action(self, grpc_server: CoreGrpcServer): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() wlan = session.add_node(WlanNode) session.mobility.set_model_config(wlan.id, Ns2ScriptedMobility.name, {}) session.instantiate() # then with client.context_connect(): result = client.mobility_action(session.id, wlan.id, MobilityAction.STOP) # then assert result is True
def test_move_node_geo(self, grpc_server: CoreGrpcServer): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node(CoreNode) geo = Geo(lon=0.0, lat=0.0, alt=0.0) # then with client.context_connect(): result = client.move_node(session.id, node.id, geo=geo) # then assert result is True assert node.position.lon == geo.lon assert node.position.lat == geo.lat assert node.position.alt == geo.alt
def test_create_session(self, grpc_server: CoreGrpcServer, session_id: Optional[int]): # given client = CoreGrpcClient() # when with client.context_connect(): created_session = client.create_session(session_id) # then assert isinstance(created_session, wrappers.Session) session = grpc_server.coreemu.sessions.get(created_session.id) assert session is not None if session_id is not None: assert created_session.id == session_id assert session.id == session_id
def test_set_node_service(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node() service_name = "DefaultRoute" validate = ["echo hello"] # then with client.context_connect(): response = client.set_node_service(session.id, node.id, service_name, [], validate, []) # then assert response.result is True service = session.services.get_service(node.id, service_name, default_service=True) assert service.validate == tuple(validate)
def test_throughputs(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() queue = Queue() def handle_event(event_data): queue.put(event_data) # then with client.context_connect(): client.throughputs(handle_event) time.sleep(0.1) # then queue.get(timeout=5)
def test_edit_node(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node() # then x, y = 10, 10 with client.context_connect(): position = core_pb2.Position(x=x, y=y) response = client.edit_node(session.id, node.id, position) # then assert response.result is True assert node.position.x == x assert node.position.y == y
def test_add_link(self, grpc_server: CoreGrpcServer, iface_helper: InterfaceHelper): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() switch = session.add_node(SwitchNode) node = session.add_node(CoreNode) assert len(switch.links()) == 0 # then iface = iface_helper.create_iface(node.id, 0) with client.context_connect(): response = client.add_link(session.id, node.id, switch.id, iface) # then assert response.result is True assert len(switch.links()) == 1
def test_set_session_options(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() # then option = "enablerj45" value = "1" with client.context_connect(): response = client.set_session_options(session.id, {option: value}) # then assert response.result is True assert session.options.get_config(option) == value config = session.options.get_configs() assert len(config) > 0
def test_mobility_action(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() wlan = session.add_node(_type=NodeTypes.WIRELESS_LAN) session.mobility.set_model_config(wlan.id, Ns2ScriptedMobility.name, {}) session.instantiate() # then with client.context_connect(): response = client.mobility_action(session.id, wlan.id, core_pb2.MobilityAction.STOP) # then assert response.result is True
def test_get_emane_model_config(self, grpc_server: CoreGrpcServer): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() session.set_location(47.57917, -122.13232, 2.00000, 1.0) options = NodeOptions(emane=EmaneIeee80211abgModel.name) emane_network = session.add_node(EmaneNet, options=options) session.emane.set_model(emane_network, EmaneIeee80211abgModel) # then with client.context_connect(): response = client.get_emane_model_config( session.id, emane_network.id, EmaneIeee80211abgModel.name) # then assert len(response.config) > 0
def test_delete_session( self, grpc_server: CoreGrpcServer, session_id: Optional[int], expected: bool ): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() if session_id is None: session_id = session.id # then with client.context_connect(): response = client.delete_session(session_id) # then assert response.result is expected assert grpc_server.coreemu.sessions.get(session_id) is None
def test_get_emane_model_config(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() emane_network = session.create_emane_network( model=EmaneIeee80211abgModel, geo_reference=(47.57917, -122.13232, 2.00000) ) # then with client.context_connect(): response = client.get_emane_model_config( session.id, emane_network.id, EmaneIeee80211abgModel.name ) # then assert len(response.groups) > 0
def test_set_emane_config(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() config_key = "platform_id_start" config_value = "2" # then with client.context_connect(): response = client.set_emane_config(session.id, {config_key: config_value}) # then assert response.result is True config = session.emane.get_configs() assert len(config) > 1 assert config[config_key] == config_value
def test_add_link(self, grpc_server, interface_helper): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() switch = session.add_node(_type=NodeTypes.SWITCH) node = session.add_node() assert len(switch.all_link_data(0)) == 0 # then interface = interface_helper.create_interface(node.id, 0) with client.context_connect(): response = client.add_link(session.id, node.id, switch.id, interface) # then assert response.result is True assert len(switch.all_link_data(0)) == 1
def test_get_mobility_configs(self, grpc_server: CoreGrpcServer): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() wlan = session.add_node(WlanNode) session.mobility.set_model_config(wlan.id, Ns2ScriptedMobility.name, {}) # then with client.context_connect(): response = client.get_mobility_configs(session.id) # then assert len(response.configs) > 0 assert wlan.id in response.configs mapped_config = response.configs[wlan.id] assert len(mapped_config.config) > 0
def test_set_node_service_file(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node() service_name = "DefaultRoute" file_name = "defaultroute.sh" file_data = "echo hello" # then with client.context_connect(): response = client.set_node_service_file(session.id, node.id, service_name, file_name, file_data) # then assert response.result is True service_file = session.services.get_service_file(node, service_name, file_name) assert service_file.data == file_data
def test_get_sessions(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() # then with client.context_connect(): response = client.get_sessions() # then found_session = None for current_session in response.sessions: if current_session.id == session.id: found_session = current_session break assert len(response.sessions) == 1 assert found_session is not None
def test_node_command(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() session.set_state(EventTypes.CONFIGURATION_STATE) node_options = NodeOptions(model="Host") node = session.add_node(node_options=node_options) session.instantiate() output = "hello world" # then command = "echo %s" % output with client.context_connect(): response = client.node_command(session.id, node.id, command) # then assert response.output == output
def test_create_session(self, grpc_server, session_id): # given client = CoreGrpcClient() # when with client.context_connect(): response = client.create_session(session_id) # then assert isinstance(response.session_id, int) assert isinstance(response.state, int) session = grpc_server.coreemu.sessions.get(response.session_id) assert session is not None assert session.state == response.state if session_id is not None: assert response.session_id == session_id assert session.id == session_id
def test_get_session_location(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() # then with client.context_connect(): response = client.get_session_location(session.id) # then assert response.scale == 1.0 assert response.position.x == 0 assert response.position.y == 0 assert response.position.z == 0 assert response.position.lat == 0 assert response.position.lon == 0 assert response.position.alt == 0
def test_get_node_service_configs(self, grpc_server): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node() service_name = "DefaultRoute" session.services.set_service(node.id, service_name) # then with client.context_connect(): response = client.get_node_service_configs(session.id) # then assert len(response.configs) == 1 service_config = response.configs[0] assert service_config.node_id == node.id assert service_config.service == service_name
def test_move_nodes(self, grpc_server: CoreGrpcServer): # given client = CoreGrpcClient() session = grpc_server.coreemu.create_session() node = session.add_node(CoreNode) x, y = 10.0, 15.0 streamer = MoveNodesStreamer(session.id) streamer.send_position(node.id, x, y) streamer.stop() # then with client.context_connect(): client.move_nodes(streamer) # assert assert node.position.x == x assert node.position.y == y