[tor-commits] [metrics-lib/master] Add support for parsing geoip6-db-digest lines.

karsten at torproject.org karsten at torproject.org
Wed Nov 7 18:59:09 UTC 2012


commit 43b939025031706ab1eeca9d1a72fc9ce9554e45
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Wed Nov 7 13:55:23 2012 -0500

    Add support for parsing geoip6-db-digest lines.
---
 .../torproject/descriptor/ExtraInfoDescriptor.java |    4 ++++
 .../descriptor/impl/ExtraInfoDescriptorImpl.java   |   17 +++++++++++++++++
 .../impl/ExtraInfoDescriptorImplTest.java          |   19 +++++++++++++++++++
 3 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/org/torproject/descriptor/ExtraInfoDescriptor.java b/src/org/torproject/descriptor/ExtraInfoDescriptor.java
index 05707a5..0e19425 100644
--- a/src/org/torproject/descriptor/ExtraInfoDescriptor.java
+++ b/src/org/torproject/descriptor/ExtraInfoDescriptor.java
@@ -32,6 +32,10 @@ public interface ExtraInfoDescriptor extends Descriptor {
    * null if no GeoIP database digest is included. */
   public String getGeoipDbDigest();
 
+  /* Return the SHA1 digest of the GeoIPv6 database used by this relay, or
+   * null if no GeoIPv6 database digest is included. */
+  public String getGeoip6DbDigest();
+
   /* Return the end of the included directory request statistics interval,
    * or -1 if no directory request statistics are included. */
   public long getDirreqStatsEndMillis();
diff --git a/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java b/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
index 45848d2..d84a5e2 100644
--- a/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
+++ b/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
@@ -104,6 +104,8 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
         this.parseWriteHistoryLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("geoip-db-digest")) {
         this.parseGeoipDbDigestLine(line, lineNoOpt, partsNoOpt);
+      } else if (keyword.equals("geoip6-db-digest")) {
+        this.parseGeoip6DbDigestLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("geoip-start-time")) {
         this.parseGeoipStartTimeLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("geoip-client-origins")) {
@@ -229,6 +231,16 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
         partsNoOpt[1]);
   }
 
+  private void parseGeoip6DbDigestLine(String line, String lineNoOpt,
+      String[] partsNoOpt) throws DescriptorParseException {
+    if (partsNoOpt.length != 2) {
+      throw new DescriptorParseException("Illegal line '" + line
+          + "' in extra-info descriptor.");
+    }
+    this.geoip6DbDigest = ParseHelper.parseTwentyByteHexString(line,
+        partsNoOpt[1]);
+  }
+
   private void parseGeoipStartTimeLine(String line, String lineNoOpt,
       String[] partsNoOpt) throws DescriptorParseException {
     if (partsNoOpt.length != 3) {
@@ -656,6 +668,11 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
     return this.geoipDbDigest;
   }
 
+  private String geoip6DbDigest;
+  public String getGeoip6DbDigest() {
+    return this.geoip6DbDigest;
+  }
+
   private long dirreqStatsEndMillis = -1L;
   public long getDirreqStatsEndMillis() {
     return this.dirreqStatsEndMillis;
diff --git a/test/org/torproject/descriptor/impl/ExtraInfoDescriptorImplTest.java b/test/org/torproject/descriptor/impl/ExtraInfoDescriptorImplTest.java
index c8df3ce..a2becd2 100644
--- a/test/org/torproject/descriptor/impl/ExtraInfoDescriptorImplTest.java
+++ b/test/org/torproject/descriptor/impl/ExtraInfoDescriptorImplTest.java
@@ -77,6 +77,13 @@ public class ExtraInfoDescriptorImplTest {
       db.geoipDbDigestLine = line;
       return new ExtraInfoDescriptorImpl(db.buildDescriptor(), true);
     }
+    private String geoip6DbDigestLine = null;
+    private static ExtraInfoDescriptor createWithGeoip6DbDigestLine(
+        String line) throws DescriptorParseException {
+      DescriptorBuilder db = new DescriptorBuilder();
+      db.geoip6DbDigestLine = line;
+      return new ExtraInfoDescriptorImpl(db.buildDescriptor(), true);
+    }
     private String geoipStatsLines = null;
     private static ExtraInfoDescriptor createWithGeoipStatsLines(
         String lines) throws DescriptorParseException {
@@ -170,6 +177,9 @@ public class ExtraInfoDescriptorImplTest {
       if (this.geoipDbDigestLine != null) {
         sb.append(this.geoipDbDigestLine + "\n");
       }
+      if (this.geoip6DbDigestLine != null) {
+        sb.append(this.geoip6DbDigestLine + "\n");
+      }
       if (this.geoipStatsLines != null) {
         sb.append(this.geoipStatsLines + "\n");
       }
@@ -832,6 +842,15 @@ public class ExtraInfoDescriptorImplTest {
   }
 
   @Test()
+  public void testGeoip6DbDigestValid() throws DescriptorParseException {
+    ExtraInfoDescriptor descriptor = DescriptorBuilder.
+        createWithGeoip6DbDigestLine("geoip6-db-digest "
+        + "916A3CA8B7DF61473D5AE5B21711F35F301CE9E8");
+    assertEquals("916A3CA8B7DF61473D5AE5B21711F35F301CE9E8",
+        descriptor.getGeoip6DbDigest());
+  }
+
+  @Test()
   public void testGeoipStatsValid() throws DescriptorParseException {
     ExtraInfoDescriptor descriptor = GeoipStatsBuilder.
         createWithDefaultLines();



More information about the tor-commits mailing list