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['syslog-port'] is not None or config['syslog-unix-socket'] is not None): syslogProtocol = syslog.SyslogDatagramProtocol(dispatcher.eventReceived) if config['syslog-unix-socket'] is not None: syslogServer = internet.UNIXDatagramServer( address=config['syslog-unix-socket'], protocol=syslogProtocol, maxPacketSize=65536) syslogServer.setServiceParent(s) if config['syslog-port'] is not None: syslogServer = internet.UDPServer(port=config['syslog-port'], protocol=syslogProtocol, interface=config['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 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 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