[TEST] Changed how stash dumps are logged in yaml tests in case of failures
Currently if a yaml test has a teardown and a test is failing then a stash dump of a request in the teardown is logged instead of a stash dump of a request in the test itself. By handling the logging of stash dumps separately for setup, tests and teardown yaml sections we shouldn't miss the stash dump of request/response that is actually causing the yaml test to fail.
This commit is contained in:
parent
e6a8528554
commit
21e5ee6551
|
@ -21,7 +21,6 @@ package org.elasticsearch.test.rest.yaml;
|
||||||
|
|
||||||
import com.carrotsearch.randomizedtesting.RandomizedTest;
|
import com.carrotsearch.randomizedtesting.RandomizedTest;
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.lucene.util.IOUtils;
|
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.client.Response;
|
import org.elasticsearch.client.Response;
|
||||||
import org.elasticsearch.client.ResponseException;
|
import org.elasticsearch.client.ResponseException;
|
||||||
|
@ -144,15 +143,6 @@ public abstract class ESClientYamlSuiteTestCase extends ESRestTestCase {
|
||||||
return new ClientYamlTestClient(restSpec, restClient, hosts, esVersion);
|
return new ClientYamlTestClient(restSpec, restClient, hosts, esVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void afterIfFailed(List<Throwable> errors) {
|
|
||||||
// Dump the stash on failure. Instead of dumping it in true json we escape `\n`s so stack traces are easier to read
|
|
||||||
logger.info("Stash dump on failure [{}]",
|
|
||||||
Strings.toString(restTestExecutionContext.stash(), true, true)
|
|
||||||
.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t"));
|
|
||||||
super.afterIfFailed(errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Iterable<Object[]> createParameters() throws Exception {
|
public static Iterable<Object[]> createParameters() throws Exception {
|
||||||
String[] paths = resolvePathsProperty(REST_TESTS_SUITE, ""); // default to all tests under the test root
|
String[] paths = resolvePathsProperty(REST_TESTS_SUITE, ""); // default to all tests under the test root
|
||||||
List<Object[]> tests = new ArrayList<>();
|
List<Object[]> tests = new ArrayList<>();
|
||||||
|
@ -318,7 +308,14 @@ public abstract class ESClientYamlSuiteTestCase extends ESRestTestCase {
|
||||||
if (!testCandidate.getSetupSection().isEmpty()) {
|
if (!testCandidate.getSetupSection().isEmpty()) {
|
||||||
logger.debug("start setup test [{}]", testCandidate.getTestPath());
|
logger.debug("start setup test [{}]", testCandidate.getTestPath());
|
||||||
for (DoSection doSection : testCandidate.getSetupSection().getDoSections()) {
|
for (DoSection doSection : testCandidate.getSetupSection().getDoSections()) {
|
||||||
executeSection(doSection);
|
try {
|
||||||
|
executeSection(doSection);
|
||||||
|
} catch (AssertionError | Exception e) {
|
||||||
|
logger.info("Stash dump on setup failure [{}]",
|
||||||
|
Strings.toString(restTestExecutionContext.stash(), true, true)
|
||||||
|
.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t"));
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
logger.debug("end setup test [{}]", testCandidate.getTestPath());
|
logger.debug("end setup test [{}]", testCandidate.getTestPath());
|
||||||
}
|
}
|
||||||
|
@ -327,12 +324,27 @@ public abstract class ESClientYamlSuiteTestCase extends ESRestTestCase {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (ExecutableSection executableSection : testCandidate.getTestSection().getExecutableSections()) {
|
for (ExecutableSection executableSection : testCandidate.getTestSection().getExecutableSections()) {
|
||||||
executeSection(executableSection);
|
try {
|
||||||
|
executeSection(executableSection);
|
||||||
|
} catch (AssertionError | Exception e) {
|
||||||
|
// Dump the stash on failure. Instead of dumping it in true json we escape `\n`s so stack traces are easier to read
|
||||||
|
logger.info("Stash dump on test failure [{}]",
|
||||||
|
Strings.toString(restTestExecutionContext.stash(), true, true)
|
||||||
|
.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t"));
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
logger.debug("start teardown test [{}]", testCandidate.getTestPath());
|
logger.debug("start teardown test [{}]", testCandidate.getTestPath());
|
||||||
for (DoSection doSection : testCandidate.getTeardownSection().getDoSections()) {
|
for (DoSection doSection : testCandidate.getTeardownSection().getDoSections()) {
|
||||||
executeSection(doSection);
|
try {
|
||||||
|
executeSection(doSection);
|
||||||
|
} catch (AssertionError | Exception e) {
|
||||||
|
logger.info("Stash dump on tear down failure [{}]",
|
||||||
|
Strings.toString(restTestExecutionContext.stash(), true, true)
|
||||||
|
.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t"));
|
||||||
|
// Don't rethrow exception here, that could hide the exception caused by a test.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
logger.debug("end teardown test [{}]", testCandidate.getTestPath());
|
logger.debug("end teardown test [{}]", testCandidate.getTestPath());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue