Exemplo n.º 1
0
 def _test_multiple_router(self, backend='thread', num_parallel=5):
     a = set_router_parser().parse_args([
         '--yaml_path', 'BaseRouter', '--num_parallel',
         str(num_parallel), '--parallel_backend', backend
     ])
     with ServiceManager(RouterService, a):
         pass
Exemplo n.º 2
0
    def _test_grpc_multiple_pub(self, backend='thread', num_parallel=5):
        args = set_frontend_parser().parse_args([
            '--grpc_host',
            '127.0.0.1',
        ])

        p_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter',
            '--num_parallel',
            str(num_parallel), '--parallel_backend', backend,
            '--parallel_type',
            str(ParallelType.PUB_BLOCK)
        ])

        with ServiceManager(
                RouterService,
                p_args), FrontendService(args), grpc.insecure_channel(
                    '%s:%d' % (args.grpc_host, args.grpc_port),
                    options=[
                        ('grpc.max_send_message_length', 70 * 1024 * 1024),
                        ('grpc.max_receive_message_length', 70 * 1024 * 1024)
                    ]) as channel:
            stub = gnes_pb2_grpc.GnesRPCStub(channel)
            resp = stub.Call(list(RequestGenerator.query(b'abc', 1))[0])
            self.assertEqual(resp.request_id, 0)
Exemplo n.º 3
0
    def test_concat_router(self):
        args = set_router_parser().parse_args([
            '--yaml_path', self.concat_router_yaml,
            '--socket_out', str(SocketType.PUSH_BIND)
        ])
        c_args = _set_client_parser().parse_args([
            '--port_in', str(args.port_out),
            '--port_out', str(args.port_in),
            '--socket_in', str(SocketType.PULL_CONNECT)
        ])
        with RouterService(args), ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()
            msg.request.search.query.chunk_embeddings.CopyFrom(array2blob(np.random.random([5, 2])))
            msg.envelope.num_part.extend([1, 3])
            c1.send_message(msg)
            c1.send_message(msg)
            c1.send_message(msg)
            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            print(r.envelope.routes)
            self.assertEqual(r.request.search.query.chunk_embeddings.shape, [5, 6])

            for j in range(1, 4):
                d = msg.request.index.docs.add()
                d.chunk_embeddings.CopyFrom(array2blob(np.random.random([5, 2 * j])))

            c1.send_message(msg)
            c1.send_message(msg)
            c1.send_message(msg)
            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            for j in range(1, 4):
                self.assertEqual(r.request.index.docs[j - 1].chunk_embeddings.shape, [5, 6 * j])
Exemplo n.º 4
0
    def test_chunk_sum_reduce_router(self):
        args = set_router_parser().parse_args([
            '--yaml_path', self.chunk_sum_yaml,
            '--socket_out', str(SocketType.PUB_BIND)
        ])
        c_args = _set_client_parser().parse_args([
            '--port_in', str(args.port_out),
            '--port_out', str(args.port_in),
            '--socket_in', str(SocketType.SUB_CONNECT)
        ])
        with RouterService(args), ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()
            s = msg.response.search.topk_results.add()
            s.score.value = 0.6
            s.score.explained = json.dumps(['1-c1', '1-c3', '2-c1'])
            s.doc.doc_id = 1

            s = msg.response.search.topk_results.add()
            s.score.value = 0.4
            s.score.explained = json.dumps(['1-c2', '2-c2'])
            s.doc.doc_id = 2

            s = msg.response.search.topk_results.add()
            s.score.value = 0.3
            s.score.explained = json.dumps(['2-c3'])
            s.doc.doc_id = 3

            msg.envelope.num_part.extend([1, 2])
            c1.send_message(msg)

            msg.response.search.ClearField('topk_results')

            s = msg.response.search.topk_results.add()
            s.score.value = 0.5
            s.score.explained = json.dumps(['2-c1', '1-c2', '1-c1'])
            s.doc.doc_id = 2

            s = msg.response.search.topk_results.add()
            s.score.value = 0.3
            s.score.explained = json.dumps(['1-c3', '2-c2'])
            s.doc.doc_id = 3

            s = msg.response.search.topk_results.add()
            s.score.value = 0.1
            s.score.explained = json.dumps(['2-c3'])
            s.doc.doc_id = 1
            c1.send_message(msg)
            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            self.assertEqual(len(r.response.search.topk_results), 3)
            self.assertGreaterEqual(r.response.search.topk_results[0].score.value,
                                    r.response.search.topk_results[-1].score.value)
            print(r.response.search.topk_results)
            self.assertEqual(r.response.search.topk_results[0].score.explained, '1-c2\n2-c2\n\n2-c1\n1-c2\n1-c1\n\n')
            self.assertEqual(r.response.search.topk_results[1].score.explained, '1-c1\n1-c3\n2-c1\n\n2-c3\n\n')
            self.assertEqual(r.response.search.topk_results[2].score.explained, '2-c3\n\n1-c3\n2-c2\n\n')

            self.assertAlmostEqual(r.response.search.topk_results[0].score.value, 0.9)
            self.assertAlmostEqual(r.response.search.topk_results[1].score.value, 0.7)
            self.assertAlmostEqual(r.response.search.topk_results[2].score.value, 0.6)
