use of com.datastax.oss.dsbulk.connectors.json.JsonConnector in project dsbulk by datastax.
the class JsonEndToEndSimulacronIT method unload_write_error.
@Test
void unload_write_error() {
Path file1 = unloadDir.resolve("output-000001.json");
Path file2 = unloadDir.resolve("output-000002.json");
Path file3 = unloadDir.resolve("output-000003.json");
Path file4 = unloadDir.resolve("output-000004.json");
MockConnector.setDelegate(new JsonConnector() {
@Override
public void configure(@NonNull Config settings, boolean read, boolean retainRecordSources) {
settings = ConfigFactory.parseString("url = " + StringUtils.quoteJson(unloadDir) + ", maxConcurrentFiles = 4").withFallback(ConfigUtils.createReferenceConfig().getConfig("dsbulk.connector.json"));
super.configure(settings, read, retainRecordSources);
}
@NonNull
@Override
public Function<Publisher<Record>, Publisher<Record>> write() {
// will cause the write workers to fail because the files already exist
try {
Files.createFile(file1);
Files.createFile(file2);
Files.createFile(file3);
Files.createFile(file4);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return super.write();
}
@Override
public boolean supports(@NonNull ConnectorFeature feature) {
return true;
}
});
primeIpByCountryTable(simulacron);
RequestPrime prime = createQueryWithResultSet(SELECT_FROM_IP_BY_COUNTRY, 10);
simulacron.prime(new Prime(prime));
String[] args = { "unload", "--connector.name", "mock", "--schema.keyspace", "ks1", "--schema.query", SELECT_FROM_IP_BY_COUNTRY, "--schema.mapping", IP_BY_COUNTRY_MAPPING_NAMED };
ExitStatus status = new DataStaxBulkLoader(addCommonSettings(args)).run();
assertStatus(status, STATUS_ABORTED_FATAL_ERROR);
assertThat(stdErr.getStreamAsString()).contains("failed").containsPattern("output-00000[1-4].json");
assertThat(logs.getAllMessagesAsString()).contains("failed").containsPattern("output-00000[1-4].json");
}
Aggregations