Skip to content

Commit dd80473

Browse files
committed
Added unit tests for raw record check
1 parent d2eddb2 commit dd80473

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

data-loader/core/src/test/java/com/scalar/db/dataloader/core/dataimport/log/SingleFileImportLoggerTest.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
6+
import static org.junit.jupiter.api.Assertions.assertNull;
57
import static org.junit.jupiter.api.Assertions.assertTrue;
68

79
import com.fasterxml.jackson.core.type.TypeReference;
@@ -160,6 +162,60 @@ private void assertTransactionBatchResults(
160162
}
161163
}
162164

165+
@Test
166+
void onTransactionBatchCompleted_HasErrors_ShouldWriteToFailureLogFileWithoutRawRecord()
167+
throws IOException {
168+
testTransactionBatchCompletedForRawRecords(false);
169+
}
170+
171+
@Test
172+
void onTransactionBatchCompleted_HasErrors_ShouldWriteToFailureLogFileWithRawRecord()
173+
throws IOException {
174+
testTransactionBatchCompletedForRawRecords(true);
175+
}
176+
177+
private void testTransactionBatchCompletedForRawRecords(boolean logRawRecords)
178+
throws IOException {
179+
// Arrange
180+
ImportLoggerConfig config =
181+
ImportLoggerConfig.builder()
182+
.logDirectoryPath(tempDir.toString() + "/")
183+
.isLogRawSourceRecordsEnabled(logRawRecords)
184+
.isLogSuccessRecordsEnabled(false)
185+
.build();
186+
SingleFileImportLogger importLogger = new SingleFileImportLogger(config, logWriterFactory);
187+
188+
List<ImportTransactionBatchResult> batchResults = createBatchResults(1, false);
189+
190+
// Act
191+
for (ImportTransactionBatchResult batchResult : batchResults) {
192+
importLogger.onTransactionBatchCompleted(batchResult);
193+
importLogger.onDataChunkCompleted(
194+
ImportDataChunkStatus.builder().dataChunkId(batchResult.getDataChunkId()).build());
195+
}
196+
importLogger.onAllDataChunksCompleted();
197+
198+
// Assert
199+
assertTransactionBatchResultsForRawRecords(logRawRecords);
200+
}
201+
202+
private void assertTransactionBatchResultsForRawRecords(boolean logRawRecord) throws IOException {
203+
DataLoaderObjectMapper objectMapper = new DataLoaderObjectMapper();
204+
205+
Path logFileName = tempDir.resolve(SingleFileImportLogger.FAILURE_LOG_FILE_NAME);
206+
assertTrue(Files.exists(logFileName), "Log file should exist");
207+
String logContent = new String(Files.readAllBytes(logFileName), StandardCharsets.UTF_8);
208+
List<ImportTransactionBatchResult> logEntries =
209+
objectMapper.readValue(
210+
logContent, new TypeReference<List<ImportTransactionBatchResult>>() {});
211+
ImportTaskResult importTaskResult = logEntries.get(0).getRecords().get(0);
212+
if (logRawRecord) {
213+
assertEquals(OBJECT_MAPPER.createObjectNode(), importTaskResult.getRawRecord());
214+
} else {
215+
assertNull(importTaskResult.getRawRecord());
216+
}
217+
}
218+
163219
private void assertTransactionBatchResult(
164220
ImportTransactionBatchResult expected, ImportTransactionBatchResult actual) {
165221
assertEquals(expected.getDataChunkId(), actual.getDataChunkId(), "Data chunk ID should match");

0 commit comments

Comments
 (0)