diff --git a/divviup/rust/Cargo.lock b/divviup/rust/Cargo.lock index c202a58..3dadc5a 100644 --- a/divviup/rust/Cargo.lock +++ b/divviup/rust/Cargo.lock @@ -94,6 +94,54 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" version = "1.0.81" @@ -286,6 +334,52 @@ dependencies = [ "zeroize", ] +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + [[package]] name = "combine" version = "4.6.6" @@ -311,16 +405,6 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -723,25 +807,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "2.4.0" @@ -762,6 +827,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.9" @@ -832,9 +903,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -843,9 +914,9 @@ dependencies = [ [[package]] name = "http-api-problem" -version = "0.57.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bce650a2c63171c9d92f95887c8d81154b77385301c8a581b9af96491f52d765" +checksum = "6bfa6ba9e2d8cf5299faf4721520ff7997989431d2c8fdf702eb8b1a4313b625" dependencies = [ "http", "serde", @@ -854,12 +925,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", "pin-project-lite", ] @@ -877,40 +960,58 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", - "h2", "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", - "socket2", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" dependencies = [ "futures-util", "http", "hyper", + "hyper-util", "rustls", + "rustls-pki-types", "tokio", "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -988,15 +1089,16 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "janus_core" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5881f5df2d0d9ac965404da5531a4a77ddc80c0db93c0e2b82b2b089fdde67ee" +checksum = "076dec16b5bc09842077b1aa8d07a0187be41f494b00a06a9bb50adecbbe9946" dependencies = [ "anyhow", "backoff", "base64 0.22.0", "bytes", "chrono", + "clap", "derivative", "futures", "hex", @@ -1020,9 +1122,9 @@ dependencies = [ [[package]] name = "janus_messages" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98bf7f5817e3282bed2ef21116241a1d74bce822e56b238c7f97f4d220e65ddd" +checksum = "425b77ad31e0614c16041aa44c4014ebd4c67544d01135cece4f51c33b4adef2" dependencies = [ "anyhow", "base64 0.22.0", @@ -1281,6 +1383,26 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "pin-project-lite" version = "0.2.13" @@ -1480,20 +1602,20 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338" dependencies = [ "base64 0.21.7", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-rustls", + "hyper-util", "ipnet", "js-sys", "log", @@ -1503,11 +1625,11 @@ dependencies = [ "pin-project-lite", "rustls", "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-rustls", "tower-service", @@ -1542,14 +1664,16 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustls" -version = "0.21.10" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" dependencies = [ "log", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] @@ -1561,13 +1685,20 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pki-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] @@ -1592,16 +1723,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "sec1" version = "0.3.0" @@ -1769,6 +1890,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.5.0" @@ -1803,27 +1930,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tap" version = "1.0.1" @@ -1867,9 +1973,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -1898,28 +2004,15 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ "rustls", + "rustls-pki-types", "tokio", ] -[[package]] -name = "tokio-util" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - [[package]] name = "toml_datetime" version = "0.6.5" @@ -1937,6 +2030,28 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -1949,6 +2064,7 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2083,8 +2199,15 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "version_check" version = "0.9.4" @@ -2194,9 +2317,12 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.4" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "winapi" diff --git a/divviup/rust/Cargo.toml b/divviup/rust/Cargo.toml index b82253b..f695870 100644 --- a/divviup/rust/Cargo.toml +++ b/divviup/rust/Cargo.toml @@ -8,8 +8,8 @@ publish = false crate_type = ["cdylib"] [dependencies] -janus_core = "0.7.1" -janus_messages = "0.7.0-prerelease-4" +janus_core = "0.7.2" +janus_messages = "0.7.2" jni = "0.21.1" prio = "0.16.2" rand = "0.8.5" diff --git a/divviup/src/test/java/org/divviup/android/JanusIntegrationTest.java b/divviup/src/test/java/org/divviup/android/JanusIntegrationTest.java index 3fa0348..4096f43 100644 --- a/divviup/src/test/java/org/divviup/android/JanusIntegrationTest.java +++ b/divviup/src/test/java/org/divviup/android/JanusIntegrationTest.java @@ -46,16 +46,17 @@ import java.nio.charset.StandardCharsets; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; +import java.util.Optional; @RunWith(MockitoJUnitRunner.class) public class JanusIntegrationTest { /** @noinspection SpellCheckingInspection */ private static final DockerImageName JANUS_INTEROP_AGGREGATOR = DockerImageName.parse( - "us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_interop_aggregator:0.7.0-prerelease-4@sha256:e85342f168e2cb202bd1eeb7941bd81facb333fb4f114547508e6f9ff82e3da2" + "us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_interop_aggregator:0.7.2@sha256:5abe7a37896d51121235a47181a271b64aa3975d0d849278567606217cda38a1" ); /** @noinspection SpellCheckingInspection */ private static final DockerImageName JANUS_INTEROP_COLLECTOR = DockerImageName.parse( - "us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_interop_collector:0.7.0-prerelease-4@sha256:617df823da7efe5566eb53e4cbdbe983b027b2369ad430b4fa7de6e972353488" + "us-west2-docker.pkg.dev/divviup-artifacts-public/janus/janus_interop_collector:0.7.2@sha256:3004724d6f2f3c40763022a27202ff88e0a08fcde0176d6b8343bb9948231ce5" ); private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP | Base64.URL_SAFE; private static final int TIME_PRECISION_SECONDS = 3600; @@ -78,19 +79,23 @@ public void initMock() { @Before public void setUp() { Network network = Network.newNetwork(); + String rustLog = Optional.ofNullable(System.getenv("RUST_LOG")).orElse("info"); leader = new GenericContainer<>(JANUS_INTEROP_AGGREGATOR) .withNetwork(network) .withNetworkAliases(LEADER_ALIAS) .withExposedPorts(8080) + .withEnv("RUST_LOG", rustLog) .waitingFor(Wait.forHttp("/internal/test/ready").withMethod("POST")); helper = new GenericContainer<>(JANUS_INTEROP_AGGREGATOR) .withNetwork(network) .withNetworkAliases(HELPER_ALIAS) .withExposedPorts(8080) + .withEnv("RUST_LOG", rustLog) .waitingFor(Wait.forHttp("/internal/test/ready").withMethod("POST")); collector = new GenericContainer<>(JANUS_INTEROP_COLLECTOR) .withNetwork(network) .withExposedPorts(8080) + .withEnv("RUST_LOG", rustLog) .waitingFor(Wait.forHttp("/internal/test/ready").withMethod("POST")); Startables.deepStart(leader, helper, collector).join(); } @@ -110,6 +115,7 @@ public void testPrio3Count() throws URISyntaxException, IOException, InteropApiE ObjectNode vdaf = JsonNodeFactory.instance.objectNode(); vdaf.set("type", JsonNodeFactory.instance.textNode("Prio3Count")); runIntegrationTest( + "testPrio3Count", (leaderUri, helperUri, taskId) -> Client.createPrio3Count(mockContext, leaderUri, helperUri, taskId, TIME_PRECISION_SECONDS), vdaf, new Boolean[] { true, true, true, true, false, false, false, false, false, false }, @@ -123,6 +129,7 @@ public void testPrio3Sum() throws URISyntaxException, IOException, InteropApiExc vdaf.set("type", JsonNodeFactory.instance.textNode("Prio3Sum")); vdaf.set("bits", JsonNodeFactory.instance.textNode("16")); runIntegrationTest( + "testPrio3Sum", (leaderUri, helperUri, taskId) -> Client.createPrio3Sum(mockContext, leaderUri, helperUri, taskId, TIME_PRECISION_SECONDS, 16), vdaf, new Long[] { 31865L, 42987L, 30615L, 504L, 30113L }, @@ -142,6 +149,7 @@ public void testPrio3SumVec() throws URISyntaxException, IOException, InteropApi expectedResult.add("449"); expectedResult.add("711"); runIntegrationTest( + "testPrio3SumVec", (leaderUri, helperUri, taskId) -> Client.createPrio3SumVec(mockContext, leaderUri, helperUri, taskId, TIME_PRECISION_SECONDS, 3, 8, 4), vdaf, new long[][] { @@ -167,6 +175,7 @@ public void testPrio3Histogram() throws URISyntaxException, IOException, Interop expectedResult.add("2"); expectedResult.add("4"); runIntegrationTest( + "testPrio3Histogram", (leaderUri, helperUri, taskId) -> Client.createPrio3Histogram(mockContext, leaderUri, helperUri, taskId, TIME_PRECISION_SECONDS, 4, 2), vdaf, new Long[] { 2L, 3L, 3L, 3L, 1L, 0L, 3L, 2L }, @@ -175,6 +184,7 @@ public void testPrio3Histogram() throws URISyntaxException, IOException, Interop } private void runIntegrationTest( + String testName, ClientConstructor clientConstructor, JsonNode vdaf, M[] measurements, @@ -275,9 +285,9 @@ private void runIntegrationTest( } } } finally { - propagateLogs(leader, "leader"); - propagateLogs(helper, "helper"); - propagateLogs(collector, "collector"); + propagateLogs(leader, testName + "/leader"); + propagateLogs(helper, testName + "/helper"); + propagateLogs(collector, testName + "/collector"); } assertNotNull(result);