This is an automated email from the ASF dual-hosted git repository.
tballison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new 63e22d08ef improve flaky tests (#2956)
63e22d08ef is described below
commit 63e22d08ef249cc73a6d02da7bc199fc3623a607
Author: Tim Allison <[email protected]>
AuthorDate: Wed Jul 15 08:09:01 2026 -0400
improve flaky tests (#2956)
---
.../pipes/elasticsearch/tests/ElasticsearchTest.java | 19 +++++++++++--------
.../tika/pipes/opensearch/tests/OpenSearchTest.java | 20 ++++++++++++--------
2 files changed, 23 insertions(+), 16 deletions(-)
diff --git
a/tika-integration-tests/tika-pipes-es-integration-tests/src/test/java/org/apache/tika/pipes/elasticsearch/tests/ElasticsearchTest.java
b/tika-integration-tests/tika-pipes-es-integration-tests/src/test/java/org/apache/tika/pipes/elasticsearch/tests/ElasticsearchTest.java
index 7d43ce71ee..571cbaf9a0 100644
---
a/tika-integration-tests/tika-pipes-es-integration-tests/src/test/java/org/apache/tika/pipes/elasticsearch/tests/ElasticsearchTest.java
+++
b/tika-integration-tests/tika-pipes-es-integration-tests/src/test/java/org/apache/tika/pipes/elasticsearch/tests/ElasticsearchTest.java
@@ -178,18 +178,21 @@ public class ElasticsearchTest {
assertEquals(1, (int) statusCounts.get("EMIT_SUCCESS"),
"should have had 1 emit success: " + statusCounts);
assertEquals(2, numberOfCrashes(statusCounts),
- "should have had 2 OOM or 1 OOM and 1 timeout: " +
statusCounts);
+ "should have had 2 forked-process crashes
(OOM/TIMEOUT/UNSPECIFIED_CRASH): " +
+ statusCounts);
}
private int numberOfCrashes(Map<String, Integer> statusCounts) {
- Integer oom = statusCounts.get("OOM");
- Integer timeout = statusCounts.get("TIMEOUT");
+ // oom.xml (a real heap exhaustion) and fake_oom.xml both crash the
fork; how a genuine OOM
+ // surfaces -- OOM vs UNSPECIFIED_CRASH vs TIMEOUT -- is
nondeterministic under load, but all
+ // three are PipesResult PROCESS_CRASH statuses. Count the whole
category so the assertion is
+ // deterministic and doesn't flake on the exact sub-classification.
int sum = 0;
- if (oom != null) {
- sum += oom;
- }
- if (timeout != null) {
- sum += timeout;
+ for (String crashStatus : new String[]{"OOM", "TIMEOUT",
"UNSPECIFIED_CRASH"}) {
+ Integer cnt = statusCounts.get(crashStatus);
+ if (cnt != null) {
+ sum += cnt;
+ }
}
return sum;
}
diff --git
a/tika-integration-tests/tika-pipes-opensearch-integration-tests/src/test/java/org/apache/tika/pipes/opensearch/tests/OpenSearchTest.java
b/tika-integration-tests/tika-pipes-opensearch-integration-tests/src/test/java/org/apache/tika/pipes/opensearch/tests/OpenSearchTest.java
index 1e33c22383..745654fc76 100644
---
a/tika-integration-tests/tika-pipes-opensearch-integration-tests/src/test/java/org/apache/tika/pipes/opensearch/tests/OpenSearchTest.java
+++
b/tika-integration-tests/tika-pipes-opensearch-integration-tests/src/test/java/org/apache/tika/pipes/opensearch/tests/OpenSearchTest.java
@@ -155,19 +155,23 @@ public class OpenSearchTest {
assertEquals(1, (int)
statusCounts.get("PARSE_SUCCESS_WITH_EXCEPTION"), "should have had 1 parse
exception: " + statusCounts);
//the embedded docx is emitted directly
assertEquals(1, (int) statusCounts.get("EMIT_SUCCESS"), "should have
had 1 emit success: " + statusCounts);
- assertEquals(2, numberOfCrashes(statusCounts), "should have had 2 OOM
or 1 OOM and 1 timeout: " + statusCounts);
+ assertEquals(2, numberOfCrashes(statusCounts),
+ "should have had 2 forked-process crashes
(OOM/TIMEOUT/UNSPECIFIED_CRASH): " +
+ statusCounts);
}
private int numberOfCrashes(Map<String, Integer> statusCounts) {
- Integer oom = statusCounts.get("OOM");
- Integer timeout = statusCounts.get("TIMEOUT");
+ // oom.xml (a real heap exhaustion) and fake_oom.xml both crash the
fork; how a genuine OOM
+ // surfaces -- OOM vs UNSPECIFIED_CRASH vs TIMEOUT -- is
nondeterministic under load, but all
+ // three are PipesResult PROCESS_CRASH statuses. Count the whole
category so the assertion is
+ // deterministic and doesn't flake on the exact sub-classification.
int sum = 0;
- if (oom != null) {
- sum += oom;
- }
- if (timeout != null) {
- sum += timeout;
+ for (String crashStatus : new String[]{"OOM", "TIMEOUT",
"UNSPECIFIED_CRASH"}) {
+ Integer cnt = statusCounts.get(crashStatus);
+ if (cnt != null) {
+ sum += cnt;
+ }
}
return sum;
}