Skip to content

Commit faebe8f

Browse files
committed
temp
1 parent 2bd6852 commit faebe8f

File tree

2 files changed

+20
-33
lines changed

2 files changed

+20
-33
lines changed

redis/tests/support/cluster.rs

+14-32
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
use std::convert::identity;
55
use std::env;
6-
use std::io::Read;
76
use std::process;
87
use std::thread::sleep;
98
use std::time::Duration;
@@ -200,44 +199,30 @@ impl RedisCluster {
200199
folders.push(tempdir);
201200
addrs.push(addr.clone());
202201

203-
let mut cur_attempts = 0;
204-
loop {
205-
let mut process = cmd.spawn().unwrap();
206-
sleep(Duration::from_millis(50));
202+
cmd.spawn().unwrap()
203+
},
204+
));
205+
}
207206

207+
for server in servers.iter_mut() {
208+
let process = &mut server.process;
209+
sleep(Duration::from_millis(50));
208210
match process.try_wait() {
209-
Ok(Some(status)) => {
210-
let stdout = process.stdout.map_or(String::new(), |mut out|{
211-
let mut str = String::new();
212-
out.read_to_string(&mut str).unwrap();
213-
str
214-
});
215-
let stderr = process.stderr.map_or(String::new(), |mut out|{
216-
let mut str = String::new();
217-
out.read_to_string(&mut str).unwrap();
218-
str
219-
});
220-
let err =
221-
format!("redis server creation failed with status {status:?}.\nstdout: `{stdout}`.\nstderr: `{stderr}`");
222-
if cur_attempts == max_attempts {
223-
let log_file_index = cmd.get_args().position(|os_str| os_str == "--logfile").unwrap() + 1;
224-
let log_file_path = cmd.get_args().nth(log_file_index).unwrap();
225-
let contents = std::fs::read_to_string(log_file_path).unwrap();
226-
panic!("{err} - logfile: {contents}");
227-
}
228-
eprintln!("Retrying: {err}");
229-
cur_attempts += 1;
211+
Ok(Some(status)) => {
212+
let contents = std::fs::read_to_string(server.log_file.clone()).unwrap();
213+
panic!("redis server creation failed with status {status:?}.\nlogfile: {contents}");
230214
}
231215
Ok(None) => {
232216
// wait for 10 seconds for the server to be available.
233217
let max_attempts = 200;
234218
let mut cur_attempts = 0;
219+
let addr = &server.addr;
235220
loop {
236221
if cur_attempts == max_attempts {
237-
panic!("redis server creation failed: Port {port} closed")
222+
panic!("redis server creation failed: Port {} closed", &addr)
238223
}
239-
if port_in_use(&addr) {
240-
return process;
224+
if port_in_use(&addr.to_string()) {
225+
continue;
241226
}
242227
eprintln!("Waiting for redis process to initialize");
243228
sleep(Duration::from_millis(50));
@@ -248,9 +233,6 @@ impl RedisCluster {
248233
panic!("Unexpected error in redis server creation {e}");
249234
}
250235
}
251-
}
252-
},
253-
));
254236
}
255237

256238
let mut cmd = process::Command::new("redis-cli");

redis/tests/support/mod.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ pub enum Module {
142142
pub struct RedisServer {
143143
pub process: process::Child,
144144
tempdir: tempfile::TempDir,
145+
log_file: PathBuf,
145146
addr: redis::ConnectionAddr,
146147
pub(crate) tls_paths: Option<TlsFilePaths>,
147148
}
@@ -270,7 +271,8 @@ impl RedisServer {
270271
.prefix("redis")
271272
.tempdir()
272273
.expect("failed to create tempdir");
273-
redis_cmd.arg("--logfile").arg(Self::log_file(&tempdir));
274+
let log_file = Self::log_file(&tempdir);
275+
redis_cmd.arg("--logfile").arg(log_file.clone());
274276
match addr {
275277
redis::ConnectionAddr::Tcp(ref bind, server_port) => {
276278
redis_cmd
@@ -281,6 +283,7 @@ impl RedisServer {
281283

282284
RedisServer {
283285
process: spawner(&mut redis_cmd),
286+
log_file,
284287
tempdir,
285288
addr,
286289
tls_paths: None,
@@ -320,6 +323,7 @@ impl RedisServer {
320323

321324
RedisServer {
322325
process: spawner(&mut redis_cmd),
326+
log_file,
323327
tempdir,
324328
addr,
325329
tls_paths: Some(tls_paths),
@@ -333,6 +337,7 @@ impl RedisServer {
333337
.arg(path);
334338
RedisServer {
335339
process: spawner(&mut redis_cmd),
340+
log_file,
336341
tempdir,
337342
addr,
338343
tls_paths: None,

0 commit comments

Comments
 (0)