Skip to content

Commit 95a5e79

Browse files
committed
Fix datanode unit test failures
1 parent b0f0bd5 commit 95a5e79

4 files changed

Lines changed: 31 additions & 18 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter {
8686
"Failed to update the value of metric because of connection failure, because ";
8787
private static final String UPDATE_METRIC_INTERNAL_FAILURE =
8888
"Failed to update the value of metric because of internal error, because ";
89-
private static final SessionManager SESSION_MANAGER = SessionManager.getInstance();
90-
private static final Coordinator COORDINATOR = Coordinator.getInstance();
89+
private final SessionManager sessionManager;
90+
private final Coordinator coordinator;
9191
private final SessionInfo sessionInfo;
9292
private final IPartitionFetcher partitionFetcher;
9393
private final ISchemaFetcher schemaFetcher;
@@ -103,6 +103,8 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter {
103103
new ConcurrentHashMap<>();
104104

105105
public IoTDBInternalLocalReporter() {
106+
sessionManager = SessionManager.getInstance();
107+
coordinator = Coordinator.getInstance();
106108
partitionFetcher = ClusterPartitionFetcher.getInstance();
107109
schemaFetcher = ClusterSchemaFetcher.getInstance();
108110
sessionInfo =
@@ -223,9 +225,9 @@ private TSStatus insertRecord(Map<String, Object> valueMap, String prefix, long
223225
request.setIsAligned(false);
224226

225227
InsertRowStatement s = StatementGenerator.createStatement(request);
226-
final long queryId = SESSION_MANAGER.requestQueryId();
228+
final long queryId = sessionManager.requestQueryId();
227229
ExecutionResult result =
228-
COORDINATOR.executeForTreeModel(
230+
coordinator.executeForTreeModel(
229231
s, queryId, sessionInfo, "", partitionFetcher, schemaFetcher);
230232
return result.status;
231233
}
@@ -251,10 +253,10 @@ private void createTimeSeries(Map<String, Object> valueMap, String prefix)
251253
request.setEncodings(encodings);
252254
request.setCompressors(compressors);
253255
CreateMultiTimeSeriesStatement s = StatementGenerator.createStatement(request);
254-
final long queryId = SESSION_MANAGER.requestQueryId();
256+
final long queryId = sessionManager.requestQueryId();
255257

256258
ExecutionResult result =
257-
COORDINATOR.executeForTreeModel(
259+
coordinator.executeForTreeModel(
258260
s, queryId, sessionInfo, "", partitionFetcher, schemaFetcher);
259261
if (result.status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
260262
logAutoCreateTimeseriesFailureIfNecessary(prefix, paths, result.status);

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/auth/LoginLockManagerTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.iotdb.db.auth.LoginLockManager.UserLockInfo;
2323
import org.apache.iotdb.db.i18n.DataNodeMiscMessages;
2424

25+
import ch.qos.logback.classic.Level;
2526
import ch.qos.logback.classic.spi.ILoggingEvent;
2627
import ch.qos.logback.core.read.ListAppender;
2728
import org.junit.Before;
@@ -149,6 +150,8 @@ public void testIpLockAfterMaxAttempts() {
149150
public void testLockMessagesLoggedOnlyWhenThresholdFirstReached() {
150151
ch.qos.logback.classic.Logger logger =
151152
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LoginLockManager.class);
153+
Level previousLevel = logger.getLevel();
154+
logger.setLevel(Level.INFO);
152155
ListAppender<ILoggingEvent> appender = new ListAppender<>();
153156
appender.setContext(logger.getLoggerContext());
154157
appender.start();
@@ -163,6 +166,7 @@ public void testLockMessagesLoggedOnlyWhenThresholdFirstReached() {
163166
assertEquals(1, countLogEvents(appender, "User ID '{}' locked due to {} failed attempts"));
164167
} finally {
165168
logger.detachAppender(appender);
169+
logger.setLevel(previousLevel);
166170
appender.stop();
167171
}
168172
}
@@ -171,6 +175,8 @@ public void testLockMessagesLoggedOnlyWhenThresholdFirstReached() {
171175
public void testPotentialAttackWarningsLoggedOnlyOnceWhileThresholdExceeded() {
172176
ch.qos.logback.classic.Logger logger =
173177
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LoginLockManager.class);
178+
Level previousLevel = logger.getLevel();
179+
logger.setLevel(Level.INFO);
174180
ListAppender<ILoggingEvent> appender = new ListAppender<>();
175181
appender.setContext(logger.getLoggerContext());
176182
appender.start();
@@ -195,6 +201,7 @@ public void testPotentialAttackWarningsLoggedOnlyOnceWhileThresholdExceeded() {
195201
assertEquals(1, countLogEvents(appender, DataNodeMiscMessages.USER_MULTIPLE_IP_LOCKS));
196202
} finally {
197203
logger.detachAppender(appender);
204+
logger.setLevel(previousLevel);
198205
appender.stop();
199206
}
200207
}

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/conf/directories/strategy/DirectoryStrategyTest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ public void testMinFolderOccupiedSpaceFirstStrategy()
155155
}
156156

157157
@Test
158-
public void testMinFolderOccupiedSpaceFirstStrategyLogThrottle()
159-
throws DiskSpaceInsufficientException, IOException {
158+
public void testMinFolderOccupiedSpaceFirstStrategyLogThrottle() throws Exception {
160159
MinFolderOccupiedSpaceFirstStrategy minFolderOccupiedSpaceFirstStrategy =
161160
new MinFolderOccupiedSpaceFirstStrategy();
162161
minFolderOccupiedSpaceFirstStrategy.setFolders(dataDirList);
@@ -171,17 +170,17 @@ public void testMinFolderOccupiedSpaceFirstStrategyLogThrottle()
171170
logger.addAppender(appender);
172171

173172
try {
174-
PowerMockito.when(JVMCommonUtils.getOccupiedSpace(dataDirList.get(0)))
175-
.thenThrow(new IOException("broken occupied space"));
173+
PowerMockito.doThrow(new IOException("broken occupied space"))
174+
.when(JVMCommonUtils.class, "getOccupiedSpace", dataDirList.get(0));
176175
assertEquals(2, minFolderOccupiedSpaceFirstStrategy.nextFolderIndex());
177176
assertEquals(2, minFolderOccupiedSpaceFirstStrategy.nextFolderIndex());
178177
assertEquals(1, countLogEvents(appender, UtilMessages.CANNOT_CALCULATE_OCCUPIED_SPACE));
179178

180-
PowerMockito.when(JVMCommonUtils.getOccupiedSpace(dataDirList.get(0))).thenReturn(0L);
179+
PowerMockito.doReturn(0L).when(JVMCommonUtils.class, "getOccupiedSpace", dataDirList.get(0));
181180
assertEquals(0, minFolderOccupiedSpaceFirstStrategy.nextFolderIndex());
182181

183-
PowerMockito.when(JVMCommonUtils.getOccupiedSpace(dataDirList.get(0)))
184-
.thenThrow(new IOException("broken occupied space again"));
182+
PowerMockito.doThrow(new IOException("broken occupied space again"))
183+
.when(JVMCommonUtils.class, "getOccupiedSpace", dataDirList.get(0));
185184
assertEquals(2, minFolderOccupiedSpaceFirstStrategy.nextFolderIndex());
186185
assertEquals(2, countLogEvents(appender, UtilMessages.CANNOT_CALCULATE_OCCUPIED_SPACE));
187186
} finally {
@@ -254,8 +253,12 @@ public void testAllDiskFull() {
254253
}
255254

256255
private long countLogEvents(ListAppender<ILoggingEvent> appender, String messagePattern) {
257-
return appender.list.stream()
258-
.filter(event -> messagePattern.equals(event.getMessage()))
259-
.count();
256+
long count = 0;
257+
for (ILoggingEvent event : appender.list) {
258+
if (messagePattern.equals(event.getMessage())) {
259+
count++;
260+
}
261+
}
262+
return count;
260263
}
261264
}

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNodeTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ public void testConcurrentCheckpoint() throws Exception {
333333
@Test
334334
public void testDeleteOutdatedFiles() throws Exception {
335335
List<WALFlushListener> walFlushListeners = new ArrayList<>();
336-
// write until log is rolled
336+
// Write entries, then roll explicitly so the next active memTable starts in a new WAL file.
337337
long time = 0;
338338
IMemTable memTable = new PrimitiveMemTable(databasePath, dataRegionId);
339339
long memTableId = memTable.getMemTableId();
@@ -352,7 +352,7 @@ public void testDeleteOutdatedFiles() throws Exception {
352352
.setDataRegion(
353353
new DataRegionId(1), new DataRegionTest.DummyDataRegion(logDirectory, databasePath));
354354
walNode.onMemTableCreated(memTable, tsFilePath);
355-
while (time < 20000) {
355+
while (time < 10) {
356356
++time;
357357
InsertTabletNode insertTabletNode =
358358
getInsertTabletNode(devicePath + memTableId, new long[] {time});
@@ -364,6 +364,7 @@ public void testDeleteOutdatedFiles() throws Exception {
364364
walFlushListeners.add(walFlushListener);
365365
}
366366
walNode.onMemTableFlushed(memTable);
367+
walNode.rollWALFile();
367368
walNode.onMemTableCreated(new PrimitiveMemTable(databasePath, dataRegionId), tsFilePath);
368369
Awaitility.await().until(() -> walNode.isAllWALEntriesConsumed());
369370
// check existence of _0-0-0.wal file and _1-0-1.wal file

0 commit comments

Comments
 (0)