def test_model_combiner_grpc(self, namespace, s2i_python_version): create_push_s2i_image(s2i_python_version, "one", "grpc") create_push_s2i_image(s2i_python_version, "two", "grpc") create_push_s2i_image(s2i_python_version, "combiner", "grpc") retry_run( f"kubectl apply -f ../resources/tags_combiner_grpc.json -n {namespace}" ) wait_for_status("mymodel-tags-combiner", namespace) wait_for_rollout("mymodel-tags-combiner", namespace) r = initial_grpc_request("mymodel-tags-combiner", namespace) arr = np.array([[1, 2, 3]]) r = grpc_request_ambassador("mymodel-tags-combiner", namespace, API_AMBASSADOR, data=arr) res = json.loads(json_format.MessageToJson(r)) logging.info(res) # assert r.status_code == 200 assert res["data"]["ndarray"] == [["model-1"], ["model-2"]] assert res["meta"]["tags"] == { "combiner": "yes", "common": 2, "model-1": "yes", "model-2": "yes", } run( f"kubectl delete -f ../resources/tags_combiner_grpc.json -n {namespace}", shell=True, )
def test_modelmetadata_grpc(self, namespace, s2i_python_version): create_push_s2i_image(s2i_python_version, "modelmetadata", "grpc") retry_run( f"kubectl apply -f ../resources/metadata_modelmetadata_grpc.yaml -n {namespace}" ) wait_for_status("mymodel-modelmetadata", namespace) wait_for_rollout("mymodel-modelmetadata", namespace) r = initial_grpc_request("mymodel-modelmetadata", namespace) r = grpc_request_ambassador_metadata( "mymodel-modelmetadata", namespace, model_name="my-model" ) res = json.loads(json_format.MessageToJson(r)) logging.info(res) # Cast reference model metadata to proto and back in order to have int->float # infamous casting in google.protobuf.Value metadata_proto = prediction_pb2.SeldonModelMetadata() json_format.ParseDict( model_metadata, metadata_proto, ignore_unknown_fields=True ) assert res == json.loads(json_format.MessageToJson(metadata_proto)) r = grpc_request_ambassador_metadata("mymodel-modelmetadata", namespace) res = json.loads(json_format.MessageToJson(r)) logging.info(res) graph_metadata_proto = prediction_pb2.SeldonGraphMetadata() json_format.ParseDict( graph_metadata_grpc, graph_metadata_proto, ignore_unknown_fields=True ) assert res == json.loads(json_format.MessageToJson(graph_metadata_proto))