This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f1776b  Refine some of the logic and tests for dns discovery
2f1776b is described below

commit 2f1776bbf2089263360f80ad2f3cc63890694f72
Author: Antoine Toulme <[email protected]>
AuthorDate: Mon May 27 15:47:44 2019 -0700

    Refine some of the logic and tests for dns discovery
---
 .../kotlin/org/apache/tuweni/discovery/DNSEntry.kt | 28 +++++++----
 .../org/apache/tuweni/discovery/DNSEntryTest.kt    | 55 +++++++++++++++++-----
 2 files changed, 64 insertions(+), 19 deletions(-)

diff --git 
a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSEntry.kt 
b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSEntry.kt
index 5923e3b..022c6f1 100644
--- a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSEntry.kt
+++ b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSEntry.kt
@@ -48,7 +48,7 @@ internal interface DNSEntry {
       } else if (attrs.containsKey("enrtree-link")) {
         return ENRTreeLink(attrs)
       } else {
-        throw InvalidEntryException("$serialized should contain enrtree, 
enrtree-root or enrtree-link")
+        throw InvalidEntryException("$serialized should contain enrtree, enr, 
enrtree-root or enrtree-link")
       }
     }
   }
@@ -82,24 +82,36 @@ class ENRTreeRoot(attrs: Map<String, String>) : DNSEntry {
     sig = SECP256K1.Signature.fromBytes(Base64URLSafe.decode(attrs["sig"]!!))
     hash = Base32.decode(attrs["hash"]!!)
   }