Exemplo n.º 5
0
    def test_health_check(self):
        a = set_router_parser().parse_args([
            '--yaml_path',
            'BaseRouter',
        ])
        a1 = copy.deepcopy(a)
        b = set_healthcheck_parser().parse_args(['--port', str(a.port_ctrl)])

        # before - fail
        with self.assertRaises(SystemExit) as cm:
            healthcheck(b)

        self.assertEqual(cm.exception.code, 1)

        # running - success
        with self.assertRaises(SystemExit) as cm:
            with RouterService(a):
                time.sleep(2)
                healthcheck(b)
        self.assertEqual(cm.exception.code, 0)

        # running - managerservice - success
        with self.assertRaises(SystemExit) as cm:
            with ServiceManager(RouterService, a1):
                time.sleep(2)
                healthcheck(b)
        self.assertEqual(cm.exception.code, 0)

        # after - fail
        with self.assertRaises(SystemExit) as cm:
            healthcheck(b)

        self.assertEqual(cm.exception.code, 1)
Exemplo n.º 6
0
    def test_grpc_frontend(self):
        args = set_frontend_parser().parse_args([
            '--grpc_host',
            '127.0.0.1',
        ])

        p_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter'
        ])

        with RouterService(p_args), FrontendService(
                args), grpc.insecure_channel(
                    '%s:%s' % (args.grpc_host, args.grpc_port),
                    options=[
                        ('grpc.max_send_message_length', 70 * 1024 * 1024),
                        ('grpc.max_receive_message_length', 70 * 1024 * 1024)
                    ]) as channel:
            stub = gnes_pb2_grpc.GnesRPCStub(channel)
            with TimeContext('sync call'):  # about 5s
                resp = list(
                    stub.StreamCall(
                        RequestGenerator.train(self.all_bytes,
                                               batch_size=1)))[-1]

            self.assertEqual(resp.request_id, str(len(
                self.all_bytes)))  # idx start with 0, but +1 for final FLUSH
Exemplo n.º 7
0
    def test_doc_reduce_router(self):
        args = set_router_parser().parse_args([
            '--yaml_path', self.doc_router_yaml, '--socket_out',
            str(SocketType.PUB_BIND)
        ])
        c_args = _set_client_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.SUB_CONNECT)
        ])
        with RouterService(args), ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()

            # shard1 only has d1
            s = msg.response.search.topk_results.add()
            s.score = 0.1
            s.doc.doc_id = 1
            s.doc.raw_text = 'd1'

            s = msg.response.search.topk_results.add()
            s.score = 0.2
            s.doc.doc_id = 2

            s = msg.response.search.topk_results.add()
            s.score = 0.3
            s.doc.doc_id = 3

            msg.envelope.num_part.extend([1, 2])
            c1.send_message(msg)

            msg.response.search.ClearField('topk_results')

            # shard2 has d2 and d3
            s = msg.response.search.topk_results.add()
            s.score = 0.1
            s.doc.doc_id = 1

            s = msg.response.search.topk_results.add()
            s.score = 0.2
            s.doc.doc_id = 2
            s.doc.raw_text = 'd2'

            s = msg.response.search.topk_results.add()
            s.score = 0.3
            s.doc.doc_id = 3
            s.doc.raw_text = 'd3'

            msg.response.search.top_k = 5
            c1.send_message(msg)
            r = c1.recv_message()

            print(r.response.search.topk_results)
            self.assertSequenceEqual(r.envelope.num_part, [1])
            self.assertEqual(len(r.response.search.topk_results), 3)
            self.assertGreaterEqual(r.response.search.topk_results[0].score,
                                    r.response.search.topk_results[-1].score)
