diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-02-22 11:51:06 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-02-22 12:04:35 +0100 |
commit | 7d69590e78f7e29dd7288a401e71732211a3b5dd (patch) | |
tree | 74286f892f873ee0309a72529447f2e575cbb15e /model-integration/src/test | |
parent | c5513d25475c78ce6a3ecd5e03b278f3eebca481 (diff) |
Cache Onnx model instances
Manage lifecycle of OnnxEvaluator instances explicitly to allow
instances to be cached without use WeakHashmap/finalizers.
Inject shared Onnx model cache in ModelsEvaluator.
Diffstat (limited to 'model-integration/src/test')
-rw-r--r-- | model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorCacheTest.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorCacheTest.java b/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorCacheTest.java new file mode 100644 index 00000000000..acce660f466 --- /dev/null +++ b/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorCacheTest.java @@ -0,0 +1,38 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package ai.vespa.modelintegration.evaluator; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.mockito.Mockito.mock; + +/** + * @author bjorncs + */ +class OnnxEvaluatorCacheTest { + + @Test + void reuses_instance_while_in_use() { + var cache = new OnnxEvaluatorCache((__, ___) -> mock(OnnxEvaluator.class)); + var referencedEvaluator1 = cache.evaluatorOf("model1", new OnnxEvaluatorOptions()); + var referencedEvaluator2 = cache.evaluatorOf("model1", new OnnxEvaluatorOptions()); + var referencedEvaluator3 = cache.evaluatorOf("model2", new OnnxEvaluatorOptions()); + assertSame(referencedEvaluator1.evaluator(), referencedEvaluator2.evaluator()); + assertNotSame(referencedEvaluator1.evaluator(), referencedEvaluator3.evaluator()); + assertEquals(2, cache.size()); + referencedEvaluator1.close(); + referencedEvaluator2.close(); + assertEquals(1, cache.size()); + referencedEvaluator3.close(); + assertEquals(0, cache.size()); + var referencedEvaluator4 = cache.evaluatorOf("model1", new OnnxEvaluatorOptions()); + assertNotSame(referencedEvaluator1.evaluator(), referencedEvaluator4.evaluator()); + assertEquals(1, cache.size()); + referencedEvaluator4.close(); + assertEquals(0, cache.size()); + } + +}
\ No newline at end of file |