def module_coretlv(patcher, global_coreemu, global_session): request_mock = MagicMock() request_mock.fileno = MagicMock(return_value=1) server = MockServer({"numthreads": "1"}, global_coreemu) request_handler = CoreHandler(request_mock, "", server) request_handler.session = global_session request_handler.add_session_handlers() yield request_handler
class CoreServerTest(object): def __init__(self, port=CORE_API_PORT): self.host = "localhost" self.port = port address = (self.host, self.port) self.server = CoreServer(address, CoreHandler, { "numthreads": 1, "daemonize": False, }) self.distributed_server = "core2" self.prefix = ipaddress.Ipv4Prefix("10.83.0.0/16") self.session = None self.request_handler = None def setup_handler(self): self.session = self.server.coreemu.create_session(1) request_mock = MagicMock() request_mock.fileno = MagicMock(return_value=1) self.request_handler = CoreHandler(request_mock, "", self.server) self.request_handler.session = self.session self.request_handler.add_session_handlers() def setup(self, distributed_address): # validate address assert distributed_address, "distributed server address was not provided" # create session self.session = self.server.coreemu.create_session(1) # create request handler request_mock = MagicMock() request_mock.fileno = MagicMock(return_value=1) self.request_handler = CoreHandler(request_mock, "", self.server) self.request_handler.session = self.session self.request_handler.add_session_handlers() self.session.broker.session_clients.append(self.request_handler) # have broker handle a configuration state change self.session.set_state(EventTypes.DEFINITION_STATE) message = CoreEventMessage.create(0, [(EventTlvs.TYPE, EventTypes.CONFIGURATION_STATE.value)]) self.request_handler.handle_message(message) # add broker server for distributed core distributed = "%s:%s:%s" % (self.distributed_server, distributed_address, self.port) message = CoreConfMessage.create(0, [ (ConfigTlvs.OBJECT, "broker"), (ConfigTlvs.TYPE, 0), (ConfigTlvs.DATA_TYPES, (10,)), (ConfigTlvs.VALUES, distributed) ]) self.request_handler.handle_message(message) # set session location message = CoreConfMessage.create(0, [ (ConfigTlvs.OBJECT, "location"), (ConfigTlvs.TYPE, 0), (ConfigTlvs.DATA_TYPES, (9, 9, 9, 9, 9, 9)), (ConfigTlvs.VALUES, "0|0| 47.5766974863|-122.125920191|0.0|150.0") ]) self.request_handler.handle_message(message) # set services for host nodes message = CoreConfMessage.create(0, [ (ConfigTlvs.SESSION, str(self.session.id)), (ConfigTlvs.OBJECT, "services"), (ConfigTlvs.TYPE, 0), (ConfigTlvs.DATA_TYPES, (10, 10, 10)), (ConfigTlvs.VALUES, "host|DefaultRoute|SSH") ]) self.request_handler.handle_message(message) def shutdown(self): self.server.coreemu.shutdown() self.server.server_close()