Skip to content

Commit 0869b2f

Browse files
committed
Shorten tests so they are less repetitive
1 parent 93d6750 commit 0869b2f

7 files changed

Lines changed: 166 additions & 245 deletions

File tree

src/ip/address/tests/address.rs

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -58,63 +58,43 @@ where
5858
#[test]
5959
fn test_address_show() {
6060
with_netns(|ns| {
61-
let dummy_name = "atest-dummy1";
61+
let dummy_name = "test-dummy";
6262

6363
with_dummy_iface(ns, dummy_name, || {
64-
let expected_output =
65-
ns.exec_cmd(&["ip", "address", "show", dummy_name]);
66-
let our_output =
67-
ns.ip_rs_exec_cmd(&["address", "show", dummy_name]);
68-
69-
pretty_assertions::assert_eq!(expected_output, our_output);
64+
ns.assert_eq_output(&["address", "show", dummy_name]);
7065
});
7166
});
7267
}
7368

7469
#[test]
7570
fn test_address_detailed_show() {
7671
with_netns(|ns| {
77-
let dummy_name = "atest-dummy2";
72+
let dummy_name = "test-dummy";
7873

7974
with_dummy_iface(ns, dummy_name, || {
80-
let expected_output =
81-
ns.exec_cmd(&["ip", "-d", "address", "show", dummy_name]);
82-
let our_output =
83-
ns.ip_rs_exec_cmd(&["-d", "address", "show", dummy_name]);
84-
85-
pretty_assertions::assert_eq!(expected_output, our_output);
75+
ns.assert_eq_output(&["-d", "address", "show", dummy_name]);
8676
});
8777
});
8878
}
8979

9080
#[test]
9181
fn test_address_show_json() {
9282
with_netns(|ns| {
93-
let dummy_name = "atest-dummy3";
83+
let dummy_name = "test-dummy";
9484

9585
with_dummy_iface(ns, dummy_name, || {
96-
let expected_output =
97-
ns.exec_cmd(&["ip", "-j", "address", "show", dummy_name]);
98-
let our_output =
99-
ns.ip_rs_exec_cmd(&["-j", "address", "show", dummy_name]);
100-
101-
pretty_assertions::assert_eq!(expected_output, our_output);
86+
ns.assert_eq_output(&["-j", "address", "show", dummy_name]);
10287
});
10388
});
10489
}
10590

10691
#[test]
10792
fn test_address_detailed_show_json() {
10893
with_netns(|ns| {
109-
let dummy_name = "atest-dummy4";
94+
let dummy_name = "test-dummy";
11095

11196
with_dummy_iface(ns, dummy_name, || {
112-
let expected_output =
113-
ns.exec_cmd(&["ip", "-d", "-j", "address", "show", dummy_name]);
114-
let our_output =
115-
ns.ip_rs_exec_cmd(&["-d", "-j", "address", "show", dummy_name]);
116-
117-
pretty_assertions::assert_eq!(expected_output, our_output);
97+
ns.assert_eq_output(&["-d", "-j", "address", "show", dummy_name]);
11898
});
11999
});
120100
}

src/ip/link/tests/bond.rs

Lines changed: 27 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,82 +2,51 @@
22

33
use crate::tests::{NetnsGuard, with_netns};
44

5+
const BOND_NAME: &str = "test-bond";
6+
const DUMMY_NAME: &str = "test-bnd-dummy";
7+
58
#[test]
69
fn test_link_detailed_show_bond() {
7-
with_netns(|ns| {
8-
let bond_name = "test-bnd0";
9-
let dummy_name = "test-bnd-dummy0";
10-
11-
with_bond_iface(ns, bond_name, dummy_name, || {
12-
let expected_output =
13-
ns.exec_cmd(&["ip", "-d", "link", "show", bond_name]);
14-
let our_output =
15-
ns.ip_rs_exec_cmd(&["-d", "link", "show", bond_name]);
16-
pretty_assertions::assert_eq!(&expected_output, &our_output);
17-
});
18-
})
10+
with_bond_iface(|ns| {
11+
ns.assert_eq_output(&["-d", "link", "show", BOND_NAME]);
12+
});
1913
}
2014

2115
#[test]
2216
fn test_link_detailed_show_json_bond() {
23-
with_netns(|ns| {
24-
let bond_name = "test-bond1";
25-
let dummy_name = "test-bnd-dummy1";
26-
with_bond_iface(ns, bond_name, dummy_name, || {
27-
let expected_output =
28-
ns.exec_cmd(&["ip", "-d", "-j", "link", "show", bond_name]);
29-
let our_output =
30-
ns.ip_rs_exec_cmd(&["-d", "-j", "link", "show", bond_name]);
31-
pretty_assertions::assert_eq!(&expected_output, &our_output);
32-
})
33-
})
17+
with_bond_iface(|ns| {
18+
ns.assert_eq_output(&["-d", "-j", "link", "show", BOND_NAME]);
19+
});
3420
}
3521

