commit f514a1380db2962fcfbc3444b7643f93159ba3e5 Author: iwakeh iwakeh@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";