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 8fae725  Fix for issue #50 - support relative path
8fae725 is described below

commit 8fae725094b3e66c7e5954e4d47311b6da26d936
Author: Antoine Toulme <[email protected]>
AuthorDate: Sun Mar 1 22:33:52 2020 -0800

    Fix for issue #50 - support relative path
---
 .../kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt  |  2 +-
 .../kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt     |  4 ++--
 .../tuweni/devp2p/v5/internal/DefaultUdpConnector.kt      |  2 +-
 .../devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt |  6 ++++++
 .../org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt      |  3 +++
 .../org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt   | 15 +++++++++------
 .../org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt      |  8 +++-----
 .../tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt  |  2 +-
 .../apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt   | 11 +++++++++++
 .../org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt  | 11 -----------
 .../tuweni/net/tls/FileBackedFingerprintRepository.java   |  2 +-
 .../net/tls/FileBackedFingerprintRepositoryTest.java      | 11 +++++++++++
 12 files changed, 49 insertions(+), 28 deletions(-)

diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
index 134c681..cc48c86 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/MessageHandler.kt
@@ -21,7 +21,7 @@ import org.apache.tuweni.devp2p.v5.packet.UdpMessage
 import java.net.InetSocketAddress
 
 /**
- * Udp message handler, aimed to process it's parameters and sending result
+ * Udp message handler, aimed to process its parameters and sending result
  */
 interface MessageHandler<T : UdpMessage> {
 
diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
index f731476..7c4b2f6 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/PacketCodec.kt
@@ -36,7 +36,7 @@ import org.apache.tuweni.devp2p.v5.packet.UdpMessage
 interface PacketCodec {
 
   /**
-   * Encodes message, encrypting it's body
+   * Encodes message, encrypting its body
    *
    * @param message message for encoding
    * @param destNodeId receiver node identifier for tag creation
@@ -47,7 +47,7 @@ interface PacketCodec {
   fun encode(message: UdpMessage, destNodeId: Bytes, handshakeParams: 
HandshakeInitParameters? = null): EncodeResult
 
   /**
-   * Decodes message, decrypting it's body
+   * Decodes message, decrypting its body
    *
    * @param message message for decoding
    *
diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
index 8e072f8..4b209d6 100644
--- 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
+++ 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnector.kt
@@ -169,7 +169,7 @@ public class DefaultUdpConnector(
   ) {
     val encodeResult = packetCodec.encode(message, destNodeId, handshakeParams)
     pendingMessages.put(encodeResult.authTag.toHexString(), 
TrackingMessage(message, destNodeId))
-    receiveChannel.send(ByteBuffer.wrap(encodeResult.content.toArray()), 
address)
+    receiveChannel.send(ByteBuffer.wrap(encodeResult.content.toArrayUnsafe()), 
address)
   }
 
   override suspend fun terminate() {
diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
index b68c997..b585eb5 100644
--- 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
+++ 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/handler/WhoAreYouMessageHandler.kt
@@ -25,6 +25,11 @@ import org.apache.tuweni.devp2p.v5.packet.RandomMessage
 import org.apache.tuweni.devp2p.v5.packet.WhoAreYouMessage
 import java.net.InetSocketAddress
 
+/**
+ * Handles WHOAREYOU messages.
+ *
+ * WHOAREYOU is sent by the other node after the first message is sent, asking 
to initiate the connection.
+ */
 class WhoAreYouMessageHandler : MessageHandler<WhoAreYouMessage> {
 
   override suspend fun handle(
@@ -35,6 +40,7 @@ class WhoAreYouMessageHandler : 
MessageHandler<WhoAreYouMessage> {
   ) {
     // Retrieve enr
     val trackingMessage = connector.getPendingMessage(message.authTag)
+    // If no message was sent to the node, ignore the WHOAREYOU request.
     trackingMessage?.let {
       val rlpEnr = connector.getNodeRecords().find(trackingMessage.nodeId)
       rlpEnr?.let {
diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
index 5a482ea..b5a870b 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/misc/EncodeResult.kt
@@ -18,6 +18,9 @@ package org.apache.tuweni.devp2p.v5.misc
 
 import org.apache.tuweni.bytes.Bytes
 
+/**
+ * The result of encoding a message: its authentication tag, used to track 
responses, and its content as bytes.
+ */
 class EncodeResult(
   val authTag: Bytes,
   val content: Bytes
diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
index 41d556b..526fa06 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessage.kt
@@ -22,6 +22,15 @@ class RandomMessage(
   val authTag: Bytes = authTag(),
   val data: Bytes = randomData()
 ) : UdpMessage() {
+
+  companion object {
+    fun randomData(): Bytes = Bytes.random(RANDOM_DATA_LENGTH)
+
+    fun create(authTag: Bytes, content: Bytes = randomData()): RandomMessage {
+      return RandomMessage(authTag, content)
+    }
+  }
+
   override fun getMessageType(): Bytes {
     throw UnsupportedOperationException("Message type unsupported for random 
messages")
   }
@@ -29,10 +38,4 @@ class RandomMessage(
   override fun encode(): Bytes {
     return data
   }
-
-  companion object {
-    fun create(authTag: Bytes, content: Bytes = randomData()): RandomMessage {
-      return RandomMessage(authTag, content)
-    }
-  }
 }
diff --git 
a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt 
b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
index 9eb511e..e441e4c 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessage.kt
@@ -19,7 +19,7 @@ package org.apache.tuweni.devp2p.v5.packet
 import org.apache.tuweni.bytes.Bytes
 import org.apache.tuweni.crypto.Hash
 
-abstract class UdpMessage {
+interface UdpMessage {
 
   companion object {
 
@@ -51,12 +51,10 @@ abstract class UdpMessage {
 
     fun authTag(): Bytes = Bytes.random(AUTH_TAG_LENGTH)
 
-    fun randomData(): Bytes = Bytes.random(RANDOM_DATA_LENGTH)
-
     fun idNonce(): Bytes = Bytes.random(ID_NONCE_LENGTH)
   }
 
-  abstract fun encode(): Bytes
+  fun encode(): Bytes
 
-  abstract fun getMessageType(): Bytes
+  fun getMessageType(): Bytes
 }
diff --git 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
index d291836..afcf1f3 100644
--- 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
+++ 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultUdpConnectorTest.kt
@@ -101,7 +101,7 @@ class DefaultUdpConnectorTest {
     val socketChannel = CoroutineDatagramChannel.open()
     socketChannel.bind(receiverAddress)
 
-    val data = UdpMessage.randomData()
+    val data = RandomMessage.randomData()
     val randomMessage = RandomMessage(UdpMessage.authTag(), data)
     connector!!.send(receiverAddress, randomMessage, destNodeId)
     val buffer = ByteBuffer.allocate(UdpMessage.MAX_UDP_MESSAGE_SIZE)
diff --git 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
index c3c6c20..1ac50d9 100644
--- 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
+++ 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/RandomMessageTest.kt
@@ -36,4 +36,15 @@ class RandomMessageTest {
 
     assert(decodingResult.data == data)
   }
+
+  @Test
+  fun randomDataGivesRandom44Bytes() {
+    val firstResult = RandomMessage.randomData()
+
+    assert(UdpMessage.RANDOM_DATA_LENGTH == firstResult.size())
+
+    val secondResult = RandomMessage.randomData()
+
+    assert(secondResult != firstResult)
+  }
 }
diff --git 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
index f6881cb..07960ae 100644
--- 
a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
+++ 
b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/packet/UdpMessageTest.kt
@@ -66,17 +66,6 @@ class UdpMessageTest {
   }
 
   @Test
-  fun randomDataGivesRandom44Bytes() {
-    val firstResult = UdpMessage.randomData()
-
-    assert(UdpMessage.RANDOM_DATA_LENGTH == firstResult.size())
-
-    val secondResult = UdpMessage.randomData()
-
-    assert(secondResult != firstResult)
-  }
-
-  @Test
   fun idNonceGivesRandom32Bytes() {
     val firstResult = UdpMessage.idNonce()
 
diff --git 
a/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
 
b/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
index 3f39bf4..391edba 100644
--- 
a/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
+++ 
b/net/src/main/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepository.java
@@ -36,7 +36,7 @@ final class FileBackedFingerprintRepository implements 
FingerprintRepository {
 
   FileBackedFingerprintRepository(Path fingerprintFile) {
     try {
-      createDirectories(fingerprintFile.getParent());
+      createDirectories(fingerprintFile.toAbsolutePath().getParent());
       createFileIfMissing(fingerprintFile);
     } catch (IOException e) {
       throw new TLSEnvironmentException("Cannot create fingerprint file " + 
fingerprintFile, e);
diff --git 
a/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
 
b/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
index b9731d5..a581a2e 100644
--- 
a/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
+++ 
b/net/src/test/java/org/apache/tuweni/net/tls/FileBackedFingerprintRepositoryTest.java
@@ -13,6 +13,7 @@
 package org.apache.tuweni.net.tls;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.tuweni.io.file.Files.deleteRecursively;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -24,6 +25,7 @@ import org.apache.tuweni.junit.TempDirectoryExtension;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.security.SecureRandom;
 
 import org.junit.jupiter.api.Test;
@@ -41,6 +43,15 @@ class FileBackedFingerprintRepositoryTest {
   }
 
   @Test
+  void testRelativePath() throws IOException {
+    try {
+      FileBackedFingerprintRepository repo = new 
FileBackedFingerprintRepository(Paths.get("tmp", "foo"));
+    } finally {
+      deleteRecursively(Paths.get("tmp"));
+    }
+  }
+
+  @Test
   FileBackedFingerprintRepository testAddingNewFingerprint(@TempDirectory Path 
tempFolder) throws IOException {
     FileBackedFingerprintRepository repo = new 
FileBackedFingerprintRepository(tempFolder.resolve("repo"));
     Bytes fingerprint = generateFingerprint();


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

Reply via email to