[tor-commits] [metrics-lib/master] directory-footer lines were optional before consensus method 9.
karsten at torproject.org
karsten at torproject.org
Sat Feb 25 12:03:45 UTC 2012
commit b57644ef288f7441fc07ce4833a0c1407e052a5e
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Fri Feb 17 08:06:56 2012 +0100
directory-footer lines were optional before consensus method 9.
---
.../impl/RelayNetworkStatusConsensusImpl.java | 5 ++---
.../impl/RelayNetworkStatusVoteImpl.java | 5 ++---
.../descriptor/impl/ConsensusBuilder.java | 6 ++++++
.../impl/RelayNetworkStatusConsensusImplTest.java | 15 +++++++++++++++
.../impl/RelayNetworkStatusVoteImplTest.java | 2 +-
5 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/src/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java b/src/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
index 10f97c0..734ee4c 100644
--- a/src/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
+++ b/src/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImpl.java
@@ -44,11 +44,10 @@ public class RelayNetworkStatusConsensusImpl extends NetworkStatusImpl
super(consensusBytes, failUnrecognizedDescriptorLines);
Set<String> exactlyOnceKeywords = new HashSet<String>(Arrays.asList((
"vote-status,consensus-method,valid-after,fresh-until,"
- + "valid-until,voting-delay,known-flags,"
- + "directory-footer").split(",")));
+ + "valid-until,voting-delay,known-flags").split(",")));
this.checkExactlyOnceKeywords(exactlyOnceKeywords);
Set<String> atMostOnceKeywords = new HashSet<String>(Arrays.asList((
- "client-versions,server-versions,params,"
+ "client-versions,server-versions,params,directory-footer,"
+ "bandwidth-weights").split(",")));
this.checkAtMostOnceKeywords(atMostOnceKeywords);
this.checkFirstKeyword("network-status-version");
diff --git a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
index a00cd75..28850a7 100644
--- a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
+++ b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
@@ -47,12 +47,11 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
+ "valid-until,voting-delay,known-flags,dir-source,"
+ "dir-key-certificate-version,fingerprint,dir-key-published,"
+ "dir-key-expires,dir-identity-key,dir-signing-key,"
- + "dir-key-certification,directory-footer,directory-signature").
- split(",")));
+ + "dir-key-certification,directory-signature").split(",")));
this.checkExactlyOnceKeywords(exactlyOnceKeywords);
Set<String> atMostOnceKeywords = new HashSet<String>(Arrays.asList((
"client-versions,server-versions,params,contact,legacy-key,"
- + "dir-key-crosscert,dir-address").split(",")));
+ + "dir-key-crosscert,dir-address,directory-footer").split(",")));
this.checkAtMostOnceKeywords(atMostOnceKeywords);
this.checkFirstKeyword("network-status-version");
}
diff --git a/test/org/torproject/descriptor/impl/ConsensusBuilder.java b/test/org/torproject/descriptor/impl/ConsensusBuilder.java
index 2d0291d..f35864b 100644
--- a/test/org/torproject/descriptor/impl/ConsensusBuilder.java
+++ b/test/org/torproject/descriptor/impl/ConsensusBuilder.java
@@ -108,6 +108,9 @@ public class ConsensusBuilder {
List<String> dirSources = new ArrayList<String>();
List<String> statusEntries = new ArrayList<String>();
private String directoryFooterLine = "directory-footer";
+ protected void setDirectoryFooterLine(String line) {
+ this.directoryFooterLine = line;
+ }
protected static RelayNetworkStatusConsensus
createWithDirectoryFooterLine(String line)
throws DescriptorParseException {
@@ -119,6 +122,9 @@ public class ConsensusBuilder {
+ "Wbe=0 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=1021 Wee=10000 "
+ "Weg=1021 Wem=10000 Wgb=10000 Wgd=8694 Wgg=10000 Wgm=10000 "
+ "Wmb=10000 Wmd=285 Wme=0 Wmg=0 Wmm=10000";
+ protected void setBandwidthWeightsLine(String line) {
+ this.bandwidthWeightsLine = line;
+ }
protected static RelayNetworkStatusConsensus
createWithBandwidthWeightsLine(String line)
throws DescriptorParseException {
diff --git a/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java b/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
index b37b72a..65c9658 100644
--- a/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
+++ b/test/org/torproject/descriptor/impl/RelayNetworkStatusConsensusImplTest.java
@@ -981,10 +981,25 @@ public class RelayNetworkStatusConsensusImplTest {
@Test(expected = DescriptorParseException.class)
public void testDirectoryFooterNoLine()
throws DescriptorParseException {
+ /* This breaks, because a bandwidth-weights line without a preceding
+ * directory-footer line is not allowed. */
ConsensusBuilder.createWithDirectoryFooterLine(null);
}
@Test()
+ public void testDirectoryFooterMissing()
+ throws DescriptorParseException {
+ ConsensusBuilder cb = new ConsensusBuilder();
+ cb.setDirectoryFooterLine(null);
+ cb.setBandwidthWeightsLine(null);
+ /* This does not break, because directory footers were optional before
+ * consensus method 9. */
+ RelayNetworkStatusConsensus consensus =
+ new RelayNetworkStatusConsensusImpl(cb.buildConsensus(), true);
+ assertNull(consensus.getBandwidthWeights());
+ }
+
+ @Test()
public void testDirectoryFooterLineSpace()
throws DescriptorParseException {
ConsensusBuilder.createWithDirectoryFooterLine("directory-footer ");
diff --git a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
index 8a60eec..7569d7a 100644
--- a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
+++ b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
@@ -1032,7 +1032,7 @@ public class RelayNetworkStatusVoteImplTest {
VoteBuilder.createWithDirKeyCertificationLines(null);
}
- @Test(expected = DescriptorParseException.class)
+ @Test()
public void testDirectoryFooterLineMissing()
throws DescriptorParseException {
VoteBuilder.createWithDirectoryFooterLine(null);
More information about the tor-commits
mailing list