make SqlResource laning test less sensitive to timing (#11032)

* make laning test less sensitive to timing

* style
This commit is contained in:
Clint Wylie 2021-03-26 03:43:28 -07:00 committed by GitHub
parent f160548231
commit bacad04aa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 1 deletions

View File

@ -35,8 +35,11 @@ import org.apache.druid.java.util.common.ISE;
import org.apache.druid.java.util.common.Pair; import org.apache.druid.java.util.common.Pair;
import org.apache.druid.java.util.common.StringUtils; import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.java.util.common.concurrent.Execs; import org.apache.druid.java.util.common.concurrent.Execs;
import org.apache.druid.java.util.common.guava.LazySequence;
import org.apache.druid.java.util.common.guava.Sequence;
import org.apache.druid.java.util.common.io.Closer; import org.apache.druid.java.util.common.io.Closer;
import org.apache.druid.math.expr.ExprMacroTable; import org.apache.druid.math.expr.ExprMacroTable;
import org.apache.druid.query.Query;
import org.apache.druid.query.QueryCapacityExceededException; import org.apache.druid.query.QueryCapacityExceededException;
import org.apache.druid.query.QueryContexts; import org.apache.druid.query.QueryContexts;
import org.apache.druid.query.QueryException; import org.apache.druid.query.QueryException;
@ -105,6 +108,8 @@ public class SqlResourceTest extends CalciteTestBase
private HttpServletRequest req; private HttpServletRequest req;
private ListeningExecutorService executorService; private ListeningExecutorService executorService;
private boolean sleep = false;
@BeforeClass @BeforeClass
public static void setUpClass() public static void setUpClass()
{ {
@ -126,7 +131,27 @@ public class SqlResourceTest extends CalciteTestBase
ManualQueryPrioritizationStrategy.INSTANCE, ManualQueryPrioritizationStrategy.INSTANCE,
new HiLoQueryLaningStrategy(40), new HiLoQueryLaningStrategy(40),
new ServerConfig() new ServerConfig()
)
{
@Override
public <T> Sequence<T> run(Query<?> query, Sequence<T> resultSequence)
{
return super.run(
query,
new LazySequence<T>(() -> {
if (sleep) {
try {
// pretend to be a query that is waiting on results
Thread.sleep(500);
}
catch (InterruptedException ignored) {
}
}
return resultSequence;
})
); );
}
};
executorService = MoreExecutors.listeningDecorator(Execs.multiThreaded(8, "test_sql_resource_%s")); executorService = MoreExecutors.listeningDecorator(Execs.multiThreaded(8, "test_sql_resource_%s"));
walker = CalciteTests.createMockWalker(conglomerate, temporaryFolder.newFolder(), scheduler); walker = CalciteTests.createMockWalker(conglomerate, temporaryFolder.newFolder(), scheduler);
@ -803,6 +828,7 @@ public class SqlResourceTest extends CalciteTestBase
@Test @Test
public void testTooManyRequests() throws Exception public void testTooManyRequests() throws Exception
{ {
sleep = true;
final int numQueries = 3; final int numQueries = 3;
List<Future<Pair<QueryException, List<Map<String, Object>>>>> futures = new ArrayList<>(numQueries); List<Future<Pair<QueryException, List<Map<String, Object>>>>> futures = new ArrayList<>(numQueries);