def setUp(self): self.temp_dir = TemporaryDirectory() host = '0.0.0.0' port = get_free_port() seed_addr = None conf = SyncObjConf( fullDumpFile=self.temp_dir.name + '/supervise.zip', logCompactionMinTime=300, dynamicMembershipChange=True ) data_dir = self.temp_dir.name + '/supervise' grpc_port = get_free_port() grpc_max_workers = 10 http_port = get_free_port() logger = getLogger(NAME) log_handler = StreamHandler() logger.setLevel(ERROR) log_handler.setLevel(INFO) log_format = Formatter('%(asctime)s - %(levelname)s - %(pathname)s:%(lineno)d - %(message)s') log_handler.setFormatter(log_format) logger.addHandler(log_handler) http_logger = getLogger(NAME + '_http') http_log_handler = StreamHandler() http_logger.setLevel(NOTSET) http_log_handler.setLevel(INFO) http_log_format = Formatter('%(message)s') http_log_handler.setFormatter(http_log_format) http_logger.addHandler(http_log_handler) metrics_registry = CollectorRegistry() self.manager = Manager(host=host, port=port, seed_addr=seed_addr, conf=conf, data_dir=data_dir, grpc_port=grpc_port, grpc_max_workers=grpc_max_workers, http_port=http_port, logger=logger, http_logger=http_logger, metrics_registry=metrics_registry)
def test_client_server_full_flow(self): storage = MemoryStorage() self.server = msgpackrpc.Server(SifrServer(storage), unpack_encoding='utf-8') port = get_free_port() self.server.listen(msgpackrpc.Address('127.0.0.1', port)) self.server_thread = threading.Thread(target=self.run_server) self.server_thread.start() time.sleep(0.1) cli = RPCClient('127.0.0.1', port) cli.incr("foo", 1) self.assertEqual(1, storage.count(Hour(datetime.datetime.now(), ["foo"]))) cli.incr("bar", 1, ["minute"]) self.assertEqual(0, storage.count(Hour(datetime.datetime.now(), ["bar"]))) self.assertEqual( 1, storage.count(Minute(datetime.datetime.now(), ["bar"]))) self.assertEqual(1, cli.count("foo", datetime.datetime.now(), "hour")) cli.incr_unique("foo", "test") self.assertEqual( 1, storage.cardinality(Hour(datetime.datetime.now(), ["foo"]))) self.assertEqual( 1, cli.cardinality("foo", datetime.datetime.now(), "hour")) cli.track("foo", "test") self.assertEqual( set(["test"]), storage.uniques(Hour(datetime.datetime.now(), ["foo"]))) self.assertEqual(set(["test"]), cli.uniques("foo", datetime.datetime.now(), "hour"))
def test_delete_node(self): # get status response = requests.get('http://{0}:{1}/status'.format(self.host, self.port)) self.assertEqual(HTTPStatus.OK, response.status_code) data = json.loads(response.text) self.assertEqual(0, data['node_status']['partner_nodes_count']) port = get_free_port() # put node response = requests.put('http://{0}:{1}/nodes/localhost:{2}'.format(self.host, self.port, port)) sleep(1) # wait for node to be added self.assertEqual(HTTPStatus.OK, response.status_code) # get status response = requests.get('http://{0}:{1}/status'.format(self.host, self.port)) self.assertEqual(HTTPStatus.OK, response.status_code) data = json.loads(response.text) self.assertEqual(1, data['node_status']['partner_nodes_count']) # delete node response = requests.delete('http://{0}:{1}/nodes/localhost:{2}'.format(self.host, self.port, port)) sleep(1) # wait for node to be deleted self.assertEqual(HTTPStatus.OK, response.status_code) # get status response = requests.get('http://{0}:{1}/status'.format(self.host, self.port)) self.assertEqual(HTTPStatus.OK, response.status_code) data = json.loads(response.text) self.assertEqual(0, data['node_status']['partner_nodes_count'])
def test_put_node(self): stub = IndexStub(self.channel) # get node request = GetStatusRequest() response = stub.GetStatus(request) self.assertEqual( 0, pickle.loads(response.node_status)['partner_nodes_count']) self.assertEqual(True, response.status.success) # put node request = PutNodeRequest() request.node_name = 'localhost:{0}'.format(get_free_port()) response = stub.PutNode(request) sleep(1) # wait for node to be added self.assertEqual(True, response.status.success) # get node request = GetStatusRequest() response = stub.GetStatus(request) self.assertEqual( 1, pickle.loads(response.node_status)['partner_nodes_count']) self.assertEqual(True, response.status.success)
def setUp(self): self.temp_dir = TemporaryDirectory() self.example_dir = os.path.normpath( os.path.join(os.path.dirname(__file__), '../example')) host = '0.0.0.0' port = get_free_port() seed_addr = None conf = SyncObjConf(fullDumpFile=self.temp_dir.name + '/index.zip', logCompactionMinTime=300, dynamicMembershipChange=True) data_dir = self.temp_dir.name + '/index' grpc_port = get_free_port() grpc_max_workers = 10 http_port = get_free_port() logger = getLogger(NAME) log_handler = StreamHandler() logger.setLevel(ERROR) log_handler.setLevel(INFO) log_format = Formatter( '%(asctime)s - %(levelname)s - %(pathname)s:%(lineno)d - %(message)s' ) log_handler.setFormatter(log_format) logger.addHandler(log_handler) http_logger = getLogger(NAME + '_http') http_log_handler = StreamHandler() http_logger.setLevel(NOTSET) http_log_handler.setLevel(INFO) http_log_format = Formatter('%(message)s') http_log_handler.setFormatter(http_log_format) http_logger.addHandler(http_log_handler) metrics_registry = CollectorRegistry() self.indexer = Indexer(host=host, port=port, seed_addr=seed_addr, conf=conf, data_dir=data_dir, grpc_port=grpc_port, grpc_max_workers=grpc_max_workers, http_port=http_port, logger=logger, http_logger=http_logger, metrics_registry=metrics_registry) self.channel = grpc.insecure_channel('{0}:{1}'.format(host, grpc_port))
def test_client_server_full_flow(self): storage = MemoryStorage() self.server = msgpackrpc.Server(SifrServer(storage), unpack_encoding='utf-8') port = get_free_port() self.server.listen(msgpackrpc.Address('127.0.0.1', port)) self.server_thread = threading.Thread(target=self.run_server) self.server_thread.start() time.sleep(0.1) cli = RPCClient('127.0.0.1', port) cli.incr("foo", 1) self.assertEqual( 1, storage.count(Hour(datetime.datetime.now(), ["foo"])) ) cli.incr("bar", 1, ["minute"]) self.assertEqual( 0, storage.count(Hour(datetime.datetime.now(), ["bar"])) ) self.assertEqual( 1, storage.count(Minute(datetime.datetime.now(), ["bar"])) ) self.assertEqual( 1, cli.count("foo", datetime.datetime.now(), "hour") ) cli.incr_unique("foo", "test") self.assertEqual( 1, storage.cardinality(Hour(datetime.datetime.now(), ["foo"])) ) self.assertEqual( 1, cli.cardinality("foo", datetime.datetime.now(), "hour") ) cli.track("foo", "test") self.assertEqual( set(["test"]), storage.uniques(Hour(datetime.datetime.now(), ["foo"])) ) self.assertEqual( set(["test"]), cli.uniques("foo", datetime.datetime.now(), "hour") )
def setUpClass(cls): load_config(filepath='test.config.yaml') mock_server_port = get_free_port() start_mock_server(mock_server_port) const.HOSTNAME = MOCK_HOSTNAME.format(port=mock_server_port)