def __init__(self, configuration, bot_name="vex"): # get the settings path and then load the settings from file settings_path = configuration.get('settings_path') settings = configuration.load_settings(settings_path) self.messaging = Messaging(settings) # create the plugin manager self.plugin_manager = pluginmanager.PluginInterface() # add the entry points of interest self.plugin_manager.add_entry_points( ('vexbot.plugins', 'vexbot.adapters')) # create the subprocess manager and add in the plugins self.subprocess_manager = SubprocessManager() self._update_plugins(settings, self.subprocess_manager, self.plugin_manager) subprocesses_to_start = settings.get('startup_adapters', []) subprocesses_to_start.extend(settings.get('startup_plugins', [])) self.subprocess_manager.start(subprocesses_to_start) self.name = bot_name self._logger = logging.getLogger(__name__) self.command_manager = BotCommandManager(robot=self) try: import setproctitle setproctitle.setproctitle(bot_name) except ImportError: pass
def __init__(self, *args, **kwargs): self.subscribe_address = 'tcp://127.0.0.1:4006' self.publish_address = 'tcp://127.0.0.1:4007' self.settings = { 'subscribe_address': self.subscribe_address, 'publish_address': self.publish_address } context = zmq.Context() self.messaging = Messaging(self.settings, context) self.test_publish_socket = context.socket(zmq.PUB) self.test_publish_socket.connect(self.publish_address) self.test_subscribe_socket = context.socket(zmq.SUB) self.test_subscribe_socket.connect(self.subscribe_address) self.test_subscribe_socket.setsockopt_string(zmq.SUBSCRIBE, '') sleep(.2) super().__init__(*args, **kwargs)
class TestMessaging(unittest.TestCase): def __init__(self, *args, **kwargs): self.subscribe_address = 'tcp://127.0.0.1:4006' self.publish_address = 'tcp://127.0.0.1:4007' self.settings = { 'subscribe_address': self.subscribe_address, 'publish_address': self.publish_address } context = zmq.Context() self.messaging = Messaging(self.settings, context) self.test_publish_socket = context.socket(zmq.PUB) self.test_publish_socket.connect(self.publish_address) self.test_subscribe_socket = context.socket(zmq.SUB) self.test_subscribe_socket.connect(self.subscribe_address) self.test_subscribe_socket.setsockopt_string(zmq.SUBSCRIBE, '') sleep(.2) super().__init__(*args, **kwargs) """ def test_send_message(self): self.messaging.send_message('', test='blue') frame = self.test_subscribe_socket.recv_multipart() message = decode_vex_message(frame) self.assertEqual(message.target, '') self.assertEqual(message.source, 'robot') self.assertEqual(message.contents['test'], 'blue') self.assertEqual(message.type, 'MSG') """ def test_send_targeted_message(self): self.test_subscribe_socket.setsockopt_string(zmq.SUBSCRIBE, 'test') self.messaging.send_message('test', test='blue') frame = self.test_subscribe_socket.recv_multipart() message = decode_vex_message(frame) self.assertEqual(message.target, 'test') self.assertEqual(message.source, 'robot') self.assertEqual(message.contents['test'], 'blue') self.assertEqual(message.type, 'MSG')