[tor-commits] [metrics-lib/master] Increased coverage for DescriptorSourceFactory from zero to 100%.

karsten at torproject.org karsten at torproject.org
Tue Aug 30 14:32:55 UTC 2016


commit e9c0731f395fa12be7b2f9d370fb4374bcfeef06
Author: iwakeh <iwakeh at torproject.org>
Date:   Fri Aug 19 13:42:44 2016 +0200

    Increased coverage for DescriptorSourceFactory from zero to 100%.
---
 .../descriptor/DescriptorSourceFactoryTest.java    | 130 +++++++++++++++++++++
 1 file changed, 130 insertions(+)

diff --git a/src/test/java/org/torproject/descriptor/DescriptorSourceFactoryTest.java b/src/test/java/org/torproject/descriptor/DescriptorSourceFactoryTest.java
new file mode 100644
index 0000000..5f2e42e
--- /dev/null
+++ b/src/test/java/org/torproject/descriptor/DescriptorSourceFactoryTest.java
@@ -0,0 +1,130 @@
+/* Copyright 2016 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.descriptor;
+
+import static org.torproject.descriptor.DescriptorSourceFactory.*;
+
+import org.torproject.descriptor.DescriptorCollector;
+import org.torproject.descriptor.DescriptorDownloader;
+import org.torproject.descriptor.DescriptorParser;
+import org.torproject.descriptor.DescriptorReader;
+import org.torproject.descriptor.ImplementationNotAccessibleException;
+import org.torproject.descriptor.impl.DescriptorCollectorImpl;
+import org.torproject.descriptor.impl.DescriptorDownloaderImpl;
+import org.torproject.descriptor.impl.DescriptorParserImpl;
+import org.torproject.descriptor.impl.DescriptorReaderImpl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+public class DescriptorSourceFactoryTest {
+
+  private final static String[] properties = new String[]{
+      COLLECTOR_PROPERTY, DOWNLOADER_PROPERTY, PARSER_PROPERTY, READER_PROPERTY};
+  private final static String[] defaults = new String[]{
+      COLLECTOR_DEFAULT, DOWNLOADER_DEFAULT, PARSER_DEFAULT, READER_DEFAULT};
+
+  @Test()
+  public void testDefaults() {
+    setProperties(defaults);
+    DescriptorCollector dc = DescriptorSourceFactory.createDescriptorCollector();
+    assertTrue(dc instanceof DescriptorCollectorImpl);
+    DescriptorDownloader dd = DescriptorSourceFactory.createDescriptorDownloader();
+    assertTrue(dd instanceof DescriptorDownloaderImpl);
+    DescriptorParser dp = DescriptorSourceFactory.createDescriptorParser();
+    assertTrue(dp instanceof DescriptorParserImpl);
+    DescriptorReader dr = DescriptorSourceFactory.createDescriptorReader();
+    assertTrue(dr instanceof DescriptorReaderImpl);
+  }
+
+  private void setProperties(String[] vals) {
+    for (int k = 0; k < properties.length; k++) {
+      System.setProperty(properties[k], vals[k]);
+    }
+  }
+
+  @Test(expected = ImplementationNotAccessibleException.class)
+  public void testException() {
+    System.setProperty(COLLECTOR_PROPERTY ,
+        "no.implementation.available.X");
+    DescriptorSourceFactory.createDescriptorCollector();
+  }
+
+  @Test()
+  public void testUnknownPropertyException() {
+    setProperties(defaults);
+    try {
+      Method retrieve = DescriptorSourceFactory.class
+          .getDeclaredMethod("retrieve", String.class);
+      retrieve.setAccessible(true);
+      retrieve.invoke(null, "unknown.property");
+    } catch (InvocationTargetException ite) {
+      if(ite.getCause() instanceof ImplementationNotAccessibleException) {
+        return;
+      } else {
+        fail("Cause was " + ite.getCause()
+            + ", but expected InvocationTargetException.");
+      }
+    } catch (Throwable t) {
+      fail("Caught " + t + ", but expected InvocationTargetException.");
+    }
+  }
+
+  @Test()
+  public void testProperties() {
+    setProperties(new String[]{
+        "org.torproject.descriptor.DummyCollectorImplementation",
+        "org.torproject.descriptor.DummyDownloaderImplementation",
+        "org.torproject.descriptor.DummyParserImplementation",
+        "org.torproject.descriptor.DummyReaderImplementation",
+      });
+    DescriptorCollector dc = DescriptorSourceFactory.createDescriptorCollector();
+    assertTrue(dc instanceof DummyCollectorImplementation);
+    assertEquals(1, DummyCollectorImplementation.count);
+    DescriptorDownloader dd = DescriptorSourceFactory.createDescriptorDownloader();
+    assertTrue(dd instanceof DummyDownloaderImplementation);
+    assertEquals(1, DummyDownloaderImplementation.count);
+    DescriptorParser dp = DescriptorSourceFactory.createDescriptorParser();
+    assertTrue(dp instanceof DummyParserImplementation);
+    assertEquals(1, DummyParserImplementation.count);
+    DescriptorReader dr = DescriptorSourceFactory.createDescriptorReader();
+    assertTrue(dr instanceof DummyReaderImplementation);
+    assertEquals(1, DummyReaderImplementation.count);
+  }
+
+}
+
+class DummyCollectorImplementation extends DescriptorCollectorImpl {
+  static int count;
+  public DummyCollectorImplementation() {
+    count++;
+  }
+}
+
+class DummyDownloaderImplementation extends DescriptorDownloaderImpl {
+  static int count;
+  public DummyDownloaderImplementation() {
+    count++;
+  }
+}
+
+class DummyParserImplementation extends DescriptorParserImpl {
+  static int count;
+  public DummyParserImplementation() {
+    count++;
+  }
+}
+
+class DummyReaderImplementation extends DescriptorReaderImpl {
+  static int count;
+  public DummyReaderImplementation() {
+    count++;
+  }
+}





More information about the tor-commits mailing list