aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-12-09 22:42:19 +0100
committerJon Bratseth <bratseth@gmail.com>2021-12-09 22:42:19 +0100
commit73d01f281f0951d3e215b67bd8ce7eb653bd1d4f (patch)
tree5037abf30cb550dd6da3a4dca2283122c526d5a6 /container-search
parent8b50a53485999cbae22852cd1a11489d50d018f5 (diff)
parent68dbb0d83a1846fc729cef36985956b002f6d7e4 (diff)
Merge branch 'master' into bratseth/ignore-warmup-period
Diffstat (limited to 'container-search')
-rw-r--r--container-search/abi-spec.json7
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java26
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/Renderer.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroup.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java54
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java22
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java32
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java11
10 files changed, 106 insertions, 77 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 183bb33b4f4..f7176b0982a 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -4301,6 +4301,8 @@
"public void <init>(int, com.yahoo.search.Result, com.yahoo.search.Query, com.yahoo.processing.rendering.Renderer)",
"public com.google.common.util.concurrent.ListenableFuture waitableRender(java.io.OutputStream)",
"public static com.google.common.util.concurrent.ListenableFuture waitableRender(com.yahoo.search.Result, com.yahoo.search.Query, com.yahoo.processing.rendering.Renderer, java.io.OutputStream)",
+ "public java.util.concurrent.CompletableFuture asyncRender(java.io.OutputStream)",
+ "public static java.util.concurrent.CompletableFuture asyncRender(com.yahoo.search.Result, com.yahoo.search.Query, com.yahoo.processing.rendering.Renderer, java.io.OutputStream)",
"public void render(java.io.OutputStream, com.yahoo.jdisc.handler.ContentChannel, com.yahoo.jdisc.handler.CompletionHandler)",
"public void populateAccessLogEntry(com.yahoo.container.logging.AccessLogEntry)",
"public java.lang.String getParsedQuery()",
@@ -7201,13 +7203,13 @@
],
"methods": [
"public void <init>()",
- "public final com.google.common.util.concurrent.ListenableFuture render(java.io.OutputStream, com.yahoo.search.Result, com.yahoo.processing.execution.Execution, com.yahoo.processing.Request)",
+ "public final java.util.concurrent.CompletableFuture renderResponse(java.io.OutputStream, com.yahoo.search.Result, com.yahoo.processing.execution.Execution, com.yahoo.processing.Request)",
"protected abstract void render(java.io.Writer, com.yahoo.search.Result)",
"public java.lang.String getCharacterEncoding(com.yahoo.search.Result)",
"public java.lang.String getDefaultSummaryClass()",
"public final java.lang.String getRequestedEncoding(com.yahoo.search.Query)",
"public com.yahoo.search.rendering.Renderer clone()",
- "public bridge synthetic com.google.common.util.concurrent.ListenableFuture render(java.io.OutputStream, com.yahoo.processing.Response, com.yahoo.processing.execution.Execution, com.yahoo.processing.Request)",
+ "public bridge synthetic java.util.concurrent.CompletableFuture renderResponse(java.io.OutputStream, com.yahoo.processing.Response, com.yahoo.processing.execution.Execution, com.yahoo.processing.Request)",
"public bridge synthetic com.yahoo.processing.rendering.Renderer clone()",
"public bridge synthetic com.yahoo.component.AbstractComponent clone()",
"public bridge synthetic java.lang.Object clone()"
@@ -7703,6 +7705,7 @@
"public java.util.Set getFilled()",
"public com.yahoo.processing.response.IncomingData incoming()",
"public com.google.common.util.concurrent.ListenableFuture complete()",
+ "public java.util.concurrent.CompletableFuture completeFuture()",
"public void addDataListener(java.lang.Runnable)",
"public void close()",
"public bridge synthetic com.yahoo.search.result.Hit clone()",
diff --git a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
index 5c897245e64..64e7403fa1a 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
@@ -3,6 +3,7 @@ package com.yahoo.search.handler;
import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.collections.ListMap;
+import com.yahoo.concurrent.CompletableFutures;
import com.yahoo.container.handler.Coverage;
import com.yahoo.container.handler.Timing;
import com.yahoo.container.jdisc.ExtendedResponse;
@@ -25,6 +26,7 @@ import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CompletableFuture;
/**
* Wrap the result of a query as an HTTP response.
@@ -75,20 +77,36 @@ public class HttpSearchResponse extends ExtendedResponse {
}
}
+ /** @deprecated Use {@link #asyncRender(OutputStream)} instead */
+ @Deprecated(forRemoval = true, since = "7")
public ListenableFuture<Boolean> waitableRender(OutputStream stream) throws IOException {
return waitableRender(result, query, rendererCopy, stream);
}
+ /** @deprecated Use {@link #asyncRender(Result, Query, Renderer, OutputStream)} instead */
+ @Deprecated(forRemoval = true, since = "7")
+ @SuppressWarnings("removal")
public static ListenableFuture<Boolean> waitableRender(Result result,
Query query,
Renderer<Result> renderer,
OutputStream stream) throws IOException {
+ return CompletableFutures.toGuavaListenableFuture(asyncRender(result, query, renderer, stream));
+ }
+
+ public CompletableFuture<Boolean> asyncRender(OutputStream stream) {
+ return asyncRender(result, query, rendererCopy, stream);
+ }
+
+ public static CompletableFuture<Boolean> asyncRender(Result result,
+ Query query,
+ Renderer<Result> renderer,
+ OutputStream stream) {
SearchResponse.trimHits(result);
SearchResponse.removeEmptySummaryFeatureFields(result);
- return renderer.render(stream, result, query.getModel().getExecution(), query);
-
+ return renderer.renderResponse(stream, result, query.getModel().getExecution(), query);
}
+
@Override
public void render(OutputStream output, ContentChannel networkChannel, CompletionHandler handler) throws IOException {
if (rendererCopy instanceof AsynchronousSectionedRenderer) {
@@ -98,9 +116,9 @@ public class HttpSearchResponse extends ExtendedResponse {
try {
try {
long nanoStart = System.nanoTime();
- ListenableFuture<Boolean> promise = waitableRender(output);
+ CompletableFuture<Boolean> promise = asyncRender(output);
if (metric != null) {
- promise.addListener(new RendererLatencyReporter(nanoStart), Runnable::run);
+ promise.whenComplete((__, ___) -> new RendererLatencyReporter(nanoStart).run());
}
} finally {
if (!(rendererCopy instanceof AsynchronousSectionedRenderer)) {
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
index b8a7f0d1978..6ff8f003f7e 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
@@ -1,19 +1,18 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import com.yahoo.search.Query;
-import com.yahoo.search.Result;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import com.yahoo.io.ByteWriter;
import com.yahoo.processing.Request;
import com.yahoo.processing.execution.Execution;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
+import java.util.concurrent.CompletableFuture;
/**
* Renders a search result to a writer synchronously
@@ -37,7 +36,7 @@ abstract public class Renderer extends com.yahoo.processing.rendering.Renderer<R
* @return a future which is always completed to true
*/
@Override
- public final ListenableFuture<Boolean> render(OutputStream stream, Result response, Execution execution, Request request) {
+ public final CompletableFuture<Boolean> renderResponse(OutputStream stream, Result response, Execution execution, Request request) {
Writer writer = null;
try {
writer = createWriter(stream, response);
@@ -50,8 +49,8 @@ abstract public class Renderer extends com.yahoo.processing.rendering.Renderer<R
if (writer != null)
try { writer.close(); } catch (IOException e2) {};
}
- SettableFuture<Boolean> completed = SettableFuture.create();
- completed.set(true);
+ CompletableFuture<Boolean> completed = new CompletableFuture<>();
+ completed.complete(true);
return completed;
}
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
index 1ae3f4e60cc..6d09bf66175 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
@@ -5,6 +5,7 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.collections.ListenableArrayList;
+import com.yahoo.concurrent.CompletableFutures;
import com.yahoo.net.URI;
import com.yahoo.prelude.fastsearch.SortDataHitSorter;
import com.yahoo.processing.response.ArrayDataList;
@@ -19,6 +20,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@@ -84,7 +86,7 @@ public class HitGroup extends Hit implements DataList<Hit>, Cloneable, Iterable<
*/
private DefaultErrorHit errorHit = null;
- private final ListenableFuture<DataList<Hit>> completedFuture;
+ private final CompletableFuture<DataList<Hit>> completedFuture;
private final IncomingData<Hit> incomingHits;
@@ -965,7 +967,13 @@ public class HitGroup extends Hit implements DataList<Hit>, Cloneable, Iterable<
public IncomingData<Hit> incoming() { return incomingHits; }
@Override
- public ListenableFuture<DataList<Hit>> complete() { return completedFuture; }
+ @SuppressWarnings("removal")
+ @Deprecated(forRemoval = true, since = "7")
+ public ListenableFuture<DataList<Hit>> complete() {
+ return CompletableFutures.toGuavaListenableFuture(completedFuture);
+ }
+
+ @Override public CompletableFuture<DataList<Hit>> completeFuture() { return completedFuture; }
@Override
public void addDataListener(Runnable runnable) {
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
index 0819cbd72b4..b39c170c6a3 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
@@ -53,7 +53,7 @@ public class ExecutionAbstractTestCase {
assertRendered(result,resultFileName,false);
}
- @SuppressWarnings("deprecation")
+ @SuppressWarnings({"deprecation", "removal"})
protected void assertRendered(Result result, String resultFileName, boolean print) {
try {
PageTemplatesXmlRenderer renderer = new PageTemplatesXmlRenderer();
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
index 359aed85d30..7db29568d5b 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
@@ -1,23 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.junit.Test;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.concurrent.Receiver;
import com.yahoo.processing.response.Data;
import com.yahoo.processing.response.DataList;
@@ -29,6 +13,20 @@ import com.yahoo.search.result.HitGroup;
import com.yahoo.search.result.Relevance;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.text.Utf8;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.function.BiConsumer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* Test adding hits to a hit group during rendering.
@@ -36,18 +34,20 @@ import com.yahoo.text.Utf8;
* @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
*/
public class AsyncGroupPopulationTestCase {
- private static class WrappedFuture<F> implements ListenableFuture<F> {
+ private static class WrappedFuture<F> extends CompletableFuture<F> {
Receiver<Boolean> isListening = new Receiver<>();
- private ListenableFuture<F> wrapped;
+ private final CompletableFuture<F> wrapped;
- WrappedFuture(ListenableFuture<F> wrapped) {
+ WrappedFuture(CompletableFuture<F> wrapped) {
this.wrapped = wrapped;
}
- public void addListener(Runnable listener, Executor executor) {
- wrapped.addListener(listener, executor);
+ @Override
+ public CompletableFuture<F> whenCompleteAsync(BiConsumer<? super F, ? super Throwable> action, Executor executor) {
+ wrapped.whenCompleteAsync(action);
isListening.put(Boolean.TRUE);
+ return this;
}
public boolean cancel(boolean mayInterruptIfRunning) {
@@ -73,14 +73,14 @@ public class AsyncGroupPopulationTestCase {
}
private static class ObservableIncoming<DATATYPE extends Data> extends DefaultIncomingData<DATATYPE> {
- WrappedFuture<DataList<DATATYPE>> waitForIt = null;
+ volatile WrappedFuture<DataList<DATATYPE>> waitForIt = null;
private final Object lock = new Object();
@Override
- public ListenableFuture<DataList<DATATYPE>> completed() {
+ public CompletableFuture<DataList<DATATYPE>> completedFuture() {
synchronized (lock) {
if (waitForIt == null) {
- waitForIt = new WrappedFuture<>(super.completed());
+ waitForIt = new WrappedFuture<>(super.completedFuture());
}
}
return waitForIt;
@@ -99,7 +99,7 @@ public class AsyncGroupPopulationTestCase {
@Test
public final void test() throws InterruptedException, ExecutionException,
- JsonParseException, JsonMappingException, IOException {
+ IOException {
String rawExpected = "{"
+ " \"root\": {"
+ " \"children\": ["
@@ -125,10 +125,10 @@ public class AsyncGroupPopulationTestCase {
JsonRenderer renderer = new JsonRenderer();
Result result = new Result(new Query(), h);
renderer.init();
- ListenableFuture<Boolean> f = renderer.render(out, result,
+ CompletableFuture<Boolean> f = renderer.renderResponse(out, result,
new Execution(Execution.Context.createContextStub()),
result.getQuery());
- WrappedFuture<DataList<Hit>> x = (WrappedFuture<DataList<Hit>>) h.incoming().completed();
+ WrappedFuture<DataList<Hit>> x = (WrappedFuture<DataList<Hit>>) h.incoming().completedFuture();
x.isListening.get(86_400_000);
h.incoming().add(new Hit("yahoo2"));
h.incoming().markComplete();
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index 7395b4802a0..f3a71af0b9e 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -364,6 +364,7 @@ public class JsonRendererTestCase {
}
@Test
+ @SuppressWarnings("removal")
public void testEmptyTracing() throws IOException, InterruptedException, ExecutionException {
String expected = "{"
+ " \"root\": {"
@@ -391,7 +392,7 @@ public class JsonRendererTestCase {
assertEqualJson(expected, summary);
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"unchecked", "removal"})
@Test
public void testTracingWithEmptySubtree() throws IOException, InterruptedException, ExecutionException {
String expected = "{"
@@ -1372,6 +1373,7 @@ public class JsonRendererTestCase {
return render(execution, r);
}
+ @SuppressWarnings("removal")
private String render(Execution execution, Result r) throws InterruptedException, ExecutionException {
ByteArrayOutputStream bs = new ByteArrayOutputStream();
ListenableFuture<Boolean> f = renderer.render(bs, r, execution, null);
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
index ae1eade12d3..99911276f50 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
@@ -1,17 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.concurrent.ExecutionException;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.component.chain.Chain;
import com.yahoo.prelude.fastsearch.FastHit;
@@ -26,6 +15,15 @@ import com.yahoo.search.statistics.ElapsedTimeTestCase.CreativeTimeSource;
import com.yahoo.search.statistics.ElapsedTimeTestCase.UselessSearcher;
import com.yahoo.search.statistics.TimeTracker;
import com.yahoo.text.Utf8;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.util.concurrent.ExecutionException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* Check the legacy sync default renderer doesn't spontaneously combust.
@@ -56,7 +54,7 @@ public class SyncDefaultRendererTestCase {
assertEquals("text/xml", d.getMimeType());
}
- @SuppressWarnings("deprecation")
+ @SuppressWarnings({"deprecation", "removal"})
@Test
public void testRenderWriterResult() throws InterruptedException, ExecutionException {
Query q = new Query("/?query=a&tracelevel=5");
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
index 0fad449763f..b3534d580d8 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
@@ -1,39 +1,36 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import static org.junit.Assert.*;
-
-import java.io.ByteArrayOutputStream;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
+import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.component.ComponentId;
+import com.yahoo.component.chain.Chain;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.prelude.Index;
import com.yahoo.prelude.IndexFacts;
import com.yahoo.prelude.IndexModel;
import com.yahoo.prelude.SearchDefinition;
-import com.yahoo.prelude.searcher.JuniperSearcher;
-import com.yahoo.search.result.Hit;
-import com.yahoo.search.result.Relevance;
-import com.yahoo.search.searchchain.Execution;
-import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher;
-import org.junit.Test;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import com.yahoo.component.chain.Chain;
import com.yahoo.prelude.fastsearch.FastHit;
+import com.yahoo.prelude.searcher.JuniperSearcher;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
import com.yahoo.search.result.Coverage;
import com.yahoo.search.result.ErrorMessage;
+import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
+import com.yahoo.search.result.Relevance;
+import com.yahoo.search.searchchain.Execution;
+import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher;
import com.yahoo.search.statistics.ElapsedTimeTestCase;
-import com.yahoo.search.statistics.TimeTracker;
import com.yahoo.search.statistics.ElapsedTimeTestCase.CreativeTimeSource;
+import com.yahoo.search.statistics.TimeTracker;
import com.yahoo.text.Utf8;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* Test the XML renderer
@@ -158,6 +155,7 @@ public class XMLRendererTestCase {
assertTrue(summary.contains("<meta type=\"context\">"));
}
+ @SuppressWarnings("removal")
private String render(Result result) throws Exception {
XmlRenderer renderer = new XmlRenderer();
renderer.init();
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
index 9c36971f688..2426b18f018 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
@@ -2,7 +2,8 @@
package com.yahoo.search.searchchain.test;
import com.yahoo.component.ComponentId;
-import com.yahoo.processing.response.*;
+import com.yahoo.component.chain.Chain;
+import com.yahoo.processing.response.IncomingData;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
@@ -11,18 +12,18 @@ import com.yahoo.search.federation.sourceref.SearchChainResolver;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
import com.yahoo.search.searchchain.Execution;
-
import com.yahoo.search.searchchain.SearchChainRegistry;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
import org.junit.Test;
-import static org.junit.Assert.*;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import com.yahoo.component.chain.Chain;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
/**
* Tests using the async capabilities of the Processing parent framework of searchers.
@@ -31,6 +32,7 @@ import com.yahoo.component.chain.Chain;
*/
public class FutureDataTestCase {
+ @SuppressWarnings("removal")
@Test
public void testAsyncFederation() throws InterruptedException, ExecutionException {
// Setup environment
@@ -77,6 +79,7 @@ public class FutureDataTestCase {
assertEquals("async:1", asyncGroup.get(1).getId().toString());
}
+ @SuppressWarnings("removal")
@Test
public void testFutureData() throws InterruptedException, ExecutionException, TimeoutException {
// Set up