def start_server(): global _server if _server is None: from calibre.utils.Zeroconf import Zeroconf try: _server = Zeroconf() except Exception: time.sleep(1) _server = Zeroconf() atexit.register(stop_server) return _server
def test_bonjour(self): 'Test advertising via BonJour' from calibre.srv.bonjour import BonJour from calibre.utils.Zeroconf import Zeroconf b = BonJour() with TestServer(lambda data:(data.path[0] + data.read()), plugins=(b,), shutdown_timeout=5) as server: self.assertTrue(b.started.wait(5), 'BonJour not started') self.ae(b.advertised_port, server.address[1]) service = b.services[0] self.ae(service.type, b'_calibre._tcp.local.') r = Zeroconf() info = r.getServiceInfo(service.type, service.name) self.assertIsNotNone(info) self.ae(info.text, b'\npath=/opds') self.assertTrue(b.stopped.wait(5), 'BonJour not stopped')