Пример #1
0
    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)
Пример #2
0
    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"))
Пример #3
0
    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'])
Пример #4
0
    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)
Пример #5
0
    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))
Пример #6
0
    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")
        )
Пример #7
0
 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)