Skip to content

Commit 186d9e4

Browse files
committed
Move test_util crate to janus_core
Removes the `test_util` crate, relocating the items it defines to a `test_util` module in `janus_core`, gated by the `test-util` feature. We also set `resolver = "2"` in the top-level `Cargo.toml`, because otherwise crate features get unified between dependencies and dev-dependencies, which cause the release variants of our binary targets to be built with the `test-util` feature (and indeed, before this PR, we were building `tokio` with `test-util` all the time, too!). See [1] for details. [1]: rust-lang/cargo#4866
1 parent 38945e8 commit 186d9e4

File tree

21 files changed

+63
-85
lines changed

21 files changed

+63
-85
lines changed

Cargo.lock

Lines changed: 4 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
[workspace]
2-
members = ["janus_core", "janus_client", "janus_server", "monolithic_integration_test", "test_util"]
2+
members = ["janus_core", "janus_client", "janus_server", "monolithic_integration_test"]
3+
resolver = "2"

Dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ COPY janus_core /src/janus_core
99
COPY janus_client /src/janus_client
1010
COPY janus_server /src/janus_server
1111
COPY monolithic_integration_test /src/monolithic_integration_test
12-
COPY test_util /src/test_util
1312
COPY db/schema.sql /src/db/schema.sql
1413
RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,target=/src/target cargo build --release --bin $BINARY --features=prometheus && cp /src/target/release/$BINARY /$BINARY
1514

janus_client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ url = "2.2.2"
2222
[dev-dependencies]
2323
assert_matches = "1"
2424
janus_core = { path = "../janus_core", features = ["test-util"]}
25-
janus_test_util = { path = "../test_util" }
2625
mockito = "0.31.0"
2726
tracing-log = "0.1.3"
2827
tracing-subscriber = { version = "0.3", features = ["std", "env-filter", "fmt"] }

