From 37fe39d99e2f43fcfc985fe901fe476d106148d8 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Fri, 21 Feb 2025 17:49:34 +0100 Subject: [PATCH] make some tests work --- .../objects/repository/PersistentPeerDataService.java | 8 ++++++++ .../repository/peerdiscovery/PeerDiscoveryDirectory.java | 2 ++ .../local/LocalPeerDiscoveryBroadcaster.java | 2 ++ .../peerdiscovery/local/LocalPeerDiscoveryClient.java | 2 +- .../server/src/main/resources/application.properties | 1 + .../java/com/usatiuk/dhfs/integration/DhfsFuseIT.java | 4 ++-- .../test/java/com/usatiuk/dhfs/integration/DhfsImage.java | 2 +- 7 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentPeerDataService.java b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentPeerDataService.java index 4a48e9cd..cf3b3de3 100644 --- a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentPeerDataService.java +++ b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentPeerDataService.java @@ -15,7 +15,11 @@ import jakarta.inject.Inject; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.pcollections.HashTreePSet; +import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; import java.security.KeyPair; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; @@ -44,6 +48,8 @@ public class PersistentPeerDataService { @ConfigProperty(name = "dhfs.peerdiscovery.preset-uuid") Optional presetUuid; + @ConfigProperty(name = "dhfs.objects.persistence.stuff.root") + String stuffRoot; private PeerId _selfUuid; private X509Certificate _selfCertificate; @@ -73,6 +79,8 @@ public class PersistentPeerDataService { }); peerTrustManager.reloadTrustManagerHosts(peerInfoService.getPeers()); Log.info("Self uuid is: " + _selfUuid.toString()); + new File(stuffRoot).mkdirs(); + Files.write(Path.of(stuffRoot, "self_uuid"), _selfUuid.id().toString().getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); } // private void pushPeerUpdates() { diff --git a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/PeerDiscoveryDirectory.java b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/PeerDiscoveryDirectory.java index 50523880..1021add5 100644 --- a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/PeerDiscoveryDirectory.java +++ b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/PeerDiscoveryDirectory.java @@ -1,6 +1,7 @@ package com.usatiuk.dhfs.objects.repository.peerdiscovery; import com.usatiuk.dhfs.objects.PeerId; +import io.quarkus.logging.Log; import jakarta.enterprise.context.ApplicationScoped; import org.apache.commons.collections4.MultiValuedMap; import org.apache.commons.collections4.multimap.HashSetValuedHashMap; @@ -37,6 +38,7 @@ public class PeerDiscoveryDirectory { private final MultiValuedMap _entries = new HashSetValuedHashMap<>(); public void notifyAddr(PeerAddress addr) { + Log.tracev("New address {0}", addr); synchronized (_entries) { var peer = addr.peer(); _entries.removeMapping(peer, new PeerEntry(addr, 0)); diff --git a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryBroadcaster.java b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryBroadcaster.java index d3f77471..7b8362f5 100644 --- a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryBroadcaster.java +++ b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryBroadcaster.java @@ -3,6 +3,7 @@ package com.usatiuk.dhfs.objects.repository.peerdiscovery.local; import com.usatiuk.dhfs.objects.repository.PersistentPeerDataService; import com.usatiuk.dhfs.objects.repository.peerdiscovery.PeerDiscoveryInfo; import io.quarkus.arc.properties.IfBuildProperty; +import io.quarkus.logging.Log; import io.quarkus.runtime.ShutdownEvent; import io.quarkus.runtime.Startup; import io.quarkus.scheduler.Scheduled; @@ -90,6 +91,7 @@ public class LocalPeerDiscoveryBroadcaster { try { sendPacket = new DatagramPacket(sendBytes, sendBytes.length, broadcast, broadcastPort); _socket.send(sendPacket); + Log.tracev("Broadcast sent to: {0}, at: {1}", broadcast.getHostAddress(), networkInterface.getDisplayName()); } catch (Exception ignored) { continue; } diff --git a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryClient.java b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryClient.java index 9b505307..ce412b6b 100644 --- a/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryClient.java +++ b/dhfs-parent/server/src/main/java/com/usatiuk/dhfs/objects/repository/peerdiscovery/local/LocalPeerDiscoveryClient.java @@ -18,7 +18,6 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; import java.net.*; import java.nio.ByteBuffer; -import java.util.UUID; @ApplicationScoped @IfBuildProperty(name = "dhfs.local-discovery", stringValue = "true") @@ -70,6 +69,7 @@ public class LocalPeerDiscoveryClient { try { var got = PeerDiscoveryInfo.parseFrom(ByteBuffer.wrap(buf, 0, packet.getLength())); + Log.tracev("Got peer discovery packet from {0}", packet.getAddress()); peerDiscoveryDirectory.notifyAddr( new IpPeerAddress( PeerId.of(got.getUuid()), diff --git a/dhfs-parent/server/src/main/resources/application.properties b/dhfs-parent/server/src/main/resources/application.properties index 220ba49b..4f499e77 100644 --- a/dhfs-parent/server/src/main/resources/application.properties +++ b/dhfs-parent/server/src/main/resources/application.properties @@ -10,6 +10,7 @@ dhfs.objects.reconnect_interval=5s dhfs.objects.write_log=false dhfs.objects.periodic-push-op-interval=5m dhfs.fuse.root=${HOME}/dhfs_default/fuse +dhfs.objects.persistence.stuff.root=${HOME}/dhfs_default/data/stuff dhfs.fuse.debug=false dhfs.fuse.enabled=true dhfs.files.allow_recursive_delete=false diff --git a/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsFuseIT.java b/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsFuseIT.java index b9d9f92d..bdb70a8e 100644 --- a/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsFuseIT.java +++ b/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsFuseIT.java @@ -59,8 +59,8 @@ public class DhfsFuseIT { Assertions.assertDoesNotThrow(() -> UUID.fromString(c1uuid)); Assertions.assertDoesNotThrow(() -> UUID.fromString(c2uuid)); - waitingConsumer2.waitUntil(frame -> frame.getUtf8String().contains("Ignoring new address"), 60, TimeUnit.SECONDS); - waitingConsumer1.waitUntil(frame -> frame.getUtf8String().contains("Ignoring new address"), 60, TimeUnit.SECONDS); + waitingConsumer2.waitUntil(frame -> frame.getUtf8String().contains("New address"), 60, TimeUnit.SECONDS); + waitingConsumer1.waitUntil(frame -> frame.getUtf8String().contains("New address"), 60, TimeUnit.SECONDS); var c1curl = container1.execInContainer("/bin/sh", "-c", "curl --header \"Content-Type: application/json\" " + diff --git a/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsImage.java b/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsImage.java index 12d30e28..1d08d76e 100644 --- a/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsImage.java +++ b/dhfs-parent/server/src/test/java/com/usatiuk/dhfs/integration/DhfsImage.java @@ -69,7 +69,7 @@ public class DhfsImage implements Future { .cmd("java", "-ea", "-Xmx128M", "--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED", "--add-exports", "java.base/jdk.internal.access=ALL-UNNAMED", - "-Ddhfs.objects.peerdiscovery.interval=100", + "-Ddhfs.objects.peerdiscovery.interval=1s", "-Ddhfs.objects.invalidation.delay=100", "-Ddhfs.objects.deletion.delay=0", "-Ddhfs.objects.deletion.can-delete-retry-delay=1000",