示例#1
0
    def test_mnist_happy_path(self):
        input_data_file = os.path.join(self.test_data_path,
                                       'mnist_test_data_set_0_input.json')
        output_data_file = os.path.join(self.test_data_path,
                                        'mnist_test_data_set_0_output.json')

        with open(input_data_file, 'r') as f:
            request_payload = f.read()

        with open(output_data_file, 'r') as f:
            expected_response_json = f.read()
            expected_response = json.loads(expected_response_json)

        request_headers = {
            'Content-Type': 'application/json',
            'Accept': 'application/json',
            'x-ms-client-request-id': 'This~is~my~id'
        }

        url = self.url_pattern.format(self.server_ip, self.server_port,
                                      'default_model', 12345)
        test_util.test_log(url)
        r = requests.post(url, headers=request_headers, data=request_payload)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.headers.get('Content-Type'), 'application/json')
        self.assertTrue(r.headers.get('x-ms-request-id'))
        self.assertEqual(r.headers.get('x-ms-client-request-id'),
                         'This~is~my~id')

        actual_response = json.loads(r.content.decode('utf-8'))

        # Note:
        # The 'dims' field is defined as "repeated int64" in protobuf.
        # When it is serialized to JSON, all int64/fixed64/uint64 numbers are converted to string
        # Reference: https://developers.google.com/protocol-buffers/docs/proto3#json

        self.assertTrue(actual_response['outputs'])
        self.assertTrue(actual_response['outputs']['Plus214_Output_0'])
        self.assertTrue(actual_response['outputs']['Plus214_Output_0']['dims'])
        self.assertEqual(
            actual_response['outputs']['Plus214_Output_0']['dims'],
            ['1', '10'])
        self.assertTrue(
            actual_response['outputs']['Plus214_Output_0']['dataType'])
        self.assertEqual(
            actual_response['outputs']['Plus214_Output_0']['dataType'], 1)
        self.assertTrue(
            actual_response['outputs']['Plus214_Output_0']['rawData'])
        actual_data = test_util.decode_base64_string(
            actual_response['outputs']['Plus214_Output_0']['rawData'], '10f')
        expected_data = test_util.decode_base64_string(
            expected_response['outputs']['Plus214_Output_0']['rawData'], '10f')

        for i in range(0, 10):
            self.assertTrue(
                test_util.compare_floats(actual_data[i], expected_data[i]))
示例#2
0
    def test_mnist_happy_path(self):
        input_data_file = os.path.join(self.test_data_path,
                                       "mnist_test_data_set_0_input.json")
        output_data_file = os.path.join(self.test_data_path,
                                        "mnist_test_data_set_0_output.json")

        with open(input_data_file, "r") as f:
            request_payload = f.read()

        with open(output_data_file, "r") as f:
            expected_response_json = f.read()
            expected_response = json.loads(expected_response_json)

        request_headers = {
            "Content-Type": "application/json",
            "Accept": "application/json",
            "x-ms-client-request-id": "This~is~my~id",
        }

        url = self.url_pattern.format(self.server_ip, self.server_port,
                                      "default", 1)
        test_util.test_log(url)
        r = requests.post(url, headers=request_headers, data=request_payload)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.headers.get("Content-Type"), "application/json")
        self.assertTrue(r.headers.get("x-ms-request-id"))
        self.assertEqual(r.headers.get("x-ms-client-request-id"),
                         "This~is~my~id")

        actual_response = json.loads(r.content.decode("utf-8"))

        # Note:
        # The 'dims' field is defined as "repeated int64" in protobuf.
        # When it is serialized to JSON, all int64/fixed64/uint64 numbers are converted to string
        # Reference: https://developers.google.com/protocol-buffers/docs/proto3#json

        self.assertTrue(actual_response["outputs"])
        self.assertTrue(actual_response["outputs"]["Plus214_Output_0"])
        self.assertTrue(actual_response["outputs"]["Plus214_Output_0"]["dims"])
        self.assertEqual(
            actual_response["outputs"]["Plus214_Output_0"]["dims"],
            ["1", "10"])
        self.assertTrue(
            actual_response["outputs"]["Plus214_Output_0"]["dataType"])
        self.assertEqual(
            actual_response["outputs"]["Plus214_Output_0"]["dataType"], 1)
        self.assertTrue(
            actual_response["outputs"]["Plus214_Output_0"]["rawData"])
        actual_data = test_util.decode_base64_string(
            actual_response["outputs"]["Plus214_Output_0"]["rawData"], "10f")
        expected_data = test_util.decode_base64_string(
            expected_response["outputs"]["Plus214_Output_0"]["rawData"], "10f")

        for i in range(0, 10):
            self.assertTrue(
                test_util.compare_floats(actual_data[i], expected_data[i]))