janus_client/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,8 @@ mod tests {
226226
use janus_core::{
227227
hpke::test_util::generate_hpke_config_and_private_key,
228228
message::{TaskId, Time},
229+
test_util::{install_test_trace_subscriber, MockClock},
229230
};
230-
use janus_test_util::{install_test_trace_subscriber, MockClock};
231231
use mockito::mock;
232232
use prio::vdaf::prio3::Prio3;
233233
use url::Url;

janus_core/Cargo.toml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ rust-version = "1.58"
1111

1212
[features]
1313
database = ["bytes", "postgres-protocol", "postgres-types"]
14-
test-util = []
14+
test-util = ["assert_matches", "serde_json", "futures", "tracing", "tracing-log", "tracing-subscriber", "tokio/macros", "tokio/sync"]
1515

1616
[dependencies]
1717
anyhow = "1"
@@ -30,6 +30,10 @@ serde = { version = "1.0.138", features = ["derive"] }
3030
thiserror = "1.0"
3131
tokio = { version = "^1.19", features = ["rt"] }
3232

33-
[dev-dependencies]
34-
assert_matches = "1"
35-
serde_json = "1.0.82"
33+
# Dependencies required only if feature "test-util" is enabled
34+
assert_matches = { version = "1", optional = true }
35+
serde_json = { version = "1.0.82", optional = true }
36+
futures = { version = "0.3.21", optional = true }
37+
tracing = { version = "0.1.34", optional = true }
38+
tracing-log = { version = "0.1.3", optional = true }
39+
tracing-subscriber = { version = "0.3", features = ["std", "env-filter", "fmt"], optional = true }

janus_core/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use tokio::task::JoinHandle;
44
pub mod hpke;
55
pub mod message;
66
pub mod task;
7+
#[cfg(feature = "test-util")]
8+
pub mod test_util;
79
pub mod time;
810

911
/// This trait provides a mockable facade for [`tokio::task::spawn`].
File renamed without changes.

test_util/src/lib.rs renamed to janus_core/src/test_util/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use assert_matches::assert_matches;
2-
use janus_core::{
1+
use crate::{
32
message::{Duration, Nonce, Time},
43
time::Clock,
54
};
5+
use assert_matches::assert_matches;
66
use prio::{
77
codec::Encode,
88
vdaf::{self, PrepareTransition, VdafError},
@@ -17,7 +17,7 @@ pub mod dummy_vdaf;
1717
pub mod runtime;
1818

1919
/// The Janus database schema.
20-
pub static SCHEMA: &str = include_str!("../../db/schema.sql");
20+
pub static SCHEMA: &str = include_str!("../../../db/schema.sql");
2121

2222
/// This macro injects definitions of `DbHandle` and `ephemeral_datastore()`, for use in tests.
2323
/// It should be invoked once per binary target, and then `ephemeral_datastore()` can be called
@@ -168,7 +168,7 @@ macro_rules! define_ephemeral_datastore {
168168
::tracing::trace!("Postgres container is up with URL {}", connection_string);
169169

170170
// Create a random (ephemeral) key.
171-
let datastore_key_bytes = ::janus_test_util::generate_aead_key_bytes();
171+
let datastore_key_bytes = ::janus_core::test_util::generate_aead_key_bytes();
172172

173173
DbHandle{
174174
_db_container: db_container,

test_util/src/runtime.rs renamed to janus_core/src/test_util/runtime.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
use crate::Runtime;
12
use futures::FutureExt;
2-
use janus_core::Runtime;
33
use std::{
44
collections::HashMap,
55
future::Future,

janus_server/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ tokio-console = ["console-subscriber"]
1111
jaeger = ["tracing-opentelemetry", "opentelemetry-jaeger"]
1212
otlp = ["tracing-opentelemetry", "opentelemetry-otlp", "opentelemetry-semantic-conventions", "tonic"]
1313
prometheus = ["opentelemetry-prometheus", "dep:prometheus"]
14+
<<<<<<< HEAD
1415
test-util = ["dep:janus_test_util", "dep:lazy_static", "dep:testcontainers"]
16+
=======
17+
test-util = ["janus_core/test-util", "lazy_static", "testcontainers"]
18+
>>>>>>> 8a0ce54 (Move `test_util` crate to `janus_core`)
1519

1620
[dependencies]
1721
anyhow = "1"
@@ -62,6 +66,10 @@ url = { version = "2.2.2", features = ["serde"] }
6266
uuid = { version = "1.1.2", features = ["v4"] }
6367
warp = { version = "^0.3", features = ["tls"] }
6468

69+
# Optional dependencies enabled by feature "test-util"
70+
lazy_static = { version = "1", optional = true }
71+
testcontainers = { version = "0.14.0", optional = true }
72+
6573
[dev-dependencies]
6674
assert_matches = "1"
6775
hex = { version = "0.4.3", features = ["serde"] }

janus_server/src/aggregator.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ use warp::{
7070
};
7171

7272
#[cfg(test)]
73-
use janus_test_util::dummy_vdaf;
73+
use janus_core::test_util::dummy_vdaf;
7474
#[cfg(test)]
7575
use prio::vdaf::VdafError;
7676

@@ -2091,8 +2091,8 @@ mod tests {
20912091
HpkePrivateKey, Label,
20922092
},
20932093
message::{Duration, HpkeCiphertext, HpkeConfig, TaskId, Time},
2094+
test_util::{dummy_vdaf, install_test_trace_subscriber, run_vdaf, MockClock},
20942095
};
2095-
use janus_test_util::{dummy_vdaf, install_test_trace_subscriber, run_vdaf, MockClock};
20962096
use prio::{
20972097
codec::Decode,
20982098
field::Field64,

janus_server/src/aggregator/aggregate_share.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ impl CollectJobDriver {
8585

8686
#[cfg(test)]
8787
VdafInstance::Fake => {
88-
type FakeVdaf = janus_test_util::dummy_vdaf::VdafWithAggregationParameter<u8>;
88+
type FakeVdaf = janus_core::test_util::dummy_vdaf::VdafWithAggregationParameter<u8>;
8989
const VERIFY_KEY_LENGTH: usize = FakeVdaf::VERIFY_KEY_LENGTH;
9090
self.step_collect_job_generic::<VERIFY_KEY_LENGTH, C, FakeVdaf>(
9191
datastore,
@@ -438,14 +438,14 @@ mod tests {
438438
use assert_matches::assert_matches;
439439
use janus_core::{
440440
message::{Duration, HpkeCiphertext, HpkeConfigId, Interval, Nonce, Report, Role, TaskId},
441+
test_util::{
442+
dummy_vdaf::{AggregateShare, OutputShare, VdafWithAggregationParameter},
443+
install_test_trace_subscriber,
444+
runtime::TestRuntimeManager,
445+
MockClock,
446+
},
441447
Runtime,
442448
};
443-
use janus_test_util::{
444-
dummy_vdaf::{AggregateShare, OutputShare, VdafWithAggregationParameter},
445-
install_test_trace_subscriber,
446-
runtime::TestRuntimeManager,
447-
MockClock,
448-
};
449449
use mockito::mock;
450450
use std::str;
451451
use url::Url;

janus_server/src/aggregator/aggregation_job_creator.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,18 @@ pub trait VdafHasAggregationParameter: private::Sealed {}
3535
impl<I, P, const L: usize> VdafHasAggregationParameter for prio::vdaf::poplar1::Poplar1<I, P, L> {}
3636

3737
#[cfg(test)]
38-
impl VdafHasAggregationParameter for janus_test_util::dummy_vdaf::VdafWithAggregationParameter<u8> {}
38+
impl VdafHasAggregationParameter
39+
for janus_core::test_util::dummy_vdaf::VdafWithAggregationParameter<u8>
40+
{
41+
}
3942

4043
mod private {
4144
pub trait Sealed {}
4245

4346
impl<I, P, const L: usize> Sealed for prio::vdaf::poplar1::Poplar1<I, P, L> {}
4447

4548
#[cfg(test)]
46-
impl Sealed for janus_test_util::dummy_vdaf::VdafWithAggregationParameter<u8> {}
49+
impl Sealed for janus_core::test_util::dummy_vdaf::VdafWithAggregationParameter<u8> {}
4750
}
4851

4952
pub struct AggregationJobCreator<C: Clock> {
@@ -409,11 +412,11 @@ mod tests {
409412
use janus_core::{
410413
message::{Interval, Nonce, Report, Role, TaskId, Time},
411414
task::VdafInstance,
415+
test_util::{
416+
dummy_vdaf::VdafWithAggregationParameter, install_test_trace_subscriber, MockClock,
417+
},
412418
time::Clock,
413419
};
414-
use janus_test_util::{
415-
dummy_vdaf::VdafWithAggregationParameter, install_test_trace_subscriber, MockClock,
416-
};
417420
use prio::{
418421
codec::ParameterizedDecode,
419422
vdaf::{

janus_server/src/aggregator/aggregation_job_driver.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -803,11 +803,11 @@ mod tests {
803803
},
804804
message::{Duration, HpkeConfig, Interval, Nonce, NonceChecksum, Report, Role, TaskId},
805805
task::VdafInstance,
806+
test_util::{
807+
install_test_trace_subscriber, run_vdaf, runtime::TestRuntimeManager, MockClock,
808+
},
806809
Runtime,
807810
};
808-
use janus_test_util::{
809-
install_test_trace_subscriber, run_vdaf, runtime::TestRuntimeManager, MockClock,
810-
};
811811
use mockito::mock;
812812
use prio::{
813813
codec::Encode,

janus_server/src/binary_utils/job_driver.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,10 @@ where
200200
mod tests {
201201
use super::*;
202202
use crate::{message::AggregationJobId, task::VdafInstance};
203-
use janus_core::message::TaskId;
204-
use janus_test_util::{install_test_trace_subscriber, runtime::TestRuntimeManager, MockClock};
203+
use janus_core::{
204+
message::TaskId,
205+
test_util::{install_test_trace_subscriber, runtime::TestRuntimeManager, MockClock},
206+
};
205207
use tokio::sync::Mutex;
206208

207209
#[tokio::test]

janus_server/src/datastore.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2918,7 +2918,7 @@ pub mod test_util {
29182918
use super::{Crypter, Datastore};
29192919
use janus_core::time::Clock;
29202920

2921-
janus_test_util::define_ephemeral_datastore!();
2921+
janus_core::define_ephemeral_datastore!();
29222922
}
29232923

29242924
#[cfg(test)]
@@ -2938,10 +2938,10 @@ mod tests {
29382938
use janus_core::{
29392939
hpke::{self, associated_data_for_aggregate_share, HpkeApplicationInfo, Label},
29402940
message::{Duration, ExtensionType, HpkeConfigId, Interval, Role, Time},
2941-
};
2942-
use janus_test_util::{
2943-
dummy_vdaf::{self, VdafWithAggregationParameter},
2944-
generate_aead_key, install_test_trace_subscriber, MockClock,
2941+
test_util::{
2942+
dummy_vdaf::{self, VdafWithAggregationParameter},
2943+
generate_aead_key, install_test_trace_subscriber, MockClock,
2944+
},
29452945
};
29462946
use prio::{
29472947
field::{Field128, Field64},

janus_server/tests/server_shutdown.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::{
2222
};
2323
use wait_timeout::ChildExt;
2424

25-
janus_test_util::define_ephemeral_datastore!();
25+
janus_core::define_ephemeral_datastore!();
2626

2727
/// Try to find an open port by binding to an ephemeral port, saving the port
2828
/// number, and closing the listening socket. This may still fail due to race

monolithic_integration_test/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ publish = false
1010
chrono = "0.4.19"
1111
deadpool-postgres = "0.10.1"
1212
futures = "0.3.21"
13-
janus_core = { path = "../janus_core" }
13+
janus_core = { path = "../janus_core", features = ["test-util"] }
1414
janus_client = { path = "../janus_client" }
1515
janus_server = { path = "../janus_server", features = ["test-util"] }
1616
lazy_static = "1"
@@ -19,7 +19,6 @@ rand = "0.8"
1919
reqwest = { version = "0.11.11", default-features = false, features = ["rustls-tls"] }
2020
ring = "0.16.20"
2121
testcontainers = "0.14.0"
22-
janus_test_util = { path = "../test_util" }
2322
tokio = { version = "^1.19", features = ["full", "tracing"] }
2423
tokio-postgres = { version = "0.7.6", features = ["with-chrono-0_4"] }
2524
tracing = "0.1.34"

monolithic_integration_test/tests/integration_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use janus_core::{
66
},
77
message::{Duration, HpkeConfig, Interval, Role, TaskId},
88
task::VdafInstance,
9+
test_util::install_test_trace_subscriber,
910
time::{Clock, RealClock},
1011
TokioRuntime,
1112
};
@@ -19,7 +20,6 @@ use janus_server::{
1920
message::{CollectReq, CollectResp},
2021
task::{test_util::generate_aggregator_auth_token, Task, PRIO3_AES128_VERIFY_KEY_LENGTH},
2122
};
22-
use janus_test_util::install_test_trace_subscriber;
2323
use prio::{
2424
codec::{Decode, Encode},
2525
field::Field64,
@@ -46,7 +46,7 @@ use tokio::{
4646
};
4747
use url::Url;
4848

49-
janus_test_util::define_ephemeral_datastore!();
49+
janus_core::define_ephemeral_datastore!();
5050

5151
#[tokio::test(flavor = "multi_thread")]
5252
async fn end_to_end() {

test_util/Cargo.toml

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)