1
Fork 0

Stop using oldcomm in uv_global_loop tests

This commit is contained in:
Brian Anderson 2013-01-24 23:53:42 -08:00
parent bc0c5bb447
commit 19aa88cd64

View file

@ -126,15 +126,17 @@ mod test {
use core::iter; use core::iter;
use core::libc; use core::libc;
use core::oldcomm;
use core::ptr; use core::ptr;
use core::task; use core::task;
use core::cast::transmute;
use core::libc::c_void;
use core::pipes::{stream, SharedChan, Chan};
extern fn simple_timer_close_cb(timer_ptr: *ll::uv_timer_t) unsafe { extern fn simple_timer_close_cb(timer_ptr: *ll::uv_timer_t) unsafe {
let exit_ch_ptr = ll::get_data_for_uv_handle( let exit_ch_ptr = ll::get_data_for_uv_handle(
timer_ptr as *libc::c_void) as *oldcomm::Chan<bool>; timer_ptr as *libc::c_void);
let exit_ch = *exit_ch_ptr; let exit_ch = transmute::<*c_void, ~Chan<bool>>(exit_ch_ptr);
oldcomm::send(exit_ch, true); exit_ch.send(true);
log(debug, fmt!("EXIT_CH_PTR simple_timer_close_cb exit_ch_ptr: %?", log(debug, fmt!("EXIT_CH_PTR simple_timer_close_cb exit_ch_ptr: %?",
exit_ch_ptr)); exit_ch_ptr));
} }
@ -153,9 +155,8 @@ mod test {
} }
fn impl_uv_hl_simple_timer(iotask: &IoTask) unsafe { fn impl_uv_hl_simple_timer(iotask: &IoTask) unsafe {
let exit_po = oldcomm::Port::<bool>(); let (exit_po, exit_ch) = stream::<bool>();
let exit_ch = oldcomm::Chan(&exit_po); let exit_ch_ptr: *libc::c_void = transmute(~exit_ch);
let exit_ch_ptr = ptr::addr_of(&exit_ch);
log(debug, fmt!("EXIT_CH_PTR newly created exit_ch_ptr: %?", log(debug, fmt!("EXIT_CH_PTR newly created exit_ch_ptr: %?",
exit_ch_ptr)); exit_ch_ptr));
let timer_handle = ll::timer_t(); let timer_handle = ll::timer_t();
@ -166,7 +167,7 @@ mod test {
if(init_status == 0i32) { if(init_status == 0i32) {
ll::set_data_for_uv_handle( ll::set_data_for_uv_handle(
timer_ptr as *libc::c_void, timer_ptr as *libc::c_void,
exit_ch_ptr as *libc::c_void); exit_ch_ptr);
let start_status = ll::timer_start(timer_ptr, simple_timer_cb, let start_status = ll::timer_start(timer_ptr, simple_timer_cb,
1u, 0u); 1u, 0u);
if(start_status == 0i32) { if(start_status == 0i32) {
@ -179,22 +180,21 @@ mod test {
fail ~"failure on ll::timer_init()"; fail ~"failure on ll::timer_init()";
} }
}; };
oldcomm::recv(exit_po); exit_po.recv();
log(debug, ~"global_loop timer test: msg recv on exit_po, done.."); log(debug, ~"global_loop timer test: msg recv on exit_po, done..");
} }
#[test] #[test]
fn test_gl_uv_global_loop_high_level_global_timer() unsafe { fn test_gl_uv_global_loop_high_level_global_timer() unsafe {
let hl_loop = &get_gl(); let hl_loop = &get_gl();
let exit_po = oldcomm::Port::<()>(); let (exit_po, exit_ch) = stream::<()>();
let exit_ch = oldcomm::Chan(&exit_po);
task::spawn_sched(task::ManualThreads(1u), || { task::spawn_sched(task::ManualThreads(1u), || {
let hl_loop = &get_gl(); let hl_loop = &get_gl();
impl_uv_hl_simple_timer(hl_loop); impl_uv_hl_simple_timer(hl_loop);
oldcomm::send(exit_ch, ()); exit_ch.send(());
}); });
impl_uv_hl_simple_timer(hl_loop); impl_uv_hl_simple_timer(hl_loop);
oldcomm::recv(exit_po); exit_po.recv();
} }
// keeping this test ignored until some kind of stress-test-harness // keeping this test ignored until some kind of stress-test-harness
@ -202,18 +202,19 @@ mod test {
#[test] #[test]
#[ignore] #[ignore]
fn test_stress_gl_uv_global_loop_high_level_global_timer() unsafe { fn test_stress_gl_uv_global_loop_high_level_global_timer() unsafe {
let exit_po = oldcomm::Port::<()>(); let (exit_po, exit_ch) = stream::<()>();
let exit_ch = oldcomm::Chan(&exit_po); let exit_ch = SharedChan(exit_ch);
let cycles = 5000u; let cycles = 5000u;
for iter::repeat(cycles) { for iter::repeat(cycles) {
let exit_ch_clone = exit_ch.clone();
task::spawn_sched(task::ManualThreads(1u), || { task::spawn_sched(task::ManualThreads(1u), || {
let hl_loop = &get_gl(); let hl_loop = &get_gl();
impl_uv_hl_simple_timer(hl_loop); impl_uv_hl_simple_timer(hl_loop);
oldcomm::send(exit_ch, ()); exit_ch_clone.send(());
}); });
}; };
for iter::repeat(cycles) { for iter::repeat(cycles) {
oldcomm::recv(exit_po); exit_po.recv();
}; };
log(debug, ~"test_stress_gl_uv_global_loop_high_level_global_timer"+ log(debug, ~"test_stress_gl_uv_global_loop_high_level_global_timer"+
~" exiting sucessfully!"); ~" exiting sucessfully!");