summaryrefslogtreecommitdiff
path: root/crates/tor-rtmock
diff options
context:
space:
mode:
Diffstat (limited to 'crates/tor-rtmock')
-rw-r--r--crates/tor-rtmock/Cargo.toml1
-rw-r--r--crates/tor-rtmock/src/simple_time.rs8
-rw-r--r--crates/tor-rtmock/src/sleep_runtime.rs2
-rw-r--r--crates/tor-rtmock/src/time.rs13
-rw-r--r--crates/tor-rtmock/src/time_core.rs2
-rw-r--r--crates/tor-rtmock/src/util.rs2
-rw-r--r--crates/tor-rtmock/tests/rtcompat_timing.rs4
7 files changed, 17 insertions, 15 deletions
diff --git a/crates/tor-rtmock/Cargo.toml b/crates/tor-rtmock/Cargo.toml
index c18abd0bd..58a564f34 100644
--- a/crates/tor-rtmock/Cargo.toml
+++ b/crates/tor-rtmock/Cargo.toml
@@ -33,6 +33,7 @@ tor-rtcompat = { version = "0.40.0", path = "../tor-rtcompat" }
tracing = "0.1.36"
tracing-test = "0.2.4"
void = "1"
+web-time-compat = { version = "0.1.0", path = "../web-time-compat" }
[dev-dependencies]
futures-await-test = "0.3.0"
diff --git a/crates/tor-rtmock/src/simple_time.rs b/crates/tor-rtmock/src/simple_time.rs
index 084716581..2e2da094a 100644
--- a/crates/tor-rtmock/src/simple_time.rs
+++ b/crates/tor-rtmock/src/simple_time.rs
@@ -7,7 +7,7 @@ use std::future::Future;
use std::pin::Pin;
use std::sync::{Arc, Mutex, MutexGuard};
use std::task::{Context, Poll, Waker};
-use std::time::{Duration, Instant, SystemTime};
+use web_time_compat::{Duration, Instant, InstantExt, SystemTime, SystemTimeExt};
use derive_more::AsMut;
use priority_queue::priority_queue::PriorityQueue;
@@ -121,7 +121,7 @@ impl Provider {
/// Like any [`SimpleMockTimeProvider`], the time is frozen and only changes
/// due to calls to `advance`.
pub fn from_real() -> Self {
- Provider::from_wallclock(SystemTime::now())
+ Provider::from_wallclock(SystemTime::get())
}
/// Return a new mock time provider starting at a specified wallclock time
///
@@ -131,7 +131,7 @@ impl Provider {
/// nor can a fixed `Instant` be constructed,
/// so this is usually sufficient for a reproducible test.)
pub fn from_wallclock(wallclock: SystemTime) -> Self {
- Provider::new(Instant::now(), wallclock)
+ Provider::new(Instant::get(), wallclock)
}
/// Advance the simulated time by `d`
@@ -320,7 +320,7 @@ mod test {
FUT: Future<Output = ()>,
{
let sp = Provider::new(
- Instant::now(), // it would have been nice to make this fixed for the test
+ Instant::get(), // it would have been nice to make this fixed for the test
parse_rfc3339("2000-01-01T00:00:00Z").unwrap(),
);
let exec = MockExecutor::new();
diff --git a/crates/tor-rtmock/src/sleep_runtime.rs b/crates/tor-rtmock/src/sleep_runtime.rs
index a9ba811a7..04a5cb74b 100644
--- a/crates/tor-rtmock/src/sleep_runtime.rs
+++ b/crates/tor-rtmock/src/sleep_runtime.rs
@@ -33,7 +33,7 @@ impl<R: Runtime> MockSleepRuntime<R> {
/// Create a new runtime that wraps `runtime`, but overrides
/// its view of time with a [`MockSleepProvider`].
pub fn new(runtime: R) -> Self {
- let sleep = MockSleepProvider::new(SystemTime::now());
+ let sleep = MockSleepProvider::new(SystemTime::get());
MockSleepRuntime { runtime, sleep }
}
diff --git a/crates/tor-rtmock/src/time.rs b/crates/tor-rtmock/src/time.rs
index 56be8c117..e5608ffaa 100644
--- a/crates/tor-rtmock/src/time.rs
+++ b/crates/tor-rtmock/src/time.rs
@@ -20,8 +20,8 @@ use std::{
pin::Pin,
sync::{Arc, Mutex, Weak},
task::{Context, Poll, Waker},
- time::{Duration, Instant, SystemTime},
};
+use web_time_compat::{Duration, Instant, InstantExt, SystemTime};
use futures::Future;
use tracing::trace;
@@ -211,7 +211,7 @@ impl Default for MockSleepProvider {
impl MockSleepProvider {
/// Create a new MockSleepProvider, starting at a given wall-clock time.
pub fn new(wallclock: SystemTime) -> Self {
- let instant = Instant::now();
+ let instant = Instant::get();
let sleepers = BinaryHeap::new();
let core = MockTimeCore::new(instant, wallclock);
let state = SleepSchedule {
@@ -590,10 +590,11 @@ mod test {
//! <!-- @@ end test lint list maintained by maint/add_warning @@ -->
use super::*;
use tor_rtcompat::test_with_all_runtimes;
+ use web_time_compat::SystemTimeExt;
#[test]
fn basics_of_time_travel() {
- let w1 = SystemTime::now();
+ let w1 = SystemTime::get();
let sp = MockSleepProvider::new(w1);
let i1 = sp.now();
assert_eq!(sp.wallclock(), w1);
@@ -615,7 +616,7 @@ mod test {
use std::sync::atomic::AtomicBool;
use std::sync::atomic::Ordering;
- let sp = MockSleepProvider::new(SystemTime::now());
+ let sp = MockSleepProvider::new(SystemTime::get());
let one_hour = Duration::new(3600, 0);
let (s1, r1) = oneshot::channel();
@@ -626,7 +627,7 @@ mod test {
let b2 = AtomicBool::new(false);
let b3 = AtomicBool::new(false);
- let real_start = Instant::now();
+ let real_start = Instant::get();
futures::join!(
async {
@@ -662,7 +663,7 @@ mod test {
assert!(b1.load(Ordering::SeqCst));
assert!(b2.load(Ordering::SeqCst));
assert!(b3.load(Ordering::SeqCst));
- let real_end = Instant::now();
+ let real_end = Instant::get();
assert!(real_end - real_start < one_hour);
}
diff --git a/crates/tor-rtmock/src/time_core.rs b/crates/tor-rtmock/src/time_core.rs
index 98ac5b9eb..35fdb60ef 100644
--- a/crates/tor-rtmock/src/time_core.rs
+++ b/crates/tor-rtmock/src/time_core.rs
@@ -1,9 +1,9 @@
//! [`MockTimeCore`] and [`MockCoarseTimeProvider`]
use derive_deftly::{Deftly, define_derive_deftly};
-use std::time::{Duration, Instant, SystemTime};
use tor_rtcompat::{CoarseDuration, CoarseInstant};
use tor_rtcompat::{CoarseTimeProvider, RealCoarseTimeProvider};
+use web_time_compat::{Duration, Instant, SystemTime};
define_derive_deftly! {
/// Derive getters for struct fields.
diff --git a/crates/tor-rtmock/src/util.rs b/crates/tor-rtmock/src/util.rs
index 0245cb5ce..6c5b77cd0 100644
--- a/crates/tor-rtmock/src/util.rs
+++ b/crates/tor-rtmock/src/util.rs
@@ -190,11 +190,11 @@ pub(crate) mod impl_runtime_prelude {
pub(crate) use futures::task::{FutureObj, Spawn, SpawnError};
pub(crate) use std::io::Result as IoResult;
pub(crate) use std::net::SocketAddr;
- pub(crate) use std::time::{Duration, Instant, SystemTime};
pub(crate) use tor_rtcompat::{
Blocking, CoarseInstant, CoarseTimeProvider, NetStreamProvider, Runtime, SleepProvider,
TlsProvider, ToplevelBlockOn, UdpProvider, unimpl::FakeListener, unimpl::FakeStream,
};
+ pub(crate) use web_time_compat::{Duration, Instant, SystemTime, SystemTimeExt};
}
/// Wrapper for `futures::channel::mpsc::channel` that embodies the `#[allow]`
diff --git a/crates/tor-rtmock/tests/rtcompat_timing.rs b/crates/tor-rtmock/tests/rtcompat_timing.rs
index 6d74f3b1c..f88cb65f5 100644
--- a/crates/tor-rtmock/tests/rtcompat_timing.rs
+++ b/crates/tor-rtmock/tests/rtcompat_timing.rs
@@ -22,7 +22,7 @@ use tor_rtmock::time::MockSleepProvider;
use futures::FutureExt;
use oneshot_fused_workaround as oneshot;
use std::sync::atomic::{AtomicBool, Ordering};
-use std::time::{Duration, SystemTime};
+use web_time_compat::{Duration, SystemTime, SystemTimeExt};
#[test]
fn timeouts() {
@@ -31,7 +31,7 @@ fn timeouts() {
oneshot::Sender<()>,
Timeout<oneshot::Receiver<()>, tor_rtmock::time::Sleeping>,
) {
- let start = SystemTime::now();
+ let start = SystemTime::get();
let (send, recv) = oneshot::channel::<()>();
let mock_sp = MockSleepProvider::new(start);
let ten_min = Duration::new(10 * 60, 0);