Example #1
0
    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
Example #2
0
    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)
Example #3
0
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')