diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-07-13 11:45:59 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-07-13 11:45:59 +0000 |
commit | 589923e168d45c76a230227c1a9dfebd2f5b6990 (patch) | |
tree | 49f8cf95c61d00b96ea8d97cd3a8e972b94be280 /indexinglanguage/src/test | |
parent | bf16cced3bf56c98eb3645f5922efa9d3aad608a (diff) |
try to trap spurious failure
* we have seen spurious failures when verifying output from accent dropping;
so far nothing reproducible, so add some extra logging and retry once
if it happens (in case it's some kind of race-condition glitch).
Diffstat (limited to 'indexinglanguage/src/test')
-rw-r--r-- | indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java index 8b4f1a8b344..3ad1b129b4d 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java @@ -6,8 +6,10 @@ import com.yahoo.document.datatypes.FieldValue; import com.yahoo.document.datatypes.StringFieldValue; import com.yahoo.language.Language; import com.yahoo.language.Linguistics; +import com.yahoo.language.process.Transformer; import com.yahoo.language.simple.SimpleLinguistics; import com.yahoo.vespa.indexinglanguage.SimpleTestAdapter; + import org.junit.Test; import org.mockito.Mockito; @@ -56,4 +58,37 @@ public class NormalizeTestCase { assertTrue(val instanceof StringFieldValue); assertEquals("beyonce", ((StringFieldValue)val).getString()); } + + class MyMockTransformer implements Transformer { + boolean first = true; + @Override + public String accentDrop(String input, Language language) { + if (first) { + first = false; + return input.replace(' ', '\u0008'); + } else { + return input.replace(' ', '/'); + } + } + } + + class MyMockLinguistics extends SimpleLinguistics { + private Transformer transformer = new MyMockTransformer(); + @Override + public Transformer getTransformer() { + return transformer; + } + } + + @Test + public void requireThatBadNormalizeRetries() { + ExecutionContext ctx = new ExecutionContext(new SimpleTestAdapter()); + ctx.setLanguage(Language.ENGLISH); + ctx.setValue(new StringFieldValue("bad norm")); + var linguistics = new MyMockLinguistics(); + new NormalizeExpression(linguistics).execute(ctx); + FieldValue val = ctx.getValue(); + assertTrue(val instanceof StringFieldValue); + assertEquals("bad/norm", ((StringFieldValue)val).getString()); + } } |