use of com.google.common.io.Files in project incubator-gobblin by apache.
the class FsSpecProducerTest method testAddSpec.
@Test
public void testAddSpec() throws URISyntaxException, ExecutionException, InterruptedException, IOException {
this._fsSpecProducer.addSpec(createTestJobSpec());
// Add some random files(with non-avro extension name) into the folder observed by consumer, they shall not be picked up.
File randomFile = new File(workDir, "random");
Assert.assertTrue(randomFile.createNewFile());
randomFile.deleteOnExit();
List<Pair<SpecExecutor.Verb, Spec>> jobSpecs = this._fsSpecConsumer.changedSpecs().get();
Assert.assertEquals(jobSpecs.size(), 1);
Assert.assertEquals(jobSpecs.get(0).getLeft(), SpecExecutor.Verb.ADD);
Assert.assertEquals(jobSpecs.get(0).getRight().getUri().toString(), "testJob");
Assert.assertEquals(((JobSpec) jobSpecs.get(0).getRight()).getConfig().getString("key1"), "val1");
Assert.assertEquals(((JobSpec) jobSpecs.get(0).getRight()).getConfig().getString("key2"), "val2");
Assert.assertEquals(((JobSpec) jobSpecs.get(0).getRight()).getConfig().getString("key3.1" + ConfigUtils.STRIP_SUFFIX), "val3");
Assert.assertEquals(((JobSpec) jobSpecs.get(0).getRight()).getConfig().getString("key3.1.1"), "val4");
jobSpecs.clear();
// If there are other jobSpec in .avro files added by testSpecProducer, they shall still be found.
this._fsSpecProducer.addSpec(createTestJobSpec("newTestJob"));
jobSpecs = this._fsSpecConsumer.changedSpecs().get();
Assert.assertEquals(jobSpecs.size(), 2);
Assert.assertEquals(jobSpecs.get(0).getLeft(), SpecExecutor.Verb.ADD);
Assert.assertEquals(jobSpecs.get(1).getLeft(), SpecExecutor.Verb.ADD);
List<String> uriList = jobSpecs.stream().map(s -> s.getRight().getUri().toString()).collect(Collectors.toList());
Assert.assertTrue(uriList.contains("testJob"));
Assert.assertTrue(uriList.contains("newTestJob"));
}
Aggregations