[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [exonerator/master] Add tests and adapt build.xml to run these.



commit 6f2f34b1c87682b5fa1234b410a6920e550d8189
Author: iwakeh <iwakeh@xxxxxxxxxxxxxx>
Date:   Tue Sep 5 13:21:28 2017 +0000

    Add tests and adapt build.xml to run these.
    
    Also added test sources to checkstyle target.
---
 build.xml                                          |  71 ++++++++++--
 .../exonerator/ExoneraTorServletTest.java          |  68 ++++++++++++
 .../torproject/exonerator/QueryResponseTest.java   | 122 +++++++++++++++++++++
 3 files changed, 250 insertions(+), 11 deletions(-)

diff --git a/build.xml b/build.xml
index 4e05077..2dc70f0 100644
--- a/build.xml
+++ b/build.xml
@@ -6,27 +6,46 @@
   <property name="webapp" value="src/main/webapp"/>
   <property name="generated" value="generated/"/>
   <property name="classes" value="${generated}/classes"/>
+  <property name="testclasses" value="${generated}/testclasses/"/>
   <property name="dist" value="${generated}/dist"/>
   <property name="testresources" value="src/test/resources/"/>
+  <property name="testsources" value="src/test/java"/>
+  <property name="testresult" value="${generated}/test-results"/>
   <property name="libs" value="lib"/>
   <property name="webxmlfile" value="src/main/webapp/web.xml"/>
   <property name="warfile" value="${dist}/exonerator.war"/>
   <property name="source-and-target-java-version" value="1.7" />
   <property name="metricslibversion" value="2.0.0" />
+  <patternset id="runtime" >
+    <include name="metrics-lib-${metricslibversion}.jar"/>
+    <include name="commons-compress-1.13.jar"/>
+    <include name="commons-codec-1.10.jar"/>
+    <include name="commons-lang-2.6.jar"/>
+    <include name="gson-2.4.jar" />
+    <include name="postgresql-9.4.1212.jar"/>
+    <include name="servlet-api-3.0.jar"/>
+    <include name="logback-core-1.1.9.jar" />
+    <include name="logback-classic-1.1.9.jar" />
+    <include name="slf4j-api-1.7.22.jar"/>
+    <include name="xz-1.6.jar"/>
+  </patternset>
   <path id="classpath">
     <pathelement path="${classes}"/>
     <fileset dir="${libs}">
-      <include name="metrics-lib-${metricslibversion}.jar"/>
-      <include name="commons-compress-1.13.jar"/>
-      <include name="commons-codec-1.10.jar"/>
-      <include name="commons-lang-2.6.jar"/>
-      <include name="gson-2.4.jar" />
-      <include name="postgresql-9.4.1212.jar"/>
-      <include name="servlet-api-3.0.jar"/>
-      <include name="logback-core-1.1.9.jar" />
-      <include name="logback-classic-1.1.9.jar" />
-      <include name="slf4j-api-1.7.22.jar"/>
-      <include name="xz-1.6.jar"/>
+      <patternset refid="runtime" />
+    </fileset>
+  </path>
+  <path id="test.classpath">
+    <pathelement path="${classes}"/>
+    <pathelement path="${resources}"/>
+    <pathelement path="${testclasses}"/>
+    <pathelement path="${testresources}"/>
+    <fileset dir="${libs}">
+      <patternset refid="runtime" />
+    </fileset>
+    <fileset dir="${libs}">
+      <include name="junit4-4.12.jar"/>
+      <include name="hamcrest-all-1.3.jar"/>
     </fileset>
   </path>
   <path id="checkstyle.classpath" >
@@ -44,6 +63,7 @@
   <target name="init">
     <copy file="${resources}/config" tofile="${basedir}/config"/>
     <mkdir dir="${classes}"/>
+    <mkdir dir="${testclasses}"/>
     <mkdir dir="${dist}"/>
   </target>
 
@@ -62,6 +82,33 @@
     </javac>
   </target>
 
+  <target name="testcompile" depends="init">
+    <javac destdir="${testclasses}"
+           srcdir="${testsources}"
+           source="${source-and-target-java-version}"
+           target="${source-and-target-java-version}"
+           debug="true"
+           deprecation="true"
+           optimize="false"
+           failonerror="true"
+           includeantruntime="false">
+      <classpath refid="test.classpath"/>
+    </javac>
+  </target>
+
+  <target name="test" depends="compile,testcompile">
+    <junit fork="true"
+           haltonfailure="true"
+           printsummary="on">
+      <classpath refid="test.classpath"/>
+      <formatter type="plain" usefile="false"/>
+      <batchtest>
+        <fileset dir="${testclasses}"
+                 includes="**/*Test.class"/>
+      </batchtest>
+    </junit>
+  </target>
+
   <!-- Import descriptors into the ExoneraTor database. -->
   <target name="run" depends="compile">
     <java fork="true"
@@ -78,6 +125,8 @@
     <checkstyle config="${testresources}/metrics_checks.xml">
       <fileset dir="${sources}"
                includes="**/*.java" />
+      <fileset dir="${testsources}"
+               includes="**/*.java" />
       <classpath>
         <path refid="classpath" />
         <path refid="checkstyle.classpath" />
diff --git a/src/test/java/org/torproject/exonerator/ExoneraTorServletTest.java b/src/test/java/org/torproject/exonerator/ExoneraTorServletTest.java
new file mode 100644
index 0000000..b2e3ed4
--- /dev/null
+++ b/src/test/java/org/torproject/exonerator/ExoneraTorServletTest.java
@@ -0,0 +1,68 @@
+/* Copyright 2017 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.exonerator;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+public class ExoneraTorServletTest {
+
+  private static final String[][] ipTestData
+      = {   // input, output
+        {"86.95.81.23", "86.95.81.23"},
+        {"786.95.81.23", null},
+        {"86.95.81.2334", null},
+        {null, ""},
+        {"", ""},
+        {"[2a01:4f8:190:514a::2]", "2a01:4f8:190:514a::2"},
+        {"2a01:4f8:1234:0:5678:0:9abc:d", "2a01:4f8:1234:0:5678:0:9abc:d"},
+        {"2a01:4f8:1234:0:5678:0:9abc:u", null},
+        {"2a01:4f8::0:9abc:d", "2a01:4f8::0:9abc:d"},
+        {"2A01:4F8::0:9ABC:D", "2a01:4f8::0:9abc:d"},
+        {"2a01:4f8:::0:9abc:d", null},
+        {"[[2a01:4f8:190:514a::2]]", null},
+        {"2a01:4f8:190:514a::2", "2a01:4f8:190:514a::2"}
+      };
+
+  @Test
+  public void testIpParsing() {
+    for (String[] data : ipTestData) {
+      assertEquals(data[1], ExoneraTorServlet.parseIpParameter(data[0]));
+    }
+  }
+
+  private static final String[][] timestampTestData
+      = {   // input, output
+        {"2000-   10-10", "2000-10-10"},
+        {"2010-12-16 +0001", "2010-12-16"},
+        {"2010-12-16 CEST", "2010-12-16"},
+        {"2010-12-16abcd", "2010-12-16"},
+        {"2010-12-16", "2010-12-16"},
+        {"2000-10-10 12:10:00", "2000-10-10"},
+        {"2000-10-10 1210-04-05", "2000-10-10"},
+        {"20.10.16", null},
+        {null, ""},
+        {"", ""},
+        {"2010-12 16", null},
+        {"2010-\t12-\t16", "2010-12-16"},
+        {"2010- 12- \t16", "2010-12-16"},
+        {"2003-12-\t16", "2003-12-16"},
+        {"2004-10-10\t", "2004-10-10"},
+        {"\n2005-10-10\t\t", "2005-10-10"},
+        {"    2001-10-10   ", "2001-10-10"}
+      };
+
+  @Test
+  public void testTimestampParsing() {
+    for (String[] data : timestampTestData) {
+      assertEquals(data[1], ExoneraTorServlet.parseTimestampParameter(data[0]));
+    }
+  }
+
+}
+
diff --git a/src/test/java/org/torproject/exonerator/QueryResponseTest.java b/src/test/java/org/torproject/exonerator/QueryResponseTest.java
new file mode 100644
index 0000000..8c79949
--- /dev/null
+++ b/src/test/java/org/torproject/exonerator/QueryResponseTest.java
@@ -0,0 +1,122 @@
+/* Copyright 2017 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.exonerator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.io.StringReader;
+import java.util.Arrays;
+import java.util.Collection;
+
+@RunWith(Parameterized.class)
+public class QueryResponseTest {
+
+  /** Test data structure: QueryResponse, JSON string. */
+  @Parameters
+  public static Collection<Object[]> testData() {
+    return Arrays.asList(new Object[][] {
+        {null,
+        "{\"version\":\"0.3\","
+          + "\"query_address\":\"12.13.14.15\","
+          + "\"query_date\":\"2016-12-12\","
+          + "\"first_date_in_database\":\"2016-01-01\","
+          + "\"last_date_in_database\":\"2016-12-31\","
+          + "\"relevant_statuses\":true,\"matches\":[{\"timestamp\":\"2016-12-03\","
+          + "\"addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"],\"fingerprint\":\"fingerprint-not-checked\","
+          + "\"nickname\":\"some name\","
+          + "\"exit\":true},{\"timestamp\":\"2012-12-03\","
+          + "\"addresses\":[\"12.13.20.15\","
+          + "\"12.13.20.16\"],\"fingerprint\":\"fingerprint2-not-checked\","
+          + "\"nickname\":\"some name2\","
+          + "\"exit\":false}],\"nearby_addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"]}"},
+        {new QueryResponse("1.1", null, null, null,
+          null, false, null, null),
+          "{\"version\":\"1.1\",\"relevant_statuses\":false}"},
+        {new QueryResponse("1.0", "12.13.14.15", "2016-12-12", "2016-01-01",
+          "2016-12-31", true,
+        new QueryResponse.Match[]{new QueryResponse.Match("2016-12-03",
+        new String[] {"12.13.14.15", "12.13.14.16"},
+        "fingerprint-not-checked", "some name", true),
+          new QueryResponse.Match("2012-12-03",
+          new String[] {"12.13.20.15", "12.13.20.16"},
+          "fingerprint2-not-checked", "some name2", false)},
+          new String[] {"12.13.14.15", "12.13.14.16"}),
+          "{\"version\":\"1.0\","
+          + "\"query_address\":\"12.13.14.15\","
+          + "\"query_date\":\"2016-12-12\","
+          + "\"first_date_in_database\":\"2016-01-01\","
+          + "\"last_date_in_database\":\"2016-12-31\","
+          + "\"relevant_statuses\":true,\"matches\":[{\"timestamp\":\"2016-12-03\","
+          + "\"addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"],\"fingerprint\":\"fingerprint-not-checked\","
+          + "\"nickname\":\"some name\","
+          + "\"exit\":true},{\"timestamp\":\"2012-12-03\","
+          + "\"addresses\":[\"12.13.20.15\","
+          + "\"12.13.20.16\"],\"fingerprint\":\"fingerprint2-not-checked\","
+          + "\"nickname\":\"some name2\","
+          + "\"exit\":false}],\"nearby_addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"]}"},
+        {new QueryResponse("1.0", "12.13.14.15", "2016-12-12", "2016-01-01",
+            "2016-12-31", false,
+            new QueryResponse.Match[]{new QueryResponse.Match("2016-12-03",
+            new String[] {"12.13.14.15", "12.13.14.16"},
+            "fingerprint-not-checked", "some name", null),
+              new QueryResponse.Match("2012-12-03",
+              new String[] {"12.13.20.15", "12.13.20.16"},
+              "fingerprint2-not-checked", "some name2", true)},
+            new String[] {"12.13.14.15", "12.13.14.16"}),
+          "{\"version\":\"1.0\","
+          + "\"query_address\":\"12.13.14.15\","
+          + "\"query_date\":\"2016-12-12\","
+          + "\"first_date_in_database\":\"2016-01-01\","
+          + "\"last_date_in_database\":\"2016-12-31\","
+          + "\"relevant_statuses\":false,\"matches\":[{\"timestamp\":\"2016-12-03\","
+          + "\"addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"],\"fingerprint\":\"fingerprint-not-checked\","
+          + "\"nickname\":\"some name\"},{\"timestamp\":\"2012-12-03\","
+          + "\"addresses\":[\"12.13.20.15\","
+          + "\"12.13.20.16\"],\"fingerprint\":\"fingerprint2-not-checked\","
+          + "\"nickname\":\"some name2\","
+          + "\"exit\":true}],\"nearby_addresses\":[\"12.13.14.15\","
+          + "\"12.13.14.16\"]}"}
+    });
+  }
+
+  private QueryResponse queryResponse;
+  private String json;
+
+  public QueryResponseTest(QueryResponse qr, String json) {
+    this.queryResponse = qr;
+    this.json = json;
+  }
+
+  @Test
+  public void testJsonReading() {
+    if (null == this.queryResponse) {
+      assertNull(QueryResponse.fromJson(new StringReader(this.json)));
+    } else {
+      assertEquals(json,
+          QueryResponse.toJson(QueryResponse.fromJson(new StringReader(this.json))));
+    }
+  }
+
+  @Test
+  public void testJsonWriting() {
+    if (null == this.queryResponse) {
+      return;
+    }
+    assertEquals(json, QueryResponse.toJson(this.queryResponse));
+  }
+
+}
+



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits