mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
fix race condition in test http server (#3237)
This commit is contained in:
parent
0d41b10ade
commit
49e04fb240
2 changed files with 17 additions and 14 deletions
|
@ -8,6 +8,7 @@
|
|||
use std::path::PathBuf;
|
||||
use std::process::Child;
|
||||
use std::process::Command;
|
||||
use std::process::Stdio;
|
||||
use std::sync::Mutex;
|
||||
use std::sync::MutexGuard;
|
||||
|
||||
|
@ -62,16 +63,18 @@ pub fn http_server<'a>() -> HttpServerGuard<'a> {
|
|||
let g = GUARD.lock().unwrap();
|
||||
|
||||
println!("tools/http_server.py starting...");
|
||||
let child = Command::new("python")
|
||||
let mut child = Command::new("python")
|
||||
.current_dir(root_path())
|
||||
.arg("tools/http_server.py")
|
||||
.args(&["-u", "tools/http_server.py"])
|
||||
.stdout(Stdio::piped())
|
||||
.spawn()
|
||||
.expect("failed to execute child");
|
||||
|
||||
// Wait 1 second for the server to come up. TODO(ry) this is Racy.
|
||||
std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
|
||||
println!("tools/http_server.py ready");
|
||||
let stdout = child.stdout.as_mut().unwrap();
|
||||
use std::io::{BufRead, BufReader};
|
||||
let mut lines = BufReader::new(stdout).lines();
|
||||
let line = lines.next().unwrap().unwrap();
|
||||
assert!(line.starts_with("ready"));
|
||||
|
||||
HttpServerGuard { child, g }
|
||||
}
|
||||
|
|
|
@ -178,20 +178,20 @@ def spawn():
|
|||
while any(not s.thread.is_alive() for s in servers):
|
||||
sleep(0.01)
|
||||
try:
|
||||
yield
|
||||
print "ready"
|
||||
yield servers
|
||||
finally:
|
||||
for s in servers:
|
||||
s.server.shutdown()
|
||||
|
||||
|
||||
def main():
|
||||
servers = (server(), redirect_server(), another_redirect_server(),
|
||||
double_redirects_server(), inf_redirects_server())
|
||||
try:
|
||||
while all(s.thread.is_alive() for s in servers):
|
||||
sleep(10)
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
with spawn() as servers:
|
||||
try:
|
||||
while all(s.thread.is_alive() for s in servers):
|
||||
sleep(1)
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue