commit d65b26e0db29fe71701027ee1567374a55abb378
Author: iwakeh <iwakeh(a)torproject.org>
Date: Tue Aug 30 12:15:51 2016 +0200
Added more inline comments and extended tests.
---
.../index/DescriptorIndexCollectorTest.java | 46 ++++++++++++++++++----
1 file changed, 39 insertions(+), 7 deletions(-)
diff --git a/src/test/java/org/torproject/descriptor/index/DescriptorIndexCollectorTest.java b/src/test/java/org/torproject/descriptor/index/DescriptorIndexCollectorTest.java
index 8f14ec7..c5a6a5c 100644
--- a/src/test/java/org/torproject/descriptor/index/DescriptorIndexCollectorTest.java
+++ b/src/test/java/org/torproject/descriptor/index/DescriptorIndexCollectorTest.java
@@ -44,6 +44,11 @@ public class DescriptorIndexCollectorTest {
File indexFile = newIndexFile("testindex.json",
remoteDirectory.toURL().toString());
+
+ // verify precondition for test.
+ checkContains(true,
+ DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
+ "a/b/x1", "a/b/y1", "a/b/c/w1", "a/b/c/z1", "a/b/c/u1");
checkContains(false,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
"a/b/y2","a/b/x2");
@@ -51,22 +56,26 @@ public class DescriptorIndexCollectorTest {
DescriptorCollector dc = new DescriptorIndexCollector();
dc.collectDescriptors(indexFile.toURL().toString(),
new String[]{"a/b", "a"}, 1451606400_000L, localFolder, false);
+
+ // verify that files in 'a/b' were fetched
checkContains(true,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
"a/b/x1", "a/b/y1", "a/b/y2","a/b/x2", "a/b/c/w1", "a/b/c/z1");
+
+ // verify that files in 'a/b/c' were not fetched.
checkContains(false,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
- "a/b/c/w2","a/b/c/z2");
+ "a/b/c/u2");
}
private void makeStructure(File folder, String suffix) throws IOException {
File dir = makeDirs(folder.toString(), "a", "b");
makeFiles(dir, "x" + suffix, "y" + suffix);
File subdir = makeDirs(dir.toString(), "c");
- makeFiles(subdir, "w" + suffix, "z" + suffix);
+ makeFiles(subdir, "u" + suffix, "w" + suffix, "z" + suffix);
SortedMap<String, Long> local = DescriptorIndexCollector
.statLocalDirectory(folder);
- assertEquals("found " + local, 4, local.size());
+ assertEquals("found " + local, 5, local.size());
}
private File makeDirs(String first, String ... dirs) throws IOException {
@@ -97,11 +106,20 @@ public class DescriptorIndexCollectorTest {
private File newIndexFile(String name, String remoteDirectory)
throws Exception {
SortedSet<FileNode> fm = new TreeSet<>();
- fm.add(new FileNode("w2", 0L, "2100-01-01 01:01"));
+
+ // 'u2' should be fetched when the path is included.
+ fm.add(new FileNode("u2", 0L, "2100-01-01 01:02"));
+
+ // 'w2' should not be fetched, b/c of wrong filesize
+ fm.add(new FileNode("w2", 100L, "2100-01-01 01:01"));
+
+ // 'z2' should not be fetched, b/c of being too old.
fm.add(new FileNode("z2", 0L, "1900-01-01 01:02"));
SortedSet<DirectoryNode> dm = new TreeSet<>();
dm.add(new DirectoryNode("c", fm, null));
fm = new TreeSet<>();
+
+ // 'x2' and 'y2' should be fetched when their path is included.
fm.add(new FileNode("x2", 0L, "2100-01-01 01:01"));
fm.add(new FileNode("y2", 0L, "2100-01-01 01:02"));
DirectoryNode dnb = new DirectoryNode("b", fm, dm);
@@ -127,19 +145,33 @@ public class DescriptorIndexCollectorTest {
File indexFile = newIndexFile("testindexDelete.json",
remoteDirectory.toURL().toString());
+
+ // verify precondition for test.
+ checkContains(true,
+ DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
+ "a/b/x1", "a/b/y1", "a/b/c/w1", "a/b/c/z1", "a/b/c/u1");
checkContains(false,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
"a/b/y2","a/b/x2");
new DescriptorIndexCollector()
.collectDescriptors(indexFile.toURL().toString(),
- new String[]{"a/b"}, 1451606400_000L, localFolder, true);
+ new String[]{"a/b", "a/b/c"}, 1451606400_000L, localFolder, true);
+
+ // verify file addition.
checkContains(true,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
- "a/b/y2","a/b/x2");
+ "a/b/y2", "a/b/x2", "a/b/c/u2");
+
+ // verify that invalid files weren't fetched.
+ checkContains(false,
+ DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
+ "a/b/c/w2", "a/b/c/z2");
+
+ // verify file deletion.
checkContains(false,
DescriptorIndexCollector.statLocalDirectory(localFolder).toString(),
- "a/b/x1", "a/b/y1", "a/b/c/w1", "a/b/c/z1", "a/b/c/w2", "a/b/c/z2");
+ "a/b/x1", "a/b/y1", "a/b/c/w1", "a/b/c/z1", "a/b/c/u1");
}
@Test()