[tor-commits] [collector/master] Implements task-19894.

karsten at torproject.org karsten at torproject.org
Fri Sep 2 14:38:06 UTC 2016


commit f514a1380db2962fcfbc3444b7643f93159ba3e5
Author: iwakeh <iwakeh at torproject.org>
Date:   Sat Aug 13 15:16:07 2016 +0200

    Implements task-19894.
    
    Throws a RuntimeException and informs the user that nothing was activated;
    and then exits.
    
    Added a new test and made necessary adaptions to affected tests.
---
 .../java/org/torproject/collector/conf/Configuration.java   | 12 ++++++++++++
 src/test/java/org/torproject/collector/MainTest.java        | 13 +++++++++++++
 .../org/torproject/collector/conf/ConfigurationTest.java    |  6 +++++-
 src/test/resources/junittest.policy                         |  1 +
 4 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/torproject/collector/conf/Configuration.java b/src/main/java/org/torproject/collector/conf/Configuration.java
index ee6552c..e55393c 100644
--- a/src/main/java/org/torproject/collector/conf/Configuration.java
+++ b/src/main/java/org/torproject/collector/conf/Configuration.java
@@ -50,6 +50,7 @@ public class Configuration extends Observable implements Cloneable {
     try {
       ft = Files.getLastModifiedTime(confPath);
       reload();
+      anythingActivated();
     } catch (IOException e) {
       throw new ConfigurationException("Cannot watch configuration file. "
           + "Reason: " + e.getMessage(), e);
@@ -81,6 +82,17 @@ public class Configuration extends Observable implements Cloneable {
     }
   }
 
+  private void anythingActivated() throws ConfigurationException {
+    if (!(this.getBool(Key.RelaydescsActivated)
+        || this.getBool(Key.BridgedescsActivated)
+        || this.getBool(Key.ExitlistsActivated)
+        || this.getBool(Key.UpdateindexActivated)
+        || this.getBool(Key.TorperfActivated))) {
+      throw new ConfigurationException("Nothing is activated!\n"
+          + "Please edit collector.properties. Exiting.");
+    }
+  }
+
   /** Return a copy of all properties. */
   public Properties getPropertiesCopy() {
     return (Properties) props.clone();
diff --git a/src/test/java/org/torproject/collector/MainTest.java b/src/test/java/org/torproject/collector/MainTest.java
index 05c16c5..5453dd4 100644
--- a/src/test/java/org/torproject/collector/MainTest.java
+++ b/src/test/java/org/torproject/collector/MainTest.java
@@ -171,5 +171,18 @@ public class MainTest {
     }
   }
 
+  @Test(expected = ConfigurationException.class)
+  public void testNoModuleActivated() throws Exception {
+    File conf = tmpf.newFile("test.conf");
+    try {
+      assertEquals(0L, conf.length());
+      // create default configuration
+      Main.main(new String[]{conf.toString()});
+    } catch (ConfigurationException ce) {
+      fail("This should not cause a ConfigurationException: " + ce);
+    }
+    // no module activated; the following should throw a ConfigurationException
+    Main.main(new String[]{conf.toString()});
+  }
 }
 
diff --git a/src/test/java/org/torproject/collector/conf/ConfigurationTest.java b/src/test/java/org/torproject/collector/conf/ConfigurationTest.java
index 45ab5ed..89a7750 100644
--- a/src/test/java/org/torproject/collector/conf/ConfigurationTest.java
+++ b/src/test/java/org/torproject/collector/conf/ConfigurationTest.java
@@ -18,6 +18,7 @@ import org.junit.rules.TemporaryFolder;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.lang.reflect.Field;
+import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.Observable;
@@ -182,6 +183,8 @@ public class ConfigurationTest {
         }
       });
     File confFile = tmpf.newFile("empty");
+    Files.write(confFile.toPath(), (Key.RelaydescsActivated.name() + "=true")
+        .getBytes());
     conf.setWatchableSourceAndLoad(confFile.toPath());
     MainTest.waitSec(1);
     confFile.setLastModified(System.currentTimeMillis());
@@ -202,10 +205,11 @@ public class ConfigurationTest {
         }
       });
     File confFile = tmpf.newFile("empty");
+    Files.write(confFile.toPath(), (Key.RelaydescsActivated.name() + "=true")
+        .getBytes());
     conf.setWatchableSourceAndLoad(confFile.toPath());
     MainTest.waitSec(1);
     confFile.delete();
-    conf.setProperty(Key.CompressRelayDescriptorDownloads.name(), "false");
     conf.setProperty(Key.ImportDirectoryArchives.name(), "false");
     Dummy dummy = new Dummy(conf);
     tmpf.newFolder("empty");
diff --git a/src/test/resources/junittest.policy b/src/test/resources/junittest.policy
index 0c7ccac..e2f4a26 100644
--- a/src/test/resources/junittest.policy
+++ b/src/test/resources/junittest.policy
@@ -7,6 +7,7 @@ grant {
   permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.fs";
   permission java.lang.RuntimePermission "accessDeclaredMembers";
   permission java.lang.RuntimePermission "getFileStoreAttributes";
+  permission java.lang.RuntimePermission "getStackTrace";
   permission java.lang.RuntimePermission "modifyThread";
   permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
   permission java.lang.RuntimePermission "shutdownHooks";





More information about the tor-commits mailing list