Retry which measures duration a few times to see if that reduces the number of failures caused by this test sometimes when CI machines are loaded.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1707488 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4ae623c699
commit
7fbf591db5
@ -30,19 +30,34 @@ public class TestXSSFSheetMergeRegions {
|
|||||||
public void testMergeRegionsSpeed() throws IOException {
|
public void testMergeRegionsSpeed() throws IOException {
|
||||||
final XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57893-many-merges.xlsx");
|
final XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57893-many-merges.xlsx");
|
||||||
try {
|
try {
|
||||||
final XSSFSheet sheet = wb.getSheetAt(0);
|
long millis = Long.MAX_VALUE;
|
||||||
final long start = System.currentTimeMillis();
|
|
||||||
final List<CellRangeAddress> mergedRegions = sheet.getMergedRegions();
|
// in order to reduce the number of false positives we run it a few times before we fail,
|
||||||
assertEquals(50000, mergedRegions.size());
|
// sometimes it fails on machines that are busy at the moment.
|
||||||
for (CellRangeAddress cellRangeAddress : mergedRegions) {
|
for(int i = 0;i < 5;i++) {
|
||||||
assertEquals(cellRangeAddress.getFirstRow(), cellRangeAddress.getLastRow());
|
millis = runTest(wb);
|
||||||
assertEquals(2, cellRangeAddress.getNumberOfCells());
|
if(millis < 2000) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
long millis = System.currentTimeMillis() - start;
|
System.out.println("Retry " + i + " because run-time is too high: " + millis);
|
||||||
|
}
|
||||||
|
|
||||||
// This time is typically ~800ms, versus ~7800ms to iterate getMergedRegion(int).
|
// This time is typically ~800ms, versus ~7800ms to iterate getMergedRegion(int).
|
||||||
assertTrue("Should have taken <2000 ms to iterate 50k merged regions but took " + millis, millis < 2000);
|
assertTrue("Should have taken <2000 ms to iterate 50k merged regions but took " + millis, millis < 2000);
|
||||||
} finally {
|
} finally {
|
||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long runTest(final XSSFWorkbook wb) {
|
||||||
|
final long start = System.currentTimeMillis();
|
||||||
|
final XSSFSheet sheet = wb.getSheetAt(0);
|
||||||
|
final List<CellRangeAddress> mergedRegions = sheet.getMergedRegions();
|
||||||
|
assertEquals(50000, mergedRegions.size());
|
||||||
|
for (CellRangeAddress cellRangeAddress : mergedRegions) {
|
||||||
|
assertEquals(cellRangeAddress.getFirstRow(), cellRangeAddress.getLastRow());
|
||||||
|
assertEquals(2, cellRangeAddress.getNumberOfCells());
|
||||||
|
}
|
||||||
|
return System.currentTimeMillis() - start;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user