commit 5b2104481930132b8ef7b2343e161a83cee1a89d Author: Karsten Loesing karsten.loesing@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");
tor-commits@lists.torproject.org