def test_registers_and_unregisters_listener(self): mock_listener = Mock() register = mock_listener.register = Mock() unregister = mock_listener.unregister = Mock() clock = Clock() run = self.patch(ActiveDiscoveryService, "run") service = ActiveDiscoveryService(clock, mock_listener) # Make sure the service doesn't actually do anything. service.startService() self.assertThat( service, MatchesStructure.byEquality( call=(run, (), {}), step=active_discovery.CHECK_INTERVAL, clock=clock, ), ) self.assertThat( register, MockCalledOnceWith("config", service.refreshDiscoveryConfig), ) self.assertThat(unregister, MockNotCalled()) service.stopService() self.assertThat( unregister, MockCalledOnceWith("config", service.refreshDiscoveryConfig), )
def test_run_calls_scanIfNeeded_if_discovery_enabled(self): clock = Clock() service = ActiveDiscoveryService(clock) self.patch(service, "refreshDiscoveryConfig") scanIfNeeded = self.patch(service, "scanIfNeeded") service.startService() # Pretend the call to refreshDiscoveryConfig enabled discovery, # as expected. service.discovery_enabled = True clock.advance(300) self.assertThat(scanIfNeeded, MockCalledOnceWith())
def test_scanIfNeeded_logs_success(self): service = ActiveDiscoveryService(Clock()) try_lock_and_scan = self.patch(service, "try_lock_and_scan") try_lock_and_scan.return_value = "happy" service.discovery_enabled = True service.discovery_last_scan = 0 service.discovery_interval = 1 service.startService() with TwistedLoggerFixture() as logger: yield service.run() self.assertThat(logger.output, DocTestMatches("...Active network discovery: happy"))
def test_run_handles_refresh_failure(self): clock = Clock() service = ActiveDiscoveryService(clock) refreshDiscoveryConfig = self.patch(service, "refreshDiscoveryConfig") refreshDiscoveryConfig.side_effect = Exception with TwistedLoggerFixture() as logger: service.startService() self.assertThat( logger.output, DocTestMatches(dedent("""\ ...: error refreshing discovery configuration. Traceback (most recent call last): ...""")))
def test_run_calls_refreshDiscoveryConfig(self): clock = Clock() service = ActiveDiscoveryService(clock) refreshDiscoveryConfig = self.patch(service, "refreshDiscoveryConfig") service.startService() self.assertThat(refreshDiscoveryConfig, MockCalledOnceWith())