Exemplo n.º 1
0
 def test_dhcpHandler_adds_to_needsDHCPUpdate(self):
     rack_id = random.randint(0, 100)
     listener = PostgresListenerService()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.watching = set([rack_id])
     mock_startProcessing = self.patch(service, "startProcessing")
     service.dhcpHandler("sys_dhcp_%d" % rack_id, "")
     self.assertEquals(set([rack_id]), service.needsDHCPUpdate)
     self.assertThat(mock_startProcessing, MockCalledOnceWith())
Exemplo n.º 2
0
 def test_process_calls_processDHCP_for_rack_controller(self):
     rack_id = random.randint(0, 100)
     service = RackControllerService(sentinel.ipcWorker, sentinel.listener)
     service.watching = set([rack_id])
     service.needsDHCPUpdate = set([rack_id])
     service.running = True
     mock_processDHCP = self.patch(service, "processDHCP")
     service.startProcessing()
     yield service.processingDone
     self.assertThat(mock_processDHCP, MockCalledOnceWith(rack_id))
Exemplo n.º 3
0
 def test_process_doesnt_call_processDHCP_when_nothing_to_process(self):
     rack_id = random.randint(0, 100)
     service = RackControllerService(sentinel.ipcWorker, sentinel.listener)
     service.watching = set([rack_id])
     service.needsDHCPUpdate = set()
     service.running = True
     mock_processDHCP = self.patch(service, "processDHCP")
     service.startProcessing()
     yield service.processingDone
     self.assertThat(mock_processDHCP, MockNotCalled())
Exemplo n.º 4
0
 def test_process_calls_processDHCP_multiple_times(self):
     rack_ids = [random.randint(0, 100) for _ in range(3)]
     service = RackControllerService(sentinel.ipcWorker, sentinel.listener)
     service.watching = set(rack_ids)
     service.needsDHCPUpdate = set(rack_ids)
     service.running = True
     mock_processDHCP = self.patch(service, "processDHCP")
     service.startProcessing()
     for _ in range(len(rack_ids)):
         yield service.processingDone
     for rack_id in rack_ids:
         self.assertThat(mock_processDHCP, MockAnyCall(rack_id))
Exemplo n.º 5
0
 def test_coreHandler_unwatch_calls_unregister(self):
     processId = random.randint(0, 100)
     rack_id = random.randint(0, 100)
     listener = PostgresListenerService()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.processId = processId
     service.watching = {rack_id}
     service.needsDHCPUpdate = {rack_id}
     listener.register(f"sys_dhcp_{rack_id}", service.dhcpHandler)
     service.coreHandler("sys_core_%d" % processId, "unwatch_%d" % rack_id)
     self.assertNotIn(f"sys_dhcp_{rack_id}", listener.listeners)
     self.assertEquals(set(), service.watching)
     self.assertEquals(set(), service.needsDHCPUpdate)
Exemplo n.º 6
0
 def test_coreHandler_watch_doesnt_call_register(self):
     processId = random.randint(0, 100)
     rack_id = random.randint(0, 100)
     listener = Mock()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.processId = processId
     service.watching = set([rack_id])
     mock_startProcessing = self.patch(service, "startProcessing")
     service.coreHandler("sys_core_%d" % processId, "watch_%d" % rack_id)
     self.assertThat(listener.register, MockNotCalled())
     self.assertEquals(set([rack_id]), service.watching)
     self.assertEquals(set([rack_id]), service.needsDHCPUpdate)
     self.assertThat(mock_startProcessing, MockCalledOnceWith())
Exemplo n.º 7
0
 def test_coreHandler_unwatch_calls_unregister(self):
     processId = random.randint(0, 100)
     rack_id = random.randint(0, 100)
     listener = Mock()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.processId = processId
     service.watching = {rack_id}
     service.needsDHCPUpdate = {rack_id}
     service.coreHandler("sys_core_%d" % processId, "unwatch_%d" % rack_id)
     self.assertThat(
         listener.unregister,
         MockCalledOnceWith("sys_dhcp_%d" % rack_id, service.dhcpHandler))
     self.assertEquals(set(), service.watching)
     self.assertEquals(set(), service.needsDHCPUpdate)
Exemplo n.º 8
0
 def test_coreHandler_watch_doesnt_call_register(self):
     processId = random.randint(0, 100)
     rack_id = random.randint(0, 100)
     listener = PostgresListenerService()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.processId = processId
     service.watching = set([rack_id])
     mock_startProcessing = self.patch(service, "startProcessing")
     sys_channel = f"sys_core_{processId}"
     service.coreHandler(sys_channel, "watch_%d" % rack_id)
     self.assertNotIn(sys_channel, listener.listeners)
     self.assertNotIn(sys_channel, listener.registeredChannels)
     self.assertEquals(set([rack_id]), service.watching)
     self.assertEquals(set([rack_id]), service.needsDHCPUpdate)
     self.assertThat(mock_startProcessing, MockCalledOnceWith())
Exemplo n.º 9
0
 def test_stopService_calls_unregister_for_all_watching(self):
     processId = random.randint(0, 100)
     watching = {random.randint(0, 100) for _ in range(3)}
     listener = Mock()
     service = RackControllerService(sentinel.ipcWorker, listener)
     service.processId = processId
     service.watching = watching
     yield service.stopService()
     self.assertThat(
         listener.unregister,
         MockAnyCall("sys_core_%d" % processId, service.coreHandler))
     for watch_id in watching:
         self.assertThat(
             listener.unregister,
             MockAnyCall("sys_dhcp_%d" % watch_id, service.dhcpHandler))
Exemplo n.º 10
0
 def test_process_calls_processDHCP_multiple_times_on_failure(self):
     rack_id = random.randint(0, 100)
     service = RackControllerService(sentinel.ipcWorker, sentinel.listener)
     service.watching = set([rack_id])
     service.needsDHCPUpdate = set([rack_id])
     service.running = True
     mock_processDHCP = self.patch(service, "processDHCP")
     mock_processDHCP.side_effect = [
         fail(factory.make_exception()),
         succeed(None),
     ]
     service.startProcessing()
     for _ in range(2):
         yield service.processingDone
     self.assertThat(mock_processDHCP,
                     MockCallsMatch(call(rack_id), call(rack_id)))
Exemplo n.º 11
0
    def test_stopService_calls_unregister_for_all_watching(self):
        processId = random.randint(0, 100)
        watching = {random.randint(0, 100) for _ in range(3)}
        listener = PostgresListenerService()
        service = RackControllerService(sentinel.ipcWorker, listener)
        service.processId = processId
        service.watching = watching
        listener.register(f"sys_core_{processId}", service.coreHandler)
        for watch_id in watching:
            listener.register(f"sys_dhcp_{watch_id}", service.dhcpHandler)

        yield service.stopService()

        self.assertNotIn(f"sys_core_{processId}", listener.listeners)
        for watch_id in watching:
            self.assertNotIn(f"sys_dhcp_{watch_id}", listener.listeners)