@Override public void run() { CopyableFile mockCopyableFile1 = mock(CopyableFile.class); String file1 = new Path(copyableVersion.getPaths().iterator().next(), "file1").toString(); when(mockCopyableFile1.getFileSet()).thenReturn(file1); CopyableFile mockCopyableFile2 = mock(CopyableFile.class); String file2 = new Path(copyableVersion.getPaths().iterator().next(), "file2").toString(); when(mockCopyableFile2.getFileSet()).thenReturn(file2); try { Thread.sleep(new Random().nextInt(3000)); } catch (InterruptedException e) { e.printStackTrace(); } copyableFileList.add(mockCopyableFile1); copyableFileList.add(mockCopyableFile2); } }
/** * Test the parallel execution to get copyable files in {@link TimestampBasedCopyableDataset#getCopyableFiles(FileSystem, CopyConfiguration)}. */ @Test public void testGetCopyableFiles() throws IOException { Properties props = new Properties(); props.put(TimestampBasedCopyableDataset.COPY_POLICY, TimeBasedCopyPolicyForTest.class.getName()); props.put(TimestampBasedCopyableDataset.DATASET_VERSION_FINDER, TimestampedDatasetVersionFinderForTest.class.getName()); TimestampBasedCopyableDataset copyabledataset = new TimestampBasedCopyableDatasetForTest(localFs, props, new Path("/data/tracking/PVE")); Collection<CopyableFile> copyableFiles = copyabledataset.getCopyableFiles(localFs, null); /** * {@link TimestampedDatasetVersionFinderForTest} will return three versions, and each version will contain two files. * So the total number of copyableFiles should be 6, and all should follow the pattern: dummy\/[\\d]\*\/file[12]. */ Assert.assertEquals(copyableFiles.size(), 6); Pattern pattern = Pattern.compile("dummy/[\\d]*/file[12]"); Set<String> resultFilesets = Sets.newHashSet(); for (CopyableFile copyableFile : copyableFiles) { String copyableFileset = copyableFile.getFileSet(); Assert.assertTrue(pattern.matcher(copyableFileset).matches()); resultFilesets.add(copyableFileset); } Assert.assertEquals(resultFilesets.size(), 6); }
copyFileGenerator1.run(); Assert.assertEquals(copyableFileList1.size(), 1); Assert.assertEquals(copyableFileList1.poll().getFileSet(), localFs.getFileStatus(srcfile).getPath().toString()); copyFileGenerator1.run(); Assert.assertEquals(copyableFileList1.size(), 1); Assert.assertEquals(copyableFileList1.poll().getFileSet(), localFs.getFileStatus(srcfile).getPath().toString());
Assert.assertEquals(copyableFile.getFileSet(), ""); Assert.assertEquals(copyableFile.getOrigin(), origin);
Assert.assertEquals(copyableFile.getFileSet(), fileSet); Assert.assertEquals(copyableFile.getOrigin(), origin);