Properly assert that large state documents can be consumed quickly

AssertBusy was not the correct way to do this

Original commit: elastic/x-pack-elasticsearch@c6535e7545
This commit is contained in:
David Roberts 2017-01-05 13:06:24 +00:00
parent 41f2f51df6
commit 2746edf21b
1 changed files with 6 additions and 7 deletions

View File

@ -5,6 +5,7 @@
*/
package org.elasticsearch.xpack.prelert.job.process.autodetect.output;
import com.carrotsearch.randomizedtesting.annotations.Timeout;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.test.ESTestCase;
@ -16,7 +17,6 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
@ -60,9 +60,11 @@ public class StateProcessorTests extends ESTestCase {
}
/**
* This test is designed to pick up N-squared processing in the state consumption code.
* The size of the state document is comparable to those that the C++ code will create for a huge model.
* This test is designed to pick up N-squared processing in the state consumption code. The size of the state document
* is comparable to those that the C++ code will create for a huge model. 5 seconds is an overestimate of the time
* required to avoid spurious failures due to VM stalls - on a reasonable spec laptop this should take around 1 second.
*/
@Timeout(millis = 5 * 1000)
public void testLargeStateRead() throws Exception {
StringBuilder builder = new StringBuilder(NUM_LARGE_DOCS * (LARGE_DOC_SIZE + 10)); // 10 for header and separators
for (int docNum = 1; docNum <= NUM_LARGE_DOCS; ++docNum) {
@ -78,10 +80,7 @@ public class StateProcessorTests extends ESTestCase {
JobResultsPersister persister = Mockito.mock(JobResultsPersister.class);
StateProcessor stateParser = new StateProcessor(Settings.EMPTY, persister);
// 5 seconds is an overestimate to avoid spurious failures due to VM stalls - on a
// reasonable spec laptop this should take around 1 second
assertBusy(() -> stateParser.process("_id", stream), 5, TimeUnit.SECONDS);
stateParser.process("_id", stream);
verify(persister, times(NUM_LARGE_DOCS)).persistBulkState(eq("_id"), any());
}