Skip to content

Commit ebad70f

Browse files
Let the kernel pick the client port (for parallel test runs)
1 parent 8127f5f commit ebad70f

File tree

6 files changed

+80
-53
lines changed

6 files changed

+80
-53
lines changed

crates/edp_node/tests/gen_event_tests.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ use std::pin::Pin;
2020
use std::sync::Arc;
2121
use tokio::sync::Mutex;
2222

23+
fn test_node_name(base: &str) -> String {
24+
format!("{}_{}@localhost", base, std::process::id())
25+
}
26+
2327
struct LoggerHandler {
2428
id: OwnedTerm,
2529
events: Arc<Mutex<Vec<OwnedTerm>>>,
@@ -122,8 +126,8 @@ impl GenEventHandler for RemovingHandler {
122126

123127
#[tokio::test]
124128
async fn test_gen_event_notify() {
125-
let mut node = Node::new("test_genevent@localhost", "secret");
126-
node.start(5580).await.unwrap();
129+
let mut node = Node::new(test_node_name("test_genevent"), "secret");
130+
node.start(0).await.unwrap();
127131

128132
let events = Arc::new(Mutex::new(Vec::new()));
129133
let handler = LoggerHandler::new(OwnedTerm::Atom(Atom::new("logger")), events.clone());
@@ -151,8 +155,8 @@ async fn test_gen_event_notify() {
151155

152156
#[tokio::test]
153157
async fn test_gen_event_multiple_handlers() {
154-
let mut node = Node::new("test_genevent_multi@localhost", "secret");
155-
node.start(5581).await.unwrap();
158+
let mut node = Node::new(test_node_name("test_genevent_multi"), "secret");
159+
node.start(0).await.unwrap();
156160

157161
let events1 = Arc::new(Mutex::new(Vec::new()));
158162
let events2 = Arc::new(Mutex::new(Vec::new()));
@@ -195,8 +199,8 @@ async fn test_gen_event_multiple_handlers() {
195199

196200
#[tokio::test]
197201
async fn test_gen_event_handler_removal() {
198-
let mut node = Node::new("test_genevent_remove@localhost", "secret");
199-
node.start(5582).await.unwrap();
202+
let mut node = Node::new(test_node_name("test_genevent_remove"), "secret");
203+
node.start(0).await.unwrap();
200204

201205
let handler = RemovingHandler::new(OwnedTerm::Atom(Atom::new("removing")), "stop".to_string());
202206

@@ -230,8 +234,8 @@ async fn test_gen_event_handler_removal() {
230234

231235
#[tokio::test]
232236
async fn test_gen_event_which_handlers() {
233-
let mut node = Node::new("test_genevent_which@localhost", "secret");
234-
node.start(5583).await.unwrap();
237+
let mut node = Node::new(test_node_name("test_genevent_which"), "secret");
238+
node.start(0).await.unwrap();
235239

236240
let events1 = Arc::new(Mutex::new(Vec::new()));
237241
let events2 = Arc::new(Mutex::new(Vec::new()));
@@ -256,8 +260,8 @@ async fn test_gen_event_which_handlers() {
256260

257261
#[tokio::test]
258262
async fn test_gen_event_delete_handler() {
259-
let mut node = Node::new("test_genevent_delete@localhost", "secret");
260-
node.start(5584).await.unwrap();
263+
let mut node = Node::new(test_node_name("test_genevent_delete"), "secret");
264+
node.start(0).await.unwrap();
261265

262266
let events = Arc::new(Mutex::new(Vec::new()));
263267
let handler = LoggerHandler::new(OwnedTerm::Atom(Atom::new("logger")), events.clone());

crates/edp_node/tests/gen_server_tests.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ use erltf::types::{Atom, ExternalPid};
1818
use std::sync::Arc;
1919
use tokio::sync::Mutex;
2020

21+
fn test_node_name(base: &str) -> String {
22+
format!("{}_{}@localhost", base, std::process::id())
23+
}
24+
2125
struct CounterServer {
2226
count: i64,
2327
casts_received: Arc<Mutex<Vec<OwnedTerm>>>,
@@ -69,8 +73,8 @@ impl GenServer for CounterServer {
6973

7074
#[tokio::test]
7175
async fn test_genserver_call() {
72-
let mut node = Node::new("test_genserver@localhost", "secret");
73-
node.start(5558).await.unwrap();
76+
let mut node = Node::new(test_node_name("test_genserver"), "secret");
77+
node.start(0).await.unwrap();
7478

7579
let casts = Arc::new(Mutex::new(Vec::new()));
7680
let server = CounterServer::new(casts.clone());
@@ -86,8 +90,8 @@ async fn test_genserver_call() {
8690

8791
#[tokio::test]
8892
async fn test_genserver_cast() {
89-
let mut node = Node::new("test_genserver_cast@localhost", "secret");
90-
node.start(5559).await.unwrap();
93+
let mut node = Node::new(test_node_name("test_genserver_cast"), "secret");
94+
node.start(0).await.unwrap();
9195

9296
let casts = Arc::new(Mutex::new(Vec::new()));
9397
let server = CounterServer::new(casts.clone());

crates/edp_node/tests/link_monitor_tests.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ use erltf::types::{ExternalPid, ExternalReference};
1818
use std::sync::Arc;
1919
use tokio::sync::Mutex;
2020

21+
fn test_node_name(base: &str) -> String {
22+
format!("{}_{}@localhost", base, std::process::id())
23+
}
24+
2125
#[derive(Clone)]
2226
struct LinkTestProcess {
2327
exit_received: Arc<Mutex<Vec<(ExternalPid, OwnedTerm)>>>,
@@ -65,8 +69,8 @@ impl Process for LinkTestProcess {
6569

6670
#[tokio::test]
6771
async fn test_link_tracking() {
68-
let mut node = Node::new("test_link@localhost", "secret");
69-
node.start(5560).await.unwrap();
72+
let mut node = Node::new(test_node_name("test_link"), "secret");
73+
node.start(0).await.unwrap();
7074

7175
let exits = Arc::new(Mutex::new(Vec::new()));
7276
let monitor_exits = Arc::new(Mutex::new(Vec::new()));
@@ -84,8 +88,8 @@ async fn test_link_tracking() {
8488

8589
#[tokio::test]
8690
async fn test_unlink() {
87-
let mut node = Node::new("test_unlink@localhost", "secret");
88-
node.start(5561).await.unwrap();
91+
let mut node = Node::new(test_node_name("test_unlink"), "secret");
92+
node.start(0).await.unwrap();
8993

9094
let exits = Arc::new(Mutex::new(Vec::new()));
9195
let monitor_exits = Arc::new(Mutex::new(Vec::new()));
@@ -108,8 +112,8 @@ async fn test_unlink() {
108112

109113
#[tokio::test]
110114
async fn test_monitor_tracking() {
111-
let mut node = Node::new("test_monitor@localhost", "secret");
112-
node.start(5562).await.unwrap();
115+
let mut node = Node::new(test_node_name("test_monitor"), "secret");
116+
node.start(0).await.unwrap();
113117

114118
let exits = Arc::new(Mutex::new(Vec::new()));
115119
let monitor_exits = Arc::new(Mutex::new(Vec::new()));
@@ -129,8 +133,8 @@ async fn test_monitor_tracking() {
129133

130134
#[tokio::test]
131135
async fn test_demonitor() {
132-
let mut node = Node::new("test_demonitor@localhost", "secret");
133-
node.start(5563).await.unwrap();
136+
let mut node = Node::new(test_node_name("test_demonitor"), "secret");
137+
node.start(0).await.unwrap();
134138

135139
let exits = Arc::new(Mutex::new(Vec::new()));
136140
let monitor_exits = Arc::new(Mutex::new(Vec::new()));

crates/edp_node/tests/message_passing_tests.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ use erltf::types::Atom;
1818
use std::sync::Arc;
1919
use tokio::sync::Mutex;
2020

21+
fn test_node_name(base: &str) -> String {
22+
format!("{}_{}@localhost", base, std::process::id())
23+
}
24+
2125
struct CollectorProcess {
2226
messages: Arc<Mutex<Vec<OwnedTerm>>>,
2327
}
@@ -39,8 +43,8 @@ impl Process for CollectorProcess {
3943

4044
#[tokio::test]
4145
async fn test_local_message_passing() {
42-
let mut node = Node::new("test@localhost", "secret");
43-
node.start(5555).await.unwrap();
46+
let mut node = Node::new(test_node_name("test"), "secret");
47+
node.start(0).await.unwrap();
4448

4549
let messages = Arc::new(Mutex::new(Vec::new()));
4650
let collector = CollectorProcess::new(messages.clone());
@@ -62,8 +66,8 @@ async fn test_local_message_passing() {
6266

6367
#[tokio::test]
6468
async fn test_registered_name_message_passing() {
65-
let mut node = Node::new("test2@localhost", "secret");
66-
node.start(5556).await.unwrap();
69+
let mut node = Node::new(test_node_name("test2"), "secret");
70+
node.start(0).await.unwrap();
6771

6872
let messages = Arc::new(Mutex::new(Vec::new()));
6973
let collector = CollectorProcess::new(messages.clone());
@@ -84,12 +88,13 @@ async fn test_registered_name_message_passing() {
8488

8589
#[tokio::test]
8690
async fn test_message_to_nonexistent_process() {
87-
let mut node = Node::new("test3@localhost", "secret");
88-
node.start(5557).await.unwrap();
91+
let name = test_node_name("test3");
92+
let mut node = Node::new(&name, "secret");
93+
node.start(0).await.unwrap();
8994

9095
let result = node
9196
.send(
92-
&erltf::types::ExternalPid::new(Atom::new("test3@localhost"), 99999, 0, 1),
97+
&erltf::types::ExternalPid::new(Atom::new(&name), 99999, 0, 1),
9398
OwnedTerm::Atom(Atom::new("test")),
9499
)
95100
.await;

crates/edp_node/tests/node_tests.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ use edp_node::{Message, Node, Process};
1616
use erltf::OwnedTerm;
1717
use erltf::types::Atom;
1818

19+
fn test_node_name(base: &str) -> String {
20+
format!("{}_{}@localhost", base, std::process::id())
21+
}
22+
1923
struct TestProcess {
2024
received: Vec<OwnedTerm>,
2125
}
@@ -43,8 +47,8 @@ impl Process for TestProcess {
4347

4448
#[tokio::test]
4549
async fn test_spawn_and_register_process() {
46-
let mut node = Node::new("test@localhost", "secret");
47-
node.start(5570).await.unwrap();
50+
let mut node = Node::new(test_node_name("test"), "secret");
51+
node.start(0).await.unwrap();
4852

4953
let process = TestProcess::new();
5054
let pid = node.spawn(process).await.unwrap();
@@ -59,8 +63,8 @@ async fn test_spawn_and_register_process() {
5963

6064
#[tokio::test]
6165
async fn test_unregister_process() {
62-
let mut node = Node::new("test2@localhost", "secret");
63-
node.start(5571).await.unwrap();
66+
let mut node = Node::new(test_node_name("test2"), "secret");
67+
node.start(0).await.unwrap();
6468

6569
let process = TestProcess::new();
6670
let pid = node.spawn(process).await.unwrap();
@@ -75,8 +79,8 @@ async fn test_unregister_process() {
7579

7680
#[tokio::test]
7781
async fn test_duplicate_registration_fails() {
78-
let mut node = Node::new("test3@localhost", "secret");
79-
node.start(5572).await.unwrap();
82+
let mut node = Node::new(test_node_name("test3"), "secret");
83+
node.start(0).await.unwrap();
8084

8185
let process1 = TestProcess::new();
8286
let pid1 = node.spawn(process1).await.unwrap();
@@ -90,8 +94,8 @@ async fn test_duplicate_registration_fails() {
9094

9195
#[tokio::test]
9296
async fn test_list_registered_names() {
93-
let mut node = Node::new("test4@localhost", "secret");
94-
node.start(5573).await.unwrap();
97+
let mut node = Node::new(test_node_name("test4"), "secret");
98+
node.start(0).await.unwrap();
9599

96100
let process1 = TestProcess::new();
97101
let pid1 = node.spawn(process1).await.unwrap();
@@ -113,8 +117,8 @@ async fn test_list_registered_names() {
113117

114118
#[tokio::test]
115119
async fn test_process_count() {
116-
let mut node = Node::new("test5@localhost", "secret");
117-
node.start(5574).await.unwrap();
120+
let mut node = Node::new(test_node_name("test5"), "secret");
121+
node.start(0).await.unwrap();
118122

119123
assert_eq!(node.process_count().await, 0);
120124

crates/edp_node/tests/rpc_tests.rs

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,32 @@
1414

1515
use edp_node::Node;
1616

17+
fn test_node_name(base: &str) -> String {
18+
format!("{}_{}@localhost", base, std::process::id())
19+
}
20+
1721
//
1822
// Reference Creation Tests
1923
//
2024

2125
#[tokio::test]
2226
async fn test_rpc_reference_creation() {
23-
let mut node = Node::new("rpc_test1@localhost", "secret");
24-
node.start(5580).await.unwrap();
27+
let name = test_node_name("rpc_test1");
28+
let mut node = Node::new(&name, "secret");
29+
node.start(0).await.unwrap();
2530

2631
let ref1 = node.make_reference();
2732
let ref2 = node.make_reference();
2833

2934
assert_ne!(ref1, ref2);
30-
assert_eq!(ref1.node.as_str(), "rpc_test1@localhost");
31-
assert_eq!(ref2.node.as_str(), "rpc_test1@localhost");
35+
assert_eq!(ref1.node.as_str(), name);
36+
assert_eq!(ref2.node.as_str(), name);
3237
}
3338

3439
#[tokio::test]
3540
async fn test_rpc_reference_uniqueness() {
36-
let mut node = Node::new("rpc_test1b@localhost", "secret");
37-
node.start(5580).await.unwrap();
41+
let mut node = Node::new(test_node_name("rpc_test1b"), "secret");
42+
node.start(0).await.unwrap();
3843

3944
let mut refs = Vec::new();
4045
for _ in 0..100 {
@@ -58,8 +63,8 @@ async fn test_rpc_reference_uniqueness() {
5863

5964
#[tokio::test]
6065
async fn test_rpc_to_nonexistent_node() {
61-
let mut node = Node::new("rpc_test2@localhost", "secret");
62-
node.start(5581).await.unwrap();
66+
let mut node = Node::new(test_node_name("rpc_test2"), "secret");
67+
node.start(0).await.unwrap();
6368

6469
let result = node
6570
.rpc_call("nonexistent@localhost", "erlang", "node", vec![])
@@ -70,8 +75,8 @@ async fn test_rpc_to_nonexistent_node() {
7075

7176
#[tokio::test]
7277
async fn test_rpc_requires_connection() {
73-
let mut node = Node::new("rpc_test3@localhost", "secret");
74-
node.start(5582).await.unwrap();
78+
let mut node = Node::new(test_node_name("rpc_test3"), "secret");
79+
node.start(0).await.unwrap();
7580

7681
let result = node
7782
.rpc_call("not_connected@localhost", "erlang", "node", vec![])
@@ -86,16 +91,17 @@ async fn test_rpc_requires_connection() {
8691

8792
#[tokio::test]
8893
async fn test_rpc_node_name_and_cookie_accessors() {
89-
let node = Node::new("rpc_test4@localhost", "secret_cookie");
94+
let name = test_node_name("rpc_test4");
95+
let node = Node::new(&name, "secret_cookie");
9096

91-
assert_eq!(node.name().as_str(), "rpc_test4@localhost");
97+
assert_eq!(node.name().as_str(), name);
9298
assert_eq!(node.cookie(), "secret_cookie");
9399
}
94100

95101
#[tokio::test]
96102
async fn test_rpc_creation_increments() {
97-
let mut node = Node::new("rpc_test5@localhost", "secret");
98-
node.start(5583).await.unwrap();
103+
let mut node = Node::new(test_node_name("rpc_test5"), "secret");
104+
node.start(0).await.unwrap();
99105

100106
let initial_creation = node.creation();
101107
assert!(initial_creation > 0);

0 commit comments

Comments
 (0)