[tor-commits] [metrics-lib/master] Parse Unmeasured=1 in w lines of consensuses.

karsten at torproject.org karsten at torproject.org
Tue Apr 9 06:38:33 UTC 2013


commit 5b2104481930132b8ef7b2343e161a83cee1a89d
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Apr 9 08:36:53 2013 +0200

    Parse Unmeasured=1 in w lines of consensuses.
    
    Pointed out by atagar.
---
 .../torproject/descriptor/NetworkStatusEntry.java  |    6 ++++
 .../descriptor/impl/NetworkStatusEntryImpl.java    |    8 ++++++
 .../impl/RelayNetworkStatusConsensusImplTest.java  |   25 ++++++++++++++++++++
 3 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/src/org/torproject/descriptor/NetworkStatusEntry.java b/src/org/torproject/descriptor/NetworkStatusEntry.java
index 3bda176..2f0bb89 100644
--- a/src/org/torproject/descriptor/NetworkStatusEntry.java
+++ b/src/org/torproject/descriptor/NetworkStatusEntry.java
@@ -55,6 +55,12 @@ public interface NetworkStatusEntry {
    * bandwidth line. */
   public long getMeasured();
 
+  /* Return whether the status entry contained an Unmeasured=1 entry in
+   * its bandwidth line, meaning that the bandwidth authorities didn't
+   * measure this relay yet.  Only included in consensuses using method
+   * 17 or higher. */
+  public boolean getUnmeasured();
+
   /* Return the default policy of the port summary or null if the status
    * entry didn't contain a port summary line. */
   public String getDefaultPolicy();
diff --git a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
index 901e17e..337484e 100644
--- a/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
+++ b/src/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
@@ -160,6 +160,9 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
     if (pairs.containsKey("Measured")) {
       this.measured = pairs.remove("Measured");
     }
+    if (pairs.containsKey("Unmeasured")) {
+      this.unmeasured = pairs.remove("Unmeasured") == 1L;
+    }
     if (!pairs.isEmpty()) {
       /* Ignore unknown key-value pair. */
     }
@@ -255,6 +258,11 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
     return this.measured;
   }
 
+  private boolean unmeasured = false;
+  public boolean getUnmeasured() {
+    return this.unmeasured;
+  }
+
   private String defaultPolicy;
   public String getDefaultPolicy() {
     return this.defaultPolicy;
diff --git a/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java b/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
index e5a20e3..ca7ea7f 100644
--- a/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
+++ b/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
@@ -13,6 +13,7 @@ import java.util.List;
 
 
 import org.junit.Test;
+import org.torproject.descriptor.NetworkStatusEntry;
 import org.torproject.descriptor.RelayNetworkStatusConsensus;
 
 /* TODO Add test cases for all lines starting with "opt ". */
@@ -940,6 +941,30 @@ public class RelayNetworkStatusConsensusImplTest {
     new RelayNetworkStatusConsensusImpl(cb.buildConsensus(), true);
   }
 
+  @Test()
+  public void testWLineUnmeasured() throws DescriptorParseException {
+    StatusEntryBuilder sb = new StatusEntryBuilder();
+    sb.wLine = "w Bandwidth=42424242 Unmeasured=1";
+    ConsensusBuilder cb = new ConsensusBuilder();
+    cb.statusEntries.add(sb.buildStatusEntry());
+    RelayNetworkStatusConsensus consensus =
+        new RelayNetworkStatusConsensusImpl(cb.buildConsensus(), true);
+    for (NetworkStatusEntry s : consensus.getStatusEntries().values()) {
+      if (s.getBandwidth() == 42424242L) {
+        assertTrue(s.getUnmeasured());
+      }
+    }
+  }
+
+  @Test()
+  public void testWLineNotUnmeasured() throws DescriptorParseException {
+    RelayNetworkStatusConsensus consensus =
+        StatusEntryBuilder.createWithWLine("w Bandwidth=20");
+    for (NetworkStatusEntry s : consensus.getStatusEntries().values()) {
+      assertFalse(s.getUnmeasured());
+    }
+  }
+
   @Test(expected = DescriptorParseException.class)
   public void testPLineNoPolicy() throws DescriptorParseException {
     StatusEntryBuilder.createWithPLine("p 80");



More information about the tor-commits mailing list