def run(): """ Entry point to this microservice. """ args = get_cli_parser().parse_args() # schedule the internal event consumer # that will run until we terminate this service asyncio.ensure_future(consume_events(topic=args.topic.encode('utf-8'), group=args.group, addr=args.broker, callback=event_handler)) # let's start the REST server that will # serve the view's resource srv = loop.run_until_complete(webserver(args.addr, args.port)) loop.run_until_complete(route_to_resource(bookshelf_view)) # finally, let's advertize this service # to the rest of the world svc = loop.run_until_complete(register_service( id=args.id, name=args.name, port=args.port, address=args.addr, tags=args.tags ) ) try: loop.run_forever() except KeyboardInterrupt: pass finally: loop.run_until_complete(deregister_service(svc)) loop.run_until_complete(stop_consuming_events()) srv.close() loop.run_until_complete(srv.wait_closed()) # give the time for remaining requests to complete loop.run_until_complete(asyncio.sleep(2)) loop.close()
def test_parse_kafka_broker_address_is_mandatory(): parser = utils.get_cli_parser() with pytest.raises(SystemExit) as excinfo: parser.parse_args(['--topic', 'test'])
def test_parse_default_service_listening_address_is_localhost(): parser = utils.get_cli_parser() args = parser.parse_args(['--broker', 'addr', '--topic', 'test']) assert args.addr == '127.0.0.1'
def test_parse_default_service_listening_port_is_localhost(): parser = utils.get_cli_parser() args = parser.parse_args(['--broker', 'addr', '--topic', 'test']) assert args.port == 8080
def test_parse_kafka_topic_is_mandatory(): parser = utils.get_cli_parser() with pytest.raises(SystemExit) as excinfo: parser.parse_args(['--broker', 'addr'])