def test_services(self): """ The right type and number of services are created. """ config = {'redis-hosts': set(['10.0.0.2', '10.0.0.3']), 'redis-port': 6379, 'redis-key': 'udplog'} dispatcher = Dispatcher() multiService = redis.makeService(config, dispatcher) services = list(multiService) self.assertEqual(3, len(services)) for service in services[:-1]: self.assertIsInstance(service, TCPClient) self.assertIsInstance(services[-1], redis.RedisPublisher)
def makeService(config): s = service.MultiService() # Set up event dispatcher dispatcher = Dispatcher() # Set up UDPLog server. udplogProtocol = UDPLogProtocol(dispatcher.eventReceived) udplogServer = internet.UDPServer(port=config['udplog-port'], protocol=udplogProtocol, interface=config['udplog-interface'], maxPacketSize=65536) udplogServer.setServiceParent(s) # Set up syslog server if (config.get('syslog-port') is not None or config.get('syslog-unix-socket') is not None): hostname = socket.gethostname() hostnames = { hostname.split('.')[0]: hostname, '': hostname } syslogProtocol = syslog.SyslogDatagramProtocol( dispatcher.eventReceived, hostnames=hostnames) if config.get('syslog-unix-socket') is not None: syslogServer = internet.UNIXDatagramServer( address=config['syslog-unix-socket'], protocol=syslogProtocol, maxPacketSize=65536) syslogServer.setServiceParent(s) if config.get('syslog-port') is not None: syslogServer = internet.UDPServer( port=config['syslog-port'], protocol=syslogProtocol, interface=config.get('syslog-interface', ''), maxPacketSize=65536) syslogServer.setServiceParent(s) # Set up Thrift/Scribe client. if config['scribe-host']: from udplog import scribe factory = UDPLogClientFactory(scribe.ScribeProtocol, dispatcher) scribeClient = internet.TCPClient(config['scribe-host'], config['scribe-port'], factory) scribeClient.setServiceParent(s) # Set up RabbitMQ client. if config['rabbitmq-host']: from udplog import rabbitmq factory = UDPLogClientFactory( rabbitmq.RabbitMQPublisher, dispatcher, vhost=config['rabbitmq-vhost'], exchange=config['rabbitmq-exchange'], queueSize=config['rabbitmq-queue-size']) rabbitmqClient = internet.TCPClient(config['rabbitmq-host'], config['rabbitmq-port'], factory) rabbitmqClient.setServiceParent(s) # Set up Redis client. if config['redis-hosts']: from udplog import redis redisService = redis.makeService(config, dispatcher) redisService.setServiceParent(s) # Set up Kafka client. if config['kafka-brokers']: from udplog import kafka kafkaService = kafka.makeService(config, dispatcher) kafkaService.setServiceParent(s) if config['verbose']: UDPLogToTwistedLog(dispatcher) return s
def setUp(self): self.dispatcher = Dispatcher() self.client = FakeRedisClient() self.publisher = redis.RedisPublisher(self.dispatcher, self.client, "test_list")
def setUp(self): self.dispatcher = Dispatcher() self.producer = FakeKafkaProducer() kafka._make_producer = lambda _: self.producer config = {'kafka-topic': 'foo'} self.publisher = kafka.KafkaPublisher(self.dispatcher, config)