Exemplo n.º 8
0
    def test_async_block(self):
        args = set_frontend_parser().parse_args([
            '--grpc_host',
            '127.0.0.1',
        ])

        p1_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out', '8899', '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter'
        ])

        p2_args = set_router_parser().parse_args([
            '--port_in',
            str(p1_args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_BIND), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter'
        ])

        with FrontendService(args), Router1(p1_args), Router2(
                p2_args), grpc.insecure_channel(
                    '%s:%s' % (args.grpc_host, args.grpc_port),
                    options=[
                        ('grpc.max_send_message_length', 70 * 1024 * 1024),
                        ('grpc.max_receive_message_length', 70 * 1024 * 1024)
                    ]) as channel:
            stub = gnes_pb2_grpc.GnesRPCStub(channel)
            id = 0
            with TimeContext('non-blocking call'
                             ):  # about 26s = 32s (total) - 3*2s (overlap)
                resp = stub.StreamCall(
                    RequestGenerator.train(self.all_bytes2, batch_size=1))
                for r in resp:
                    self.assertEqual(r.request_id, str(id))
                    id += 1

            id = 0
            with TimeContext('blocking call'):  # should be 32 s
                for r in RequestGenerator.train(self.all_bytes2, batch_size=1):
                    resp = stub.Call(r)
                    self.assertEqual(resp.request_id, str(id))
                    id += 1
Exemplo n.º 9
0
    def test_keyword(self):
        args = set_router_parser().parse_args([
            '--yaml_path',
            self.yaml,
            '--socket_out',
            str(SocketType.PUB_BIND),
            '--py_path',
            self.python_code,
        ])
        args.as_response = True
        c_args = _set_client_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.SUB_CONNECT)
        ])
        with IndexerService(args), ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()
            for i, vec in enumerate(self.test_vec):
                doc = msg.request.index.docs.add()
                doc.doc_id = i
                doc.raw_text = self.test_str[i]
                c = doc.chunks.add()
                c.doc_id = i
                c.offset = 0
                c.embedding.data = vec.tobytes()
                for d in vec.shape:
                    c.embedding.shape.extend([d])
                c.embedding.dtype = str(vec.dtype)
                c.text = self.test_str[i]
            c1.send_message(msg)

            r = c1.recv_message()
            self.assert_(r.response.index)

            for i, vec in enumerate(self.test_vec):
                msg = gnes_pb2.Message()
                msg.request.search.query.doc_id = 1
                msg.request.search.top_k = 1
                c = msg.request.search.query.chunks.add()
                c.doc_id = 1
                c.embedding.data = vec.tobytes()
                for d in vec.shape:
                    c.embedding.shape.extend([d])
                c.embedding.dtype = str(vec.dtype)
                c.offset = 0
                c.weight = 1
                c.text = self.test_str[i]
                c1.send_message(msg)
                r = c1.recv_message()
                self.assert_(
                    r.response.search.topk_results[0].chunk.doc_id == i)
Exemplo n.º 10
0
    def test_bm_frontend(self):
        args = set_frontend_parser().parse_args([
            '--grpc_host', '127.0.0.1',

        ])

        p_args = set_router_parser().parse_args([
            '--port_in', str(args.port_out),
            '--port_out', str(args.port_in),
            '--socket_in', str(SocketType.PULL_CONNECT),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--yaml_path', 'BaseRouter'
        ])
Exemplo n.º 11
0
    def test_cli(self):
        args = set_frontend_parser().parse_args([])

        p_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter'
        ])

        with RouterService(p_args), FrontendService(args):
            CLIClient(self.train_args)
            CLIClient(self.index_args)
            CLIClient(self.query_args)
