aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2021-08-19 09:22:13 +0200
committerLester Solbakken <lesters@oath.com>2021-08-19 09:22:13 +0200
commit1008380a61d66d8c4b4805758d11395e4a81305d (patch)
tree84afe109b1d06fedcf65fc6e27e20942a0e53a0c /config-model
parent9777847f6f0d40f37c3bedbc0d5a34a1fdeab2e2 (diff)
Add unit test for global rankprofile name collision from onnx models
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx16
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py26
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx16
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx_name_collision/models/foobar.py26
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/services.xml12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java20
6 files changed, 116 insertions, 0 deletions
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx
new file mode 100644
index 00000000000..613af39a958
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx
@@ -0,0 +1,16 @@
+ barfoo.py:T
+
+bar
+bazfoo"MulmulZ
+bar
+
+
+Z
+baz
+
+
+b
+foo
+
+
+B \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py
new file mode 100755
index 00000000000..c9bd7851980
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py
@@ -0,0 +1,26 @@
+# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import onnx
+from onnx import helper, TensorProto
+
+INPUT_1 = helper.make_tensor_value_info('bar', TensorProto.FLOAT, [1])
+INPUT_2 = helper.make_tensor_value_info('baz', TensorProto.FLOAT, [1])
+OUTPUT = helper.make_tensor_value_info('foo', TensorProto.FLOAT, [1])
+
+nodes = [
+ helper.make_node(
+ 'Mul',
+ ['bar', 'baz'],
+ ['foo'],
+ ),
+]
+graph_def = helper.make_graph(
+ nodes,
+ 'mul',
+ [
+ INPUT_1,
+ INPUT_2
+ ],
+ [OUTPUT],
+)
+model_def = helper.make_model(graph_def, producer_name='barfoo.py', opset_imports=[onnx.OperatorSetIdProto(version=12)])
+onnx.save(model_def, 'barfoo.onnx')
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx
new file mode 100644
index 00000000000..a393e33094a
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx
@@ -0,0 +1,16 @@
+ foobar.py:T
+
+foo
+bazbat"MulmulZ
+foo
+
+
+Z
+baz
+
+
+b
+bar
+
+
+B \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py
new file mode 100755
index 00000000000..c3e0667aeaa
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py
@@ -0,0 +1,26 @@
+# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import onnx
+from onnx import helper, TensorProto
+
+INPUT_1 = helper.make_tensor_value_info('foo', TensorProto.FLOAT, [1])
+INPUT_2 = helper.make_tensor_value_info('baz', TensorProto.FLOAT, [1])
+OUTPUT = helper.make_tensor_value_info('bar', TensorProto.FLOAT, [1])
+
+nodes = [
+ helper.make_node(
+ 'Mul',
+ ['foo', 'baz'],
+ ['bat'],
+ ),
+]
+graph_def = helper.make_graph(
+ nodes,
+ 'mul',
+ [
+ INPUT_1,
+ INPUT_2
+ ],
+ [OUTPUT],
+)
+model_def = helper.make_model(graph_def, producer_name='foobar.py', opset_imports=[onnx.OperatorSetIdProto(version=12)])
+onnx.save(model_def, 'foobar.onnx')
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/services.xml b/config-model/src/test/cfg/application/onnx_name_collision/services.xml
new file mode 100644
index 00000000000..51fdf976f7f
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/services.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <container version="1.0">
+ <model-evaluation/>
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
index 5c64dd9f8cd..7d3d36bf5b3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
@@ -38,6 +38,26 @@ import static org.junit.Assert.assertTrue;
public class StatelessOnnxEvaluationTest {
@Test
+ public void testStatelessOnnxModelNameCollision() throws IOException {
+ Path appDir = Path.fromString("src/test/cfg/application/onnx_name_collision");
+ try {
+ ImportedModelTester tester = new ImportedModelTester("onnx", appDir);
+ VespaModel model = tester.createVespaModel();
+ ApplicationContainerCluster cluster = model.getContainerClusters().get("container");
+ RankProfilesConfig.Builder b = new RankProfilesConfig.Builder();
+ cluster.getConfig(b);
+ RankProfilesConfig config = new RankProfilesConfig(b);
+ assertEquals(2, config.rankprofile().size());
+
+ Set<String> modelNames = config.rankprofile().stream().map(v -> v.name()).collect(Collectors.toSet());
+ assertTrue(modelNames.contains("foobar"));
+ assertTrue(modelNames.contains("barfoo"));
+ } finally {
+ IOUtils.recursiveDeleteDir(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile());
+ }
+ }
+
+ @Test
public void testStatelessOnnxModelEvaluation() throws IOException {
Path appDir = Path.fromString("src/test/cfg/application/onnx");
Path storedAppDir = appDir.append("copy");