Skip to content

Commit a8d003c

Browse files
committed
Update LoadTreeStatementDataTypeConvertExecutionVisitorTest.java
1 parent ea1f8b2 commit a8d003c

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitorTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,67 @@ public void testFallbackToQueryForRemainingDevicesWhenScanParserHitsCorruption()
108108
Assert.assertEquals(loadedPointCountBeforeCorruption, loadedPointCountAfterFallback);
109109
}
110110

111+
@Test
112+
public void testFallbackToQueryWhenFirstNonAlignedDeviceIsCorrupted() throws Exception {
113+
tsFile = new File("load-tree-query-fallback-corrupted-first-non-aligned-device.tsfile");
114+
writeTsFile(tsFile);
115+
corruptMeasurementChunk(tsFile, DEVICE_0, "s0");
116+
117+
Assert.assertTrue("Expected scan parser to fail after corruption.", scanParserFails(tsFile));
118+
119+
final Map<String, Integer> pointCountByTimeseries = new HashMap<>();
120+
final LoadTreeStatementDataTypeConvertExecutionVisitor visitor =
121+
new LoadTreeStatementDataTypeConvertExecutionVisitor(
122+
statement -> {
123+
collectLoadedPointsByTimeseries(statement, pointCountByTimeseries);
124+
return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
125+
});
126+
127+
final Optional<TSStatus> status =
128+
visitor.visitLoadFile(LoadTsFileStatement.createUnchecked(tsFile.getAbsolutePath()), null);
129+
130+
Assert.assertTrue(status.isPresent());
131+
Assert.assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.get().getCode());
132+
133+
Assert.assertTrue(
134+
pointCountByTimeseries.getOrDefault(DEVICE_0 + ".s0", 0) < ROW_COUNT_PER_DEVICE);
135+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_0, 1);
136+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_1, 0);
137+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_1, 1);
138+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_2, 0);
139+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_2, 1);
140+
}
141+
142+
@Test
143+
public void testFallbackDoesNotReloadCompletedMeasurementsOfCurrentNonAlignedDevice()
144+
throws Exception {
145+
tsFile = new File("load-tree-query-fallback-corrupted-current-non-aligned-device.tsfile");
146+
writeTsFile(tsFile);
147+
corruptMeasurementChunk(tsFile, DEVICE_1, "s1");
148+
149+
Assert.assertTrue("Expected scan parser to fail after corruption.", scanParserFails(tsFile));
150+
151+
final Map<String, Integer> pointCountByTimeseries = new HashMap<>();
152+
final LoadTreeStatementDataTypeConvertExecutionVisitor visitor =
153+
new LoadTreeStatementDataTypeConvertExecutionVisitor(
154+
statement -> {
155+
collectLoadedPointsByTimeseries(statement, pointCountByTimeseries);
156+
return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
157+
});
158+
159+
final Optional<TSStatus> status =
160+
visitor.visitLoadFile(LoadTsFileStatement.createUnchecked(tsFile.getAbsolutePath()), null);
161+
162+
Assert.assertTrue(status.isPresent());
163+
Assert.assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.get().getCode());
164+
165+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_1, 0);
166+
Assert.assertTrue(
167+
pointCountByTimeseries.getOrDefault(DEVICE_1 + ".s1", 0) < ROW_COUNT_PER_DEVICE);
168+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_2, 0);
169+
assertMeasurementLoadedCompletely(pointCountByTimeseries, DEVICE_2, 1);
170+
}
171+
111172
@Test
112173
public void testFallbackToQueryForRemainingMeasurementsOfCurrentAlignedDevice() throws Exception {
113174
CommonDescriptor.getInstance().getConfig().setPipeMaxReaderChunkSize(0);

0 commit comments

Comments
 (0)