Exemplo n.º 12
0
    def setUp(self):
        dirname = os.path.dirname(__file__)
        self.rerank_router_yaml = os.path.join(dirname, '../',
                                               'router/block/block_train.yml')
        self.python_code = os.path.join(dirname, '../',
                                        'router/block/block.py')

        self.args = set_router_parser().parse_args([
            '--yaml_path', self.rerank_router_yaml, '--socket_out',
            str(SocketType.PUB_BIND), '--py_path', self.python_code
        ])
        self.c_args = _set_client_parser().parse_args([
            '--port_in',
            str(self.args.port_out), '--port_out',
            str(self.args.port_in), '--socket_in',
            str(SocketType.SUB_CONNECT)
        ])
Exemplo n.º 13
0
    def test_rerank(self):
        args = set_router_parser().parse_args([
            '--yaml_path', self.rerank_router_yaml,
            '--socket_out', str(SocketType.PUB_BIND),
            '--py_path', self.python_code
        ])
        c_args = _set_client_parser().parse_args([
            '--port_in', str(args.port_out),
            '--port_out', str(args.port_in),
            '--socket_in', str(SocketType.SUB_CONNECT)
        ])
        with RouterService(args), ZmqClient(c_args) as c1, ZmqClient(c_args) as c2:
            msg = gnes_pb2.Message()
            msg.response.search.ClearField('topk_results')

            for i, line in enumerate(self.test_str):
                s = msg.response.search.topk_results.add()
                s.score.value = 0.1
                s.doc.doc_id = i
                s.doc.raw_text = line

            msg.envelope.num_part.extend([1])
            msg.response.search.top_k = 5
            c1.send_message(msg)

            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            self.assertEqual(len(r.response.search.topk_results), 5)

            msg = gnes_pb2.Message()
            msg.response.search.ClearField('topk_results')

            for i, line in enumerate(self.test_str[:3]):
                s = msg.response.search.topk_results.add()
                s.score.value = 0.1
                s.doc.doc_id = i
                s.doc.raw_text = line

            msg.envelope.num_part.extend([1])
            msg.response.search.top_k = 5
            c1.send_message(msg)

            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            self.assertEqual(len(r.response.search.topk_results), 3)
Exemplo n.º 14
0
 def test_map_router(self):
     args = set_router_parser().parse_args([
         '--yaml_path', self.batch_router_yaml,
     ])
     c_args = _set_client_parser().parse_args([
         '--port_in', str(args.port_out),
         '--port_out', str(args.port_in),
     ])
     with RouterService(args), ZmqClient(c_args) as c1:
         msg = gnes_pb2.Message()
         msg.request.index.docs.extend([gnes_pb2.Document() for _ in range(5)])
         c1.send_message(msg)
         r = c1.recv_message()
         self.assertEqual(len(r.request.index.docs), 2)
         r = c1.recv_message()
         self.assertEqual(len(r.request.index.docs), 2)
         r = c1.recv_message()
         self.assertEqual(len(r.request.index.docs), 1)
Exemplo n.º 15
0
    def test_bm_frontend(self):
        args = set_frontend_parser().parse_args([
            '--grpc_host',
            '127.0.0.1',
        ])

        p_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--yaml_path', 'BaseRouter'
        ])

        b_args = set_client_benchmark_parser().parse_args(
            ['--num_requests', '10', '--request_length', '65536'])
        with RouterService(p_args), FrontendService(args):
            BenchmarkClient(b_args)
Exemplo n.º 16
0
    def test_cli(self):
        cli_args = set_client_cli_parser().parse_args([
            '--mode', 'train', '--grpc_host', '127.0.0.1', '--txt_file',
            os.path.join(self.dirname, 'sonnets.txt')
        ])

        args = set_frontend_parser().parse_args([])

        p_args = set_router_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.PULL_CONNECT), '--socket_out',
            str(SocketType.PUSH_CONNECT), '--host_in', '127.0.0.1',
            '--host_out', '127.0.0.1', '--yaml_path', 'BaseRouter'
        ])

        with RouterService(p_args), FrontendService(args) as s:
            CLIClient(cli_args)