+
+  override fun toString(): String {
+    val encodedHash = Base32.encode(hash)
+    return "enrtree-root=$version hash=${encodedHash.subSequence(0, 
encodedHash.indexOf("="))} seq=$seq sig=${Base64URLSafe.encode(sig.bytes())}"
+  }
 }
 
 class ENRTree(attrs: Map<String, String>) : DNSEntry {
 
+  val entries: List<String>
   init {
-    if (attrs["enrtree"] == null) {
-      throw InvalidEntryException("Missing attributes on enrtree entry")
-    }
+    val attr = attrs["enrtree"] ?: throw InvalidEntryException("Missing 
attributes on enrtree entry")
+    entries = attr.split(",")
+  }
+
+  override fun toString(): String {
+    return "enrtree=${entries.joinToString(",")}"
   }
 }
+
 class ENRTreeLink(attrs: Map<String, String>) : DNSEntry {
 
   val domainName: String
   init {
-    if (attrs["enrtree-link"] == null) {
-      throw InvalidEntryException("Missing attributes on enrtree-link entry")
-    }
-    domainName = attrs["enrtree-link"]!!
+    val attr = attrs["enrtree-link"] ?: throw InvalidEntryException("Missing 
attributes on enrtree-link entry")
+    domainName = attr
+  }
+
+  override fun toString(): String {
+    return "enrtree-link=$domainName"
   }
 }
 
diff --git 
a/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSEntryTest.kt 
b/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSEntryTest.kt
index a1ea440..e2ef1e8 100644
--- a/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSEntryTest.kt
+++ b/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSEntryTest.kt
@@ -28,42 +28,42 @@ class DNSEntryTest {
 
   @Test
   fun testInvalidEntry() {
-    val exception: InvalidEntryException = assertThrows({
+    val exception: InvalidEntryException = assertThrows {
       DNSEntry.readDNSEntry("garbage")
-    })
+    }
     assertEquals("Invalid record entry garbage", exception.message)
   }
 
   @Test
   fun testInvalidEntryMissingSeparator() {
-    val exception: InvalidEntryException = assertThrows({
+    val exception: InvalidEntryException = assertThrows {
       DNSEntry.readDNSEntry("garbage=abc def")
-    })
+    }
     assertEquals("Invalid record entry garbage=abc def", exception.message)
   }
 
   @Test
   fun testInvalidEntryMissingENR() {
-    val exception: InvalidEntryException = assertThrows({
+    val exception: InvalidEntryException = assertThrows {
       DNSEntry.readDNSEntry("garbage=abc def=gfh")
-    })
-    assertEquals("garbage=abc def=gfh should contain enrtree, enrtree-root or 
enrtree-link", exception.message)
+    }
+    assertEquals("garbage=abc def=gfh should contain enrtree, enr, 
enrtree-root or enrtree-link", exception.message)
   }
 
   @Test
   fun missingSigEntry() {
-    val exception: InvalidEntryException = assertThrows({
+    val exception: InvalidEntryException = assertThrows {
       DNSEntry.readDNSEntry("enrtree-root=v1 hash=TO4Q75OQ2N7DX4EOOR7X66A6OM 
seq=3")
-    })
+    }
     assertEquals("Missing attributes on root entry", exception.message)
   }
 
   @Test
   fun missingSeqEntry() {
-    val exception: InvalidEntryException = assertThrows({
+    val exception: InvalidEntryException = assertThrows {
       DNSEntry.readDNSEntry("enrtree-root=v1 hash=TO4Q75OQ2N7DX4EOOR7X66A6OM " 
+
         
"sig=N-YY6UB9xD0hFx1Gmnt7v0RfSxch5tKyry2SRDoLx7B4GfPXagwLxQqyf7gAMvApFn_ORwZQekMWa_pXrcGCtwE=")
-    })
+    }
     assertEquals("Missing attributes on root entry", exception.message)
   }
 
@@ -93,4 +93,37 @@ class DNSEntryTest {
     assertNotNull(nodeRecord)
     nodeRecord.validate()
   }
+
+  @Test
+  fun testValidENRTreeNode() {
+    val entry = 
DNSEntry.readDNSEntry("enrtree=F4YWVKW4N6B2DDZWFS4XCUQBHY,JTNOVTCP6XZUMXDRANXA6SWXTM,"
 +
+      "JGUFMSAGI7KZYB3P7IZW4S5Y3A")
+    val enr = entry as ENRTree
+    val entries = enr.entries
+    
assertEquals(listOf("F4YWVKW4N6B2DDZWFS4XCUQBHY","JTNOVTCP6XZUMXDRANXA6SWXTM","JGUFMSAGI7KZYB3P7IZW4S5Y3A"),
 entries)
+  }
+
+  @Test
+  fun testRootToString() {
+    val root = ENRTreeRoot(mapOf(Pair("enrtree-root", "v1"), Pair("hash", 
"TO4Q75OQ2N7DX4EOOR7X66A6OM"), Pair("seq", "3"),
+      Pair("sig", 
"N-YY6UB9xD0hFx1Gmnt7v0RfSxch5tKyry2SRDoLx7B4GfPXagwLxQqyf7gAMvApFn_ORwZQekMWa_pXrcGCtwE=")))
+    assertEquals("enrtree-root=v1 hash=TO4Q75OQ2N7DX4EOOR7X66A6OM seq=3 
sig=N-YY6UB9xD0hFx1Gmnt7v0RfSxch5tKyry" +
+      "2SRDoLx7B4GfPXagwLxQqyf7gAMvApFn_ORwZQekMWa_pXrcGCtwE=", 
root.toString())
+  }
+
+  @Test
+  fun testEntryToString() {
+    val entry = 
DNSEntry.readDNSEntry("enrtree=F4YWVKW4N6B2DDZWFS4XCUQBHY,JTNOVTCP6XZUMXDRANXA6SWXTM,"
 +
+      "JGUFMSAGI7KZYB3P7IZW4S5Y3A")
+    
assertEquals("enrtree=F4YWVKW4N6B2DDZWFS4XCUQBHY,JTNOVTCP6XZUMXDRANXA6SWXTM,JGUFMSAGI7KZYB3P7IZW4S5Y3A",
+      entry.toString())
+  }
+
+  @Test
+  fun testEntryLinkToString() {
+    val entry = 
DNSEntry.readDNSEntry("enrtree-link=AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7B"
 +
+      "[email protected]")
+    
assertEquals("enrtree-link=am5fcqlwizx2qfpnjap7vuerccrngrhwzg3yyhiuv7bvdq5fdp...@morenodes.example.org",
+      entry.toString())
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to