|
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 |
|
| 18 | +import pytest |
18 | 19 | import tensorflow.compat.v1 as tf |
19 | 20 |
|
| 21 | +from google.cloud.aiplatform import models |
20 | 22 | from google.cloud.aiplatform.explain.metadata.tf.v1 import saved_model_metadata_builder |
21 | | -from google.cloud.aiplatform.compat.types import ( |
22 | | - explanation_metadata_v1beta1 as explanation_metadata, |
23 | | -) |
| 23 | +from google.cloud.aiplatform.compat.types import explanation_metadata |
| 24 | + |
| 25 | +import test_models |
| 26 | +from test_models import upload_model_mock, get_model_mock # noqa: F401 |
24 | 27 |
|
25 | 28 |
|
26 | 29 | class SavedModelMetadataBuilderTF1Test(tf.test.TestCase): |
@@ -108,3 +111,28 @@ def test_get_metadata_protobuf_double_output(self): |
108 | 111 | ) |
109 | 112 |
|
110 | 113 | assert md_builder.get_metadata_protobuf() == expected_object |
| 114 | + |
| 115 | + @pytest.mark.usefixtures("upload_model_mock", "get_model_mock") |
| 116 | + def test_model_upload_compatibility(self): |
| 117 | + self._set_up() |
| 118 | + md_builder = saved_model_metadata_builder.SavedModelMetadataBuilder( |
| 119 | + self.model_path, tags=[tf.saved_model.tag_constants.SERVING] |
| 120 | + ) |
| 121 | + |
| 122 | + generated_md = md_builder.get_metadata_protobuf() |
| 123 | + |
| 124 | + try: |
| 125 | + models.Model.upload( |
| 126 | + display_name=test_models._TEST_MODEL_NAME, |
| 127 | + serving_container_image_uri=test_models._TEST_SERVING_CONTAINER_IMAGE, |
| 128 | + explanation_parameters=test_models._TEST_EXPLANATION_PARAMETERS, |
| 129 | + explanation_metadata=generated_md, # Test metadata from builder |
| 130 | + labels=test_models._TEST_LABEL, |
| 131 | + ) |
| 132 | + except TypeError as e: |
| 133 | + if "Parameter to MergeFrom() must be instance of same class" in str(e): |
| 134 | + pytest.fail( |
| 135 | + f"Model.upload() expects different proto version, more info: {e}" |
| 136 | + ) |
| 137 | + else: |
| 138 | + raise e |
0 commit comments