Exemplo n.º 17
0
 def test_publish_router(self):
     args = set_router_parser().parse_args([
         '--yaml_path', self.publish_router_yaml,
         '--socket_out', str(SocketType.PUB_BIND)
     ])
     c_args = _set_client_parser().parse_args([
         '--port_in', str(args.port_out),
         '--port_out', str(args.port_in),
         '--socket_in', str(SocketType.SUB_CONNECT)
     ])
     with RouterService(args), ZmqClient(c_args) as c1, ZmqClient(c_args) as c2:
         msg = gnes_pb2.Message()
         msg.request.index.docs.extend([gnes_pb2.Document() for _ in range(5)])
         msg.envelope.num_part.append(1)
         c1.send_message(msg)
         r = c1.recv_message()
         self.assertSequenceEqual(r.envelope.num_part, [1, 2])
         r = c2.recv_message()
         self.assertSequenceEqual(r.envelope.num_part, [1, 2])
Exemplo n.º 18
0
    def test_hc_os_env(self):
        os.environ['GNES_CONTROL_PORT'] = str(56789)
        a = set_router_parser().parse_args([
            '--yaml_path',
            'BaseRouter',
        ])
        a1 = copy.deepcopy(a)
        b = set_healthcheck_parser().parse_args(
            ['--port', os.environ.get('GNES_CONTROL_PORT')])

        # before - fail
        with self.assertRaises(SystemExit) as cm:
            healthcheck(b)

        self.assertEqual(cm.exception.code, 1)

        # running - success
        with self.assertRaises(SystemExit) as cm:
            with RouterService(a):
                time.sleep(2)
                healthcheck(b)
        self.assertEqual(cm.exception.code, 0)

        # running - managerservice - success
        with self.assertRaises(SystemExit) as cm:
            with ServiceManager(RouterService, a1):
                time.sleep(2)
                healthcheck(b)
        self.assertEqual(cm.exception.code, 0)

        # after - fail
        with self.assertRaises(SystemExit) as cm:
            healthcheck(b)

        self.assertEqual(cm.exception.code, 1)
        os.unsetenv('GNES_CONTROL_PORT')
Exemplo n.º 19
0
    def setUp(self):
        dirname = os.path.dirname(__file__)
        self.rerank_router_yaml = os.path.join(dirname, 'yaml',
                                               'test-reranker.yml')
        self.python_code = os.path.join(dirname, '../',
                                        'router/rerank/rerank.py')

        self.test_str = []
        with open(os.path.join(dirname, 'sonnets_small.txt')) as f:
            for line in f:
                line = line.strip()
                if line:
                    self.test_str.append(line)

        self.args = set_router_parser().parse_args([
            '--yaml_path', self.rerank_router_yaml, '--socket_out',
            str(SocketType.PUB_BIND), '--py_path', self.python_code
        ])
        self.c_args = _set_client_parser().parse_args([
            '--port_in',
            str(self.args.port_out), '--port_out',
            str(self.args.port_in), '--socket_in',
            str(SocketType.SUB_CONNECT)
        ])
