aboutsummaryrefslogtreecommitdiffstats
path: root/indexinglanguage/src/test/java
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-07-13 11:45:59 +0000
committerArne Juul <arnej@verizonmedia.com>2021-07-13 11:45:59 +0000
commit589923e168d45c76a230227c1a9dfebd2f5b6990 (patch)
tree49f8cf95c61d00b96ea8d97cd3a8e972b94be280 /indexinglanguage/src/test/java
parentbf16cced3bf56c98eb3645f5922efa9d3aad608a (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/java')
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java35
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());
+ }
}