summaryrefslogtreecommitdiffstats
path: root/tokio/src/time/tests
diff options
context:
space:
mode:
authorGardner Vickers <gardner@vickers.me>2019-12-24 18:34:47 -0500
committerCarl Lerche <me@carllerche.com>2019-12-24 15:34:47 -0800
commit67bf9c36f347031ca05872d102a7f9abc8b465f0 (patch)
tree22c0f472b594382a1bb6fa186b7f40fe4c17013d /tokio/src/time/tests
parent101f770af33ae65820e1cc0e9b89d998b3c1317a (diff)
rt: coalesce thread-locals used by the runtime (#1925)
Previously, thread-locals used by the various drivers were situated with the driver code. This resulted in state being spread out and many thread-locals being required to run a runtime. This PR coalesces the thread-locals into a single struct.
Diffstat (limited to 'tokio/src/time/tests')
-rw-r--r--tokio/src/time/tests/mock_clock.rs27
1 files changed, 14 insertions, 13 deletions
diff --git a/tokio/src/time/tests/mock_clock.rs b/tokio/src/time/tests/mock_clock.rs
index 966952f8..7f8c7eca 100644
--- a/tokio/src/time/tests/mock_clock.rs
+++ b/tokio/src/time/tests/mock_clock.rs
@@ -1,5 +1,6 @@
use crate::park::{Park, Unpark};
-use crate::time::driver::{self, Driver};
+use crate::runtime::context;
+use crate::time::driver::Driver;
use crate::time::{Clock, Duration, Instant};
use std::marker::PhantomData;
@@ -78,18 +79,18 @@ impl MockClock {
where
F: FnOnce(&mut Handle) -> R,
{
- self.clock.enter(|| {
- let park = self.time.mock_park();
- let timer = Driver::new(park, self.clock.clone());
- let handle = timer.handle();
- let _e = driver::set_default(&handle);
-
- let time = self.time.clone();
-
- let mut handle = Handle::new(timer, time, self.clock.clone());
- f(&mut handle)
- // lazy(|| Ok::<_, ()>(f(&mut handle))).wait().unwrap()
- })
+ let park = self.time.mock_park();
+ let timer = Driver::new(park, self.clock.clone());
+ let handle = timer.handle();
+ let ctx = context::ThreadContext::clone_current();
+ let _e = ctx
+ .with_clock(self.clock.clone())
+ .with_time_handle(Some(handle.clone()))
+ .enter();
+
+ let time = self.time.clone();
+ let mut handle = Handle::new(timer, time, self.clock.clone());
+ f(&mut handle)
}
}