Exemplo n.º 20
0
    def test_multimap_multireduce(self):
        # p1 ->
        #      p21 ->
        #              r311
        #              r312
        #                   ->  r41
        #                             -> r5
        #      p22 ->
        #              r321
        #              r322
        #                   -> r42
        #                             -> r5
        #                                       -> client
        p1 = set_router_parser().parse_args([
            '--yaml_path', self.publish_router_yaml,
            '--socket_in', str(SocketType.PULL_CONNECT),
            '--socket_out', str(SocketType.PUB_BIND),
        ])
        r5 = set_router_parser().parse_args([
            '--yaml_path', self.reduce_router_yaml,
            '--socket_in', str(SocketType.PULL_BIND),
            '--socket_out', str(SocketType.PUSH_CONNECT),
        ])
        r41 = set_router_parser().parse_args([
            '--yaml_path', self.reduce_router_yaml,
            '--socket_in', str(SocketType.PULL_BIND),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_out', str(r5.port_in)
        ])
        r42 = set_router_parser().parse_args([
            '--yaml_path', self.reduce_router_yaml,
            '--socket_in', str(SocketType.PULL_BIND),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_out', str(r5.port_in)
        ])
        p21 = set_router_parser().parse_args([
            '--yaml_path', self.publish_router_yaml,
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUB_BIND),
            '--port_in', str(p1.port_out)
        ])
        p22 = set_router_parser().parse_args([
            '--yaml_path', self.publish_router_yaml,
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUB_BIND),
            '--port_in', str(p1.port_out)
        ])
        r311 = set_router_parser().parse_args([
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_in', str(p21.port_out),
            '--port_out', str(r41.port_in),
            '--yaml_path', 'BaseRouter'
        ])
        r312 = set_router_parser().parse_args([
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_in', str(p21.port_out),
            '--port_out', str(r41.port_in),
            '--yaml_path', 'BaseRouter'
        ])
        r321 = set_router_parser().parse_args([
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_in', str(p22.port_out),
            '--port_out', str(r42.port_in),
            '--yaml_path', 'BaseRouter'
        ])
        r322 = set_router_parser().parse_args([
            '--socket_in', str(SocketType.SUB_CONNECT),
            '--socket_out', str(SocketType.PUSH_CONNECT),
            '--port_in', str(p22.port_out),
            '--port_out', str(r42.port_in),
            '--yaml_path', 'BaseRouter'
        ])

        c_args = _set_client_parser().parse_args([
            '--port_in', str(r5.port_out),
            '--port_out', str(p1.port_in),
            '--socket_in', str(SocketType.PULL_BIND),
            '--socket_out', str(SocketType.PUSH_BIND),
        ])
        with RouterService(p1), RouterService(r5), \
             RouterService(p21), RouterService(p22), \
             RouterService(r311), RouterService(r312), RouterService(r321), RouterService(r322), \
             RouterService(r41), RouterService(r42), \
             ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()
            msg.envelope.num_part.append(1)
            c1.send_message(msg)
            r = c1.recv_message()
            self.assertSequenceEqual(r.envelope.num_part, [1])
            print(r.envelope.routes)
Exemplo n.º 21
0
 def test_service_empty(self):
     args = set_router_parser().parse_args(['--yaml_path', 'BaseRouter'])
     with RouterService(args):
         pass
Exemplo n.º 22
0
    def test_doc_combine_score_fn(self):
        from gnes.indexer.doc.dict import DictIndexer

        document_list = []
        document_id_list = []

        for j in range(1, 4):
            d = gnes_pb2.Document()
            for i in range(1, 4):
                c = d.chunks.add()
                c.doc_id = j
                c.offset = i
                c.weight = 1 / 3
            document_id_list.append(j)
            document_list.append(d)

        self.chunk_router_yaml = 'Chunk2DocTopkReducer'

        args = set_router_parser().parse_args([
            '--yaml_path', self.chunk_router_yaml, '--socket_out',
            str(SocketType.PUB_BIND)
        ])
        c_args = _set_client_parser().parse_args([
            '--port_in',
            str(args.port_out), '--port_out',
            str(args.port_in), '--socket_in',
            str(SocketType.SUB_CONNECT)
        ])
        with RouterService(args), ZmqClient(c_args) as c1:
            msg = gnes_pb2.Message()
            s = msg.response.search.topk_results.add()
            s.score.value = 0.1
            s.score.explained = '"1-c1"'
            s.chunk.doc_id = 1

            s = msg.response.search.topk_results.add()
            s.score.value = 0.2
            s.score.explained = '"1-c2"'
            s.chunk.doc_id = 2

            s = msg.response.search.topk_results.add()

            s.score.value = 0.3
            s.score.explained = '"1-c3"'
            s.chunk.doc_id = 1

            msg.envelope.num_part.extend([1, 2])
            c1.send_message(msg)

            msg.response.search.ClearField('topk_results')

            s = msg.response.search.topk_results.add()
            s.score.value = 0.2
            s.score.explained = '"2-c1"'
            s.chunk.doc_id = 1

            s = msg.response.search.topk_results.add()
            s.score.value = 0.2
            s.score.explained = '"2-c2"'
            s.chunk.doc_id = 2

            s = msg.response.search.topk_results.add()
            s.score.value = 0.3
            s.score.explained = '"2-c3"'
            s.chunk.doc_id = 3
            c1.send_message(msg)
            r = c1.recv_message()
            doc_indexer = DictIndexer(score_fn=CoordDocScoreFn())
            doc_indexer.add(keys=document_id_list, docs=document_list)

            queried_result = doc_indexer.query_and_score(
                docs=r.response.search.topk_results, top_k=2)