class ConnectorTestCase(TestCase):
    @patch('alamo_worker.connector.SchedulerConnection.open',
           MagicMock(return_value=None))
    def setUp(self):
        self.address = settings.SCHEDULERS[0]
        self.scheduler = SchedulerConnection(self.address)

    @patch('alamo_worker.connector.Context.socket')
    @patch('alamo_worker.connector.Poller')
    def test_load_plugins_with_correct_plugin_list(self, poller_mock,
                                                   socket_mock):
        poller, socket_mocked = MagicMock(), MagicMock()
        poller_mock.return_value = poller

        socket_mock.return_value = socket_mocked
        self.scheduler.open()

        socket_mocked.connect.assert_called_with(self.address)
        poller.register.assert_called_with(socket_mocked, POLLIN)

    def test_str_and_repr(self):
        self.assertEqual(str(self.scheduler), self.address)
        self.assertEqual(
            repr(self.scheduler), 'Scheduler({})'.format(self.address)
        )

    @override_settings(SCHEDULER_MONITOR=True)
    @patch('alamo_worker.connector.Context.socket')
    @patch('alamo_worker.connector.Poller')
    def test_(self, poller_mock, socket_mock):
        poller, monitor_poller = MagicMock(), MagicMock()
        sock = MagicMock()

        poller_mock.side_effect = [poller, monitor_poller]
        socket_mock.return_value = sock

        self.scheduler.open()
        self.assertTrue(sock.get_monitor_socket.called)
        self.assertTrue(monitor_poller.register)

    @data(False, True)
    def test_connector_close_method(self, monitor):
        self.scheduler.pull = MagicMock()
        self.scheduler.poller = MagicMock()
        self.scheduler.monitor_socket = MagicMock()
        self.scheduler.monitor_poller = MagicMock()
        with override_settings(SCHEDULER_MONITOR=monitor):
            self.scheduler.close()

            self.assertTrue(self.scheduler.pull.close.called)
            self.assertTrue(self.scheduler.poller.unregister.called)
            self.assertEqual(self.scheduler.monitor_socket.close.called,
                             monitor)
            self.assertEqual(self.scheduler.monitor_poller.unregister.called,
                             monitor)
 def setUp(self):
     self.address = settings.SCHEDULERS[0]
     self.scheduler = SchedulerConnection(self.address)