def test_model_feedback_ok(): user_object = UserObject() app = get_rest_microservice(user_object, debug=True) client = app.test_client() rv = client.get('/send-feedback?json={"request":{"data":{"ndarray":[]}},"reward":1.0}') j = json.loads(rv.data) print(j) assert rv.status_code == 200
def test_model_bad_metrics(): user_object = UserObject(metrics_ok=False) app = get_rest_microservice(user_object, debug=True) client = app.test_client() rv = client.get('/predict?json={"data":{"ndarray":[]}}') j = json.loads(rv.data) print(j) assert rv.status_code == 400
def rest_prediction_server(): app = seldon_microservice.get_rest_microservice( user_object, debug=DEBUG) if args.tracing: from flask_opentracing import FlaskTracer tracing = FlaskTracer(tracer,True, app) app.run(host='0.0.0.0', port=port)
def test_model_lowlevel_ok(): user_object = UserObjectLowLevel() app = get_rest_microservice(user_object, debug=True) client = app.test_client() rv = client.get('/predict?json={"data":{"ndarray":[1,2]}}') j = json.loads(rv.data) print(j) assert rv.status_code == 200 assert j["data"]["ndarray"] == [9, 9]
def test_model_no_json(): user_object = UserObject() app = get_rest_microservice(user_object, debug=True) client = app.test_client() uo = UserObject() rv = client.get('/predict?') j = json.loads(rv.data) print(j) assert rv.status_code == 400
def test_model_ok(): user_object = UserObject() app = get_rest_microservice(user_object, debug=True) client = app.test_client() rv = client.get('/predict?json={"data":{"ndarray":[]}}') j = json.loads(rv.data) print(j) assert rv.status_code == 200 assert j["meta"]["tags"] == {"mytag": 1} assert j["meta"]["metrics"] == user_object.metrics()
def test_model_bin_data_nparray(): user_object = UserObject(ret_nparray=True) app = get_rest_microservice(user_object, debug=True) client = app.test_client() rv = client.get('/predict?json={"binData":"123"}') j = json.loads(rv.data) print(j) assert rv.status_code == 200 assert j["data"]["ndarray"] == [1, 2, 3] assert j["meta"]["tags"] == {"mytag": 1} assert j["meta"]["metrics"] == user_object.metrics()
def test_model_bin_data(): user_object = UserObject() app = get_rest_microservice(user_object, debug=True) client = app.test_client() bdata = b"123" bdata_base64 = base64.b64encode(bdata).decode('utf-8') rv = client.get('/predict?json={"binData":"' + bdata_base64 + '"}') j = json.loads(rv.data) sm = prediction_pb2.SeldonMessage() # Check we can parse response assert sm == json_format.Parse(rv.data, sm, ignore_unknown_fields=False) print(j) assert rv.status_code == 200 assert j["binData"] == bdata_base64 assert j["meta"]["tags"] == {"mytag": 1} assert j["meta"]["metrics"] == user_object.metrics()
def test_model_tftensor_ok(): user_object = UserObject() app = get_rest_microservice(user_object, debug=True) client = app.test_client() arr = np.array([1, 2]) datadef = prediction_pb2.DefaultData( tftensor=tf.make_tensor_proto(arr) ) request = prediction_pb2.SeldonMessage(data=datadef) jStr = json_format.MessageToJson(request) rv = client.get('/predict?json=' + jStr) j = json.loads(rv.data) print(j) assert rv.status_code == 200 assert j["meta"]["tags"] == {"mytag": 1} assert j["meta"]["metrics"] == user_object.metrics() assert 'tftensor' in j['data'] tfp = TensorProto() json_format.ParseDict(j['data'].get("tftensor"), tfp, ignore_unknown_fields=False) arr2 = tf.make_ndarray(tfp) assert np.array_equal(arr, arr2)
def rest_prediction_server(): app = seldon_microservice.get_rest_microservice(user_object, debug=DEBUG) app.run(host='0.0.0.0', port=port)