diff --git a/src/apps/cli/testdeno/test-p2p-peers-local-relay.ts b/src/apps/cli/testdeno/test-p2p-peers-local-relay.ts index f73fe35..c87c8a9 100644 --- a/src/apps/cli/testdeno/test-p2p-peers-local-relay.ts +++ b/src/apps/cli/testdeno/test-p2p-peers-local-relay.ts @@ -9,6 +9,9 @@ Deno.test("p2p-peers: discovers host through local relay", async () => { const roomId = Deno.env.get("ROOM_ID") ?? `room-${Date.now()}`; const passphrase = Deno.env.get("PASSPHRASE") ?? "test"; const timeoutSeconds = Number(Deno.env.get("TIMEOUT_SECONDS") ?? "8"); + const nonce = `${Date.now()}-${crypto.randomUUID().slice(0, 8)}`; + const hostPeerName = Deno.env.get("HOST_PEER_NAME") ?? `p2p-host-${nonce}`; + const clientPeerName = Deno.env.get("CLIENT_PEER_NAME") ?? `p2p-client-${nonce}`; await using workDir = await TempDir.create("livesync-cli-p2p-peers-local-relay"); const hostVault = workDir.join("vault-host"); @@ -24,15 +27,16 @@ Deno.test("p2p-peers: discovers host through local relay", async () => { await initSettingsFile(clientSettings); await applyP2pSettings(hostSettings, roomId, passphrase, "self-hosted-livesync-cli-tests", relay); await applyP2pSettings(clientSettings, roomId, passphrase, "self-hosted-livesync-cli-tests", relay); - await applyP2pTestTweaks(hostSettings, "p2p-host", passphrase); - await applyP2pTestTweaks(clientSettings, "p2p-client", passphrase); + await applyP2pTestTweaks(hostSettings, hostPeerName, passphrase); + await applyP2pTestTweaks(clientSettings, clientPeerName, passphrase); const host = startCliInBackground(hostVault, "--settings", hostSettings, "p2p-host"); try { await host.waitUntilContains("P2P host is running", 20000); - const peer = await discoverPeer(clientVault, clientSettings, timeoutSeconds); + const peer = await discoverPeer(clientVault, clientSettings, timeoutSeconds, hostPeerName); assert(peer.id.length > 0); assert(peer.name.length > 0); + assert(peer.name === hostPeerName, `expected peer '${hostPeerName}', got '${peer.name}'`); } finally { await host.stop(); } diff --git a/src/apps/cli/testdeno/test-p2p-sync.ts b/src/apps/cli/testdeno/test-p2p-sync.ts index 970b4e9..2a50745 100644 --- a/src/apps/cli/testdeno/test-p2p-sync.ts +++ b/src/apps/cli/testdeno/test-p2p-sync.ts @@ -11,6 +11,9 @@ Deno.test("p2p-sync: discovers peer and completes sync", async () => { const passphrase = Deno.env.get("PASSPHRASE") ?? "test"; const peersTimeout = Number(Deno.env.get("PEERS_TIMEOUT") ?? "12"); const syncTimeout = Number(Deno.env.get("SYNC_TIMEOUT") ?? "15"); + const nonce = `${Date.now()}-${crypto.randomUUID().slice(0, 8)}`; + const hostPeerName = Deno.env.get("HOST_PEER_NAME") ?? `p2p-host-${nonce}`; + const clientPeerName = Deno.env.get("CLIENT_PEER_NAME") ?? `p2p-client-${nonce}`; await using workDir = await TempDir.create("livesync-cli-p2p-sync"); const hostVault = workDir.join("vault-host"); @@ -26,8 +29,8 @@ Deno.test("p2p-sync: discovers peer and completes sync", async () => { await initSettingsFile(clientSettings); await applyP2pSettings(hostSettings, roomId, passphrase, "self-hosted-livesync-cli-tests", relay); await applyP2pSettings(clientSettings, roomId, passphrase, "self-hosted-livesync-cli-tests", relay); - await applyP2pTestTweaks(hostSettings, "p2p-host", passphrase); - await applyP2pTestTweaks(clientSettings, "p2p-client", passphrase); + await applyP2pTestTweaks(hostSettings, hostPeerName, passphrase); + await applyP2pTestTweaks(clientSettings, clientPeerName, passphrase); const host = startCliInBackground(hostVault, "--settings", hostSettings, "p2p-host"); try { @@ -36,7 +39,7 @@ Deno.test("p2p-sync: discovers peer and completes sync", async () => { clientVault, clientSettings, peersTimeout, - Deno.env.get("TARGET_PEER") ?? undefined + Deno.env.get("TARGET_PEER") ?? hostPeerName ); const syncResult = await runCli( clientVault, diff --git a/src/apps/cli/testdeno/test-p2p-three-nodes-conflict.ts b/src/apps/cli/testdeno/test-p2p-three-nodes-conflict.ts index 744692e..6752f9b 100644 --- a/src/apps/cli/testdeno/test-p2p-three-nodes-conflict.ts +++ b/src/apps/cli/testdeno/test-p2p-three-nodes-conflict.ts @@ -1,6 +1,6 @@ import { assert } from "@std/assert"; import { TempDir } from "./helpers/temp.ts"; -import { applyP2pSettings, initSettingsFile } from "./helpers/settings.ts"; +import { applyP2pSettings, applyP2pTestTweaks, initSettingsFile } from "./helpers/settings.ts"; import { startCliInBackground } from "./helpers/backgroundCli.ts"; import { discoverPeer, maybeStartLocalRelay, stopLocalRelayIfStarted } from "./helpers/p2p.ts"; import { jsonStringField, runCliOrFail, runCliWithInputOrFail, sanitiseCatStdout } from "./helpers/cli.ts"; @@ -12,6 +12,10 @@ Deno.test("p2p: three nodes detect and resolve conflicts", async () => { const appId = Deno.env.get("APP_ID") ?? "self-hosted-livesync-cli-tests"; const peersTimeout = Number(Deno.env.get("PEERS_TIMEOUT") ?? "10"); const syncTimeout = Number(Deno.env.get("SYNC_TIMEOUT") ?? "15"); + const nonce = `${Date.now()}-${crypto.randomUUID().slice(0, 8)}`; + const hostPeerName = Deno.env.get("HOST_PEER_NAME") ?? `p2p-host-${nonce}`; + const peerNameB = Deno.env.get("PEER_NAME_B") ?? `p2p-client-b-${nonce}`; + const peerNameC = Deno.env.get("PEER_NAME_C") ?? `p2p-client-c-${nonce}`; await using workDir = await TempDir.create("livesync-cli-p2p-3nodes"); const vaultA = workDir.join("vault-a"); @@ -26,16 +30,21 @@ Deno.test("p2p: three nodes detect and resolve conflicts", async () => { const relayStarted = await maybeStartLocalRelay(relay); try { - for (const settings of [settingsA, settingsB, settingsC]) { - await initSettingsFile(settings); - await applyP2pSettings(settings, roomId, passphrase, appId, relay); - } + await initSettingsFile(settingsA); + await initSettingsFile(settingsB); + await initSettingsFile(settingsC); + await applyP2pSettings(settingsA, roomId, passphrase, appId, relay); + await applyP2pSettings(settingsB, roomId, passphrase, appId, relay); + await applyP2pSettings(settingsC, roomId, passphrase, appId, relay); + await applyP2pTestTweaks(settingsA, hostPeerName, passphrase); + await applyP2pTestTweaks(settingsB, peerNameB, passphrase); + await applyP2pTestTweaks(settingsC, peerNameC, passphrase); const host = startCliInBackground(vaultA, "--settings", settingsA, "p2p-host"); try { await host.waitUntilContains("P2P host is running", 20000); - const peerFromB = await discoverPeer(vaultB, settingsB, peersTimeout); - const peerFromC = await discoverPeer(vaultC, settingsC, peersTimeout); + const peerFromB = await discoverPeer(vaultB, settingsB, peersTimeout, hostPeerName); + const peerFromC = await discoverPeer(vaultC, settingsC, peersTimeout, hostPeerName); const targetPath = "p2p/conflicted-from-two-clients.txt"; await runCliWithInputOrFail("from-client-b-v1\n", vaultB, "--settings", settingsB, "put", targetPath);