Skip to content

Commit 4d0b4e5

Browse files
committed
fix isolate tests
1 parent 0ce9011 commit 4d0b4e5

File tree

2 files changed

+18
-96
lines changed

2 files changed

+18
-96
lines changed

core/isolate.rs

+17-95
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,12 @@ impl Future for Isolate {
717717
inner.check_last_exception()?;
718718

719719
// We're idle if pending_ops is empty.
720+
eprintln!(
721+
"has ops {} have unpoolled ops {} dyn import {}",
722+
inner.pending_ops.len(),
723+
inner.have_unpolled_ops,
724+
inner.pending_dyn_imports.is_empty()
725+
);
720726
if inner.pending_ops.is_empty() && inner.pending_dyn_imports.is_empty() {
721727
Poll::Ready(Ok(()))
722728
} else {
@@ -759,7 +765,6 @@ pub fn js_check<T>(r: Result<T, ErrBox>) -> T {
759765
#[cfg(test)]
760766
pub mod tests {
761767
use super::*;
762-
use futures::executor::ThreadPool;
763768
use futures::future::lazy;
764769
use std::io;
765770
use std::ops::FnOnce;
@@ -769,8 +774,7 @@ pub mod tests {
769774
where
770775
F: FnOnce(&mut Context) + Send + 'static,
771776
{
772-
let poll = ThreadPool::new().unwrap();
773-
poll.spawn_ok(lazy(move |cx| f(cx)));
777+
futures::executor::block_on(lazy(move |cx| f(cx)));
774778
}
775779

776780
fn poll_until_ready<F>(future: &mut F, max_poll_count: usize) -> F::Output
@@ -790,34 +794,8 @@ pub mod tests {
790794
)
791795
}
792796

793-
struct DelayedFuture {
794-
counter: u32,
795-
buf: Box<[u8]>,
796-
}
797-
798-
impl DelayedFuture {
799-
pub fn new(buf: Box<[u8]>) -> Self {
800-
DelayedFuture { counter: 0, buf }
801-
}
802-
}
803-
804-
impl Future for DelayedFuture {
805-
type Output = Result<Box<[u8]>, ()>;
806-
807-
fn poll(self: Pin<&mut Self>, _cx: &mut Context) -> Poll<Self::Output> {
808-
let inner = self.get_mut();
809-
if inner.counter > 0 {
810-
return Poll::Ready(Ok(inner.buf.clone()));
811-
}
812-
813-
inner.counter += 1;
814-
Poll::Pending
815-
}
816-
}
817-
818797
pub enum Mode {
819-
AsyncImmediate,
820-
AsyncDelayed,
798+
Async,
821799
OverflowReqSync,
822800
OverflowResSync,
823801
OverflowReqAsync,
@@ -834,18 +812,12 @@ pub mod tests {
834812
move |control: &[u8], _zero_copy: Option<PinnedBuf>| -> CoreOp {
835813
dispatch_count_.fetch_add(1, Ordering::Relaxed);
836814
match mode {
837-
Mode::AsyncImmediate => {
815+
Mode::Async => {
838816
assert_eq!(control.len(), 1);
839817
assert_eq!(control[0], 42);
840818
let buf = vec![43u8, 0, 0, 0].into_boxed_slice();
841819
Op::Async(futures::future::ok(buf).boxed())
842820
}
843-
Mode::AsyncDelayed => {
844-
assert_eq!(control.len(), 1);
845-
assert_eq!(control[0], 42);
846-
let buf = vec![43u8, 0, 0, 0].into_boxed_slice();
847-
Op::Async(DelayedFuture::new(buf).boxed())
848-
}
849821
Mode::OverflowReqSync => {
850822
assert_eq!(control.len(), 100 * 1024 * 1024);
851823
let buf = vec![43u8, 0, 0, 0].into_boxed_slice();
@@ -863,7 +835,7 @@ pub mod tests {
863835
Mode::OverflowReqAsync => {
864836
assert_eq!(control.len(), 100 * 1024 * 1024);
865837
let buf = vec![43u8, 0, 0, 0].into_boxed_slice();
866-
Op::Async(DelayedFuture::new(buf).boxed())
838+
Op::Async(futures::future::ok(buf).boxed())
867839
}
868840
Mode::OverflowResAsync => {
869841
assert_eq!(control.len(), 1);
@@ -872,7 +844,7 @@ pub mod tests {
872844
vec.resize(100 * 1024 * 1024, 0);
873845
vec[0] = 4;
874846
let buf = vec.into_boxed_slice();
875-
Op::Async(DelayedFuture::new(buf).boxed())
847+
Op::Async(futures::future::ok(buf).boxed())
876848
}
877849
}
878850
};
@@ -895,7 +867,7 @@ pub mod tests {
895867

896868
#[test]
897869
fn test_dispatch() {
898-
let (mut isolate, dispatch_count) = setup(Mode::AsyncImmediate);
870+
let (mut isolate, dispatch_count) = setup(Mode::Async);
899871
js_check(isolate.execute(
900872
"filename.js",
901873
r#"
@@ -912,7 +884,7 @@ pub mod tests {
912884

913885
#[test]
914886
fn test_mods() {
915-
let (mut isolate, dispatch_count) = setup(Mode::AsyncImmediate);
887+
let (mut isolate, dispatch_count) = setup(Mode::Async);
916888
let mod_a = isolate
917889
.mod_new(
918890
true,
@@ -958,60 +930,10 @@ pub mod tests {
958930
assert_eq!(resolve_count.load(Ordering::SeqCst), 1);
959931
}
960932

961-
#[test]
962-
fn test_poll_async_immediate_ops() {
963-
run_in_task(|cx| {
964-
let (mut isolate, dispatch_count) = setup(Mode::AsyncImmediate);
965-
966-
js_check(isolate.execute(
967-
"setup2.js",
968-
r#"
969-
let nrecv = 0;
970-
Deno.core.setAsyncHandler((opId, buf) => {
971-
nrecv++;
972-
});
973-
"#,
974-
));
975-
assert_eq!(dispatch_count.load(Ordering::Relaxed), 0);
976-
js_check(isolate.execute(
977-
"check1.js",
978-
r#"
979-
assert(nrecv == 0);
980-
let control = new Uint8Array([42]);
981-
const res1 = Deno.core.send(1, control);
982-
assert(res1);
983-
assert(nrecv == 0);
984-
"#,
985-
));
986-
assert_eq!(dispatch_count.load(Ordering::Relaxed), 1);
987-
assert_eq!(dispatch_count.load(Ordering::Relaxed), 1);
988-
js_check(isolate.execute(
989-
"check2.js",
990-
r#"
991-
assert(nrecv == 0);
992-
Deno.core.send(1, control);
993-
assert(nrecv == 0);
994-
"#,
995-
));
996-
assert_eq!(dispatch_count.load(Ordering::Relaxed), 2);
997-
assert_eq!(dispatch_count.load(Ordering::Relaxed), 2);
998-
assert!(match isolate.poll_unpin(cx) {
999-
Poll::Ready(Ok(_)) => true,
1000-
_ => false,
1001-
});
1002-
js_check(isolate.execute("check3.js", "assert(nrecv == 0)"));
1003-
// We are idle, so the next poll should be the last.
1004-
assert!(match isolate.poll_unpin(cx) {
1005-
Poll::Ready(Ok(_)) => true,
1006-
_ => false,
1007-
});
1008-
});
1009-
}
1010-
1011933
#[test]
1012934
fn test_poll_async_delayed_ops() {
1013935
run_in_task(|cx| {
1014-
let (mut isolate, dispatch_count) = setup(Mode::AsyncDelayed);
936+
let (mut isolate, dispatch_count) = setup(Mode::Async);
1015937

1016938
js_check(isolate.execute(
1017939
"setup2.js",
@@ -1275,7 +1197,7 @@ pub mod tests {
12751197
let (tx, rx) = std::sync::mpsc::channel::<bool>();
12761198
let tx_clone = tx.clone();
12771199

1278-
let (mut isolate, _dispatch_count) = setup(Mode::AsyncImmediate);
1200+
let (mut isolate, _dispatch_count) = setup(Mode::Async);
12791201
let shared = isolate.shared_isolate_handle();
12801202

12811203
let t1 = std::thread::spawn(move || {
@@ -1332,7 +1254,7 @@ pub mod tests {
13321254
fn dangling_shared_isolate() {
13331255
let shared = {
13341256
// isolate is dropped at the end of this block
1335-
let (mut isolate, _dispatch_count) = setup(Mode::AsyncImmediate);
1257+
let (mut isolate, _dispatch_count) = setup(Mode::Async);
13361258
isolate.shared_isolate_handle()
13371259
};
13381260

@@ -1499,7 +1421,7 @@ pub mod tests {
14991421
#[test]
15001422
fn test_js() {
15011423
run_in_task(|mut cx| {
1502-
let (mut isolate, _dispatch_count) = setup(Mode::AsyncImmediate);
1424+
let (mut isolate, _dispatch_count) = setup(Mode::Async);
15031425
js_check(
15041426
isolate.execute(
15051427
"shared_queue_test.js",

core/modules.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ mod tests {
626626
impl MockLoader {
627627
fn new() -> Self {
628628
let modules = Modules::new();
629-
let (isolate, _dispatch_count) = setup(Mode::AsyncImmediate);
629+
let (isolate, _dispatch_count) = setup(Mode::Async);
630630
Self {
631631
loads: Arc::new(Mutex::new(Vec::new())),
632632
isolate: Arc::new(Mutex::new(isolate)),

0 commit comments

Comments
 (0)