Skip to content

Commit ddffad4

Browse files
committed
use random forward port for redis
Signed-off-by: Rajat Jindal <[email protected]>
1 parent be84b0a commit ddffad4

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

tests/src/integration_test.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,14 @@ mod test {
4848
#[tokio::test]
4949
async fn spin_inbound_redis_outbound_redis_test() -> Result<()> {
5050
let host_port = 8082;
51-
let forward_port = 6380;
5251
let redis_port = 6379;
5352

5453
// Ensure kubectl is in PATH
5554
if !is_kubectl_installed().await? {
5655
anyhow::bail!("kubectl is not installed");
5756
}
5857

59-
port_forward_redis(forward_port, redis_port).await?;
58+
let forward_port = port_forward_redis(redis_port).await?;
6059

6160
let client = redis::Client::open(format!("redis://localhost:{}", forward_port))?;
6261
let mut con = client.get_multiplexed_async_connection().await?;
@@ -100,15 +99,14 @@ mod test {
10099
"Hello world from multi trigger Spin!"
101100
);
102101

103-
let forward_port = 6380;
104102
let redis_port = 6379;
105103

106104
// Ensure kubectl is in PATH
107105
if !is_kubectl_installed().await? {
108106
anyhow::bail!("kubectl is not installed");
109107
}
110108

111-
port_forward_redis(forward_port, redis_port).await?;
109+
let forward_port = port_forward_redis(redis_port).await?;
112110

113111
let client = redis::Client::open(format!("redis://localhost:{}", forward_port))
114112
.context("connecting to redis")?;
@@ -143,17 +141,24 @@ mod test {
143141
}
144142
}
145143

146-
async fn port_forward_redis(forward_port: u16, redis_port: u16) -> Result<()> {
147-
println!(
148-
" >>> kubectl portforward redis {}:{} ",
149-
forward_port, redis_port
150-
);
144+
async fn port_forward_redis(redis_port: u16) -> Result<u16> {
145+
let port = get_random_port()?;
146+
147+
println!(" >>> kubectl portforward redis {}:{} ", port, redis_port);
148+
151149
Command::new("kubectl")
152150
.arg("port-forward")
153151
.arg("redis")
154-
.arg(format!("{}:{}", forward_port, redis_port))
152+
.arg(format!("{}:{}", port, redis_port))
155153
.spawn()?;
156154
tokio::time::sleep(tokio::time::Duration::from_secs(2)).await;
157-
Ok(())
155+
Ok(port)
156+
}
157+
158+
/// Uses a track to get a random unused port
159+
fn get_random_port() -> anyhow::Result<u16> {
160+
Ok(std::net::TcpListener::bind("localhost:0")?
161+
.local_addr()?
162+
.port())
158163
}
159164
}

0 commit comments

Comments
 (0)