3622
#[test]
3723
fn test_link_detailed_show_bond_port() {
38-
with_netns(|ns| {
39-
let bond_name = "test-bond2";
40-
let dummy_name = "test-bnd-dummy2";
41-
42-
with_bond_iface(ns, bond_name, dummy_name, || {
43-
let expected_output =
44-
ns.exec_cmd(&["ip", "-d", "link", "show", dummy_name]);
45-
let our_output =
46-
ns.ip_rs_exec_cmd(&["-d", "link", "show", dummy_name]);
47-
pretty_assertions::assert_eq!(&expected_output, &our_output);
48-
})
49-
})
24+
with_bond_iface(|ns| {
25+
ns.assert_eq_output(&["-d", "link", "show", DUMMY_NAME]);
26+
});
5027
}
5128

5229
#[test]
5330
fn test_link_detailed_show_json_bond_port() {
54-
with_netns(|ns| {
55-
let bond_name = "test-bond3";
56-
let dummy_name = "test-bnd-dummy3";
57-
with_bond_iface(ns, bond_name, dummy_name, || {
58-
let expected_output =
59-
ns.exec_cmd(&["ip", "-d", "-j", "link", "show", dummy_name]);
60-
let our_output =
61-
ns.ip_rs_exec_cmd(&["-d", "-j", "link", "show", dummy_name]);
62-
pretty_assertions::assert_eq!(&expected_output, &our_output);
63-
})
31+
with_bond_iface(|ns| {
32+
ns.assert_eq_output(&["-d", "-j", "link", "show", DUMMY_NAME]);
6433
})
6534
}
6635

67-
fn with_bond_iface<T>(
68-
ns: &NetnsGuard,
69-
bond_name: &str,
70-
dummy_name: &str,
71-
test: T,
72-
) where
73-
T: FnOnce(),
36+
fn with_bond_iface<T>(test: T)
37+
where
38+
T: FnOnce(&NetnsGuard),
7439
{
75-
ns.exec_cmd(&["ip", "link", "add", dummy_name, "type", "dummy"]);
76-
ns.exec_cmd(&["ip", "link", "add", bond_name, "type", "bond"]);
77-
ns.exec_cmd(&["ip", "link", "set", "dev", dummy_name, "master", bond_name]);
40+
with_netns(|ns| {
41+
ns.exec_cmd(&["ip", "link", "add", DUMMY_NAME, "type", "dummy"]);
42+
ns.exec_cmd(&["ip", "link", "add", BOND_NAME, "type", "bond"]);
43+
ns.exec_cmd(&[
44+
"ip", "link", "set", "dev", DUMMY_NAME, "master", BOND_NAME,
45+
]);
7846

79-
ns.exec_cmd(&["ip", "link", "set", dummy_name, "up"]);
80-
ns.exec_cmd(&["ip", "link", "set", bond_name, "up"]);
47+
ns.exec_cmd(&["ip", "link", "set", DUMMY_NAME, "up"]);
48+
ns.exec_cmd(&["ip", "link", "set", BOND_NAME, "up"]);
8149

82-
test();
50+
test(ns);
51+
})
8352
}

src/ip/link/tests/bridge.rs

Lines changed: 61 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
use crate::tests::{NetnsGuard, with_netns};
44

5-
fn normalize_timers(output: &str) -> String {
5+
const BRIDGE_NAME: &str = "test-br";
6+
const DUMMY_NAME: &str = "test-dummy";
7+
8+
fn normalize_timers(output: String) -> String {
69
let timer_names = [
710
"hello_timer",
811
"tcn_timer",
@@ -13,7 +16,7 @@ fn normalize_timers(output: &str) -> String {
1316
"forward_delay_timer",
1417
];
1518

16-
let mut result = output.to_string();
19+
let mut result = output;
1720
for timer_name in timer_names {
1821
let mut new_result = String::new();
1922
let mut remaining = result.as_str();
@@ -44,7 +47,7 @@ fn normalize_timers(output: &str) -> String {
4447
result
4548
}
4649

47-
fn normalize_timers_json(output: &str) -> String {
50+
fn normalize_timers_json(output: String) -> String {
4851
let timer_names = [
4952
"hello_timer",
5053
"tcn_timer",
@@ -55,7 +58,7 @@ fn normalize_timers_json(output: &str) -> String {
5558
"forward_delay_timer",
5659
];
5760

58-
let mut result = output.to_string();
61+
let mut result = output;
5962
for timer_name in timer_names {
6063
let search_pattern = format!("\"{}\":", timer_name);
6164
let mut new_result = String::new();
@@ -84,101 +87,73 @@ fn normalize_timers_json(output: &str) -> String {
8487

8588
#[test]
8689
fn test_link_detailed_show_bridge() {
87-
with_netns(|ns| {
88-
let br_name = "test-br0";
89-
let dummy_name = "test-dummy0";
90-
91-
with_bridge_iface(ns, br_name, dummy_name, || {
92-
let expected_output =
93-
ns.exec_cmd(&["ip", "-d", "link", "show", br_name]);
94-
let our_output =
95-
ns.ip_rs_exec_cmd(&["-d", "link", "show", br_name]);
96-
pretty_assertions::assert_eq!(
97-
normalize_timers(&expected_output),
98-
normalize_timers(&our_output)
99-
);
100-
})
101-
})
90+
with_bridge_iface(|ns| {
91+
ns.assert_eq_output_map(
92+
&["-d", "link", "show", BRIDGE_NAME],
93+
normalize_timers,
94+
);
95+
});
10296
}
10397

10498
#[test]
10599
fn test_link_detailed_show_json_bridge() {
106-
with_netns(|ns| {
107-
let br_name = "test-br1";
108-
let dummy_name = "test-dummy1";
109-
with_bridge_iface(ns, br_name, dummy_name, || {
110-
let expected_output =
111-
ns.exec_cmd(&["ip", "-d", "-j", "link", "show", br_name]);
112-
let our_output =
113-
ns.ip_rs_exec_cmd(&["-d", "-j", "link", "show", br_name]);
114-
pretty_assertions::assert_eq!(
115-
normalize_timers_json(&expected_output),
116-
normalize_timers_json(&our_output)
117-
);
118-
})
119-
})
100+
with_bridge_iface(|ns| {
101+
ns.assert_eq_output_map(
102+
&["-d", "-j", "link", "show", BRIDGE_NAME],
103+
normalize_timers_json,
104+
);
105+
});
120106
}
121107

122108
#[test]
123109
fn test_link_detailed_show_bridge_port() {
124-
with_netns(|ns| {
125-
let br_name = "test-br2";
126-
let dummy_name = "test-dummy2";
127-
128-
with_bridge_iface(ns, br_name, dummy_name, || {
129-
let expected_output =
130-
ns.exec_cmd(&["ip", "-d", "link", "show", dummy_name]);
131-
let our_output =
132-
ns.ip_rs_exec_cmd(&["-d", "link", "show", dummy_name]);
133-
pretty_assertions::assert_eq!(
134-
normalize_timers(&expected_output),
135-
normalize_timers(&our_output)
136-
);
137-
})
138-
})
110+
with_bridge_iface(|ns| {
111+
ns.assert_eq_output_map(
112+
&["-d", "link", "show", DUMMY_NAME],
113+
normalize_timers,
114+
);
115+
});
139116
}
140117

141118
#[test]
142119
fn test_link_detailed_show_json_bridge_port() {
143-
with_netns(|ns| {
144-
let br_name = "test-br3";
145-
let dummy_name = "test-dummy3";
146-
with_bridge_iface(ns, br_name, dummy_name, || {
147-
let expected_output =
148-
ns.exec_cmd(&["ip", "-d", "-j", "link", "show", dummy_name]);
149-
let our_output =
150-
ns.ip_rs_exec_cmd(&["-d", "-j", "link", "show", dummy_name]);
151-
pretty_assertions::assert_eq!(
152-
normalize_timers_json(&expected_output),
153-
normalize_timers_json(&our_output)
154-
);
155-
})
156-
})
120+
with_bridge_iface(|ns| {
121+
ns.assert_eq_output_map(
122+
&["-d", "-j", "link", "show", DUMMY_NAME],
123+
normalize_timers_json,
124+
);
125+
});
157126
}
158127

159-
fn with_bridge_iface<T>(
160-
ns: &NetnsGuard,
161-
br_name: &str,
162-
dummy_name: &str,
163-
test: T,
164-
) where
165-
T: FnOnce(),
128+
fn with_bridge_iface<T>(test: T)
129+
where
130+
T: FnOnce(&NetnsGuard),
166131
{
167-
ns.exec_cmd(&["ip", "link", "add", dummy_name, "type", "dummy"]);
168-
ns.exec_cmd(&[
169-
"ip",
170-
"link",
171-
"add",
172-
br_name,
173-
"type",
174-
"bridge",
175-
"stp_state",
176-
"0",
177-
]);
178-
ns.exec_cmd(&["ip", "link", "set", "dev", dummy_name, "master", br_name]);
179-
180-
ns.exec_cmd(&["ip", "link", "set", dummy_name, "up"]);
181-
ns.exec_cmd(&["ip", "link", "set", br_name, "up"]);
182-
183-
test();
132+
with_netns(|ns| {
133+
ns.exec_cmd(&["ip", "link", "add", DUMMY_NAME, "type", "dummy"]);
134+
ns.exec_cmd(&[
135+
"ip",
136+
"link",
137+
"add",
138+
BRIDGE_NAME,
139+
"type",
140+
"bridge",
141+
"stp_state",
142+
"0",
143+
]);
144+
ns.exec_cmd(&[
145+
"ip",
146+
"link",
147+
"set",
148+
"dev",
149+
DUMMY_NAME,
150+
"master",
151+
BRIDGE_NAME,
152+
]);
153+
154+
ns.exec_cmd(&["ip", "link", "set", DUMMY_NAME, "up"]);
155+
ns.exec_cmd(&["ip", "link", "set", BRIDGE_NAME, "up"]);
156+
157+
test(ns);
158+
});
184159
}

0 commit comments

Comments
 (0)