55
55
end
56
56
57
57
context "on all systems" do
58
- IP_SHOW_ARGS = [
59
- LinuxAdmin ::Common . cmd ( "ip" ) ,
60
- :params => %w( addr show eth0 )
61
- ]
62
-
63
- IP_ROUTE_ARGS = [
64
- LinuxAdmin ::Common . cmd ( "ip" ) ,
65
- :params => [ '-4' , 'route' ]
66
- ]
67
-
68
- IP6_ROUTE_ARGS = [
69
- LinuxAdmin ::Common . cmd ( "ip" ) ,
70
- :params => [ '-6' , 'route' ]
71
- ]
72
-
73
- IFUP_ARGS = [
74
- LinuxAdmin ::Common . cmd ( "ifup" ) ,
75
- :params => [ "eth0" ]
76
- ]
77
-
78
- IFDOWN_ARGS = [
79
- LinuxAdmin ::Common . cmd ( "ifdown" ) ,
80
- :params => [ "eth0" ]
81
- ]
82
-
83
- IP_ADDR_OUT = <<-IP_OUT
84
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
85
- link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
86
- inet 192.168.1.9/24 brd 192.168.1.255 scope global dynamic eth0
87
- valid_lft 1297sec preferred_lft 1297sec
88
- inet6 fe80::20c:29ff:feed:e8b/64 scope link
89
- valid_lft forever preferred_lft forever
90
- inet6 fd12:3456:789a:1::1/96 scope global
91
- valid_lft forever preferred_lft forever
92
- IP_OUT
93
-
94
- IP6_ADDR_OUT = <<-IP_OUT
95
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
96
- link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
97
- inet6 fe80::20c:29ff:feed:e8b/64 scope link
98
- valid_lft forever preferred_lft forever
99
- inet6 fd12:3456:789a:1::1/96 scope global
100
- valid_lft forever preferred_lft forever
101
- IP_OUT
102
-
103
- IP_ROUTE_OUT = <<-IP_OUT
104
- default via 192.168.1.1 dev eth0 proto static metric 100
105
- 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.9 metric 100
106
- IP_OUT
107
- IP6_ROUTE_OUT = <<-IP_OUT
108
- default via d:e:a:d:b:e:e:f dev eth0 proto static metric 100
109
- fc00:dead:beef:a::/64 dev virbr1 proto kernel metric 256 linkdown pref medium
110
- fe80::/64 dev eth0 proto kernel scope link metric 100
111
- IP_OUT
112
-
113
- IP_NONE_ADDR_OUT = <<-IP_OUT . freeze
114
- 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr1 state DOWN group default qlen 1000
115
- link/ether 52:54:00:ce:b4:f4 brd ff:ff:ff:ff:ff:ff
116
- IP_OUT
58
+ let ( :ip_show_args ) { [ LinuxAdmin ::Common . cmd ( "ip" ) , { :params => %w[ addr show eth0 ] } ] }
59
+ let ( :ip_route_args ) { [ LinuxAdmin ::Common . cmd ( "ip" ) , { :params => [ '-4' , 'route' ] } ] }
60
+ let ( :ip6_route_args ) { [ LinuxAdmin ::Common . cmd ( "ip" ) , { :params => [ '-6' , 'route' ] } ] }
61
+ let ( :ifup_args ) { [ LinuxAdmin ::Common . cmd ( "ifup" ) , { :params => [ "eth0" ] } ] }
62
+ let ( :ifdown_args ) { [ LinuxAdmin ::Common . cmd ( "ifdown" ) , { :params => [ "eth0" ] } ] }
63
+ let ( :ip_addr_out ) do
64
+ <<~IP_OUT
65
+ 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
66
+ link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
67
+ inet 192.168.1.9/24 brd 192.168.1.255 scope global dynamic eth0
68
+ valid_lft 1297sec preferred_lft 1297sec
69
+ inet6 fe80::20c:29ff:feed:e8b/64 scope link
70
+ valid_lft forever preferred_lft forever
71
+ inet6 fd12:3456:789a:1::1/96 scope global
72
+ valid_lft forever preferred_lft forever
73
+ IP_OUT
74
+ end
75
+ let ( :ip6_addr_out ) do
76
+ <<~IP_OUT
77
+ 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
78
+ link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
79
+ inet6 fe80::20c:29ff:feed:e8b/64 scope link
80
+ valid_lft forever preferred_lft forever
81
+ inet6 fd12:3456:789a:1::1/96 scope global
82
+ valid_lft forever preferred_lft forever
83
+ IP_OUT
84
+ end
85
+ let ( :ip_route_out ) do
86
+ <<~IP_OUT
87
+ default via 192.168.1.1 dev eth0 proto static metric 100
88
+ 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.9 metric 100
89
+ IP_OUT
90
+ end
91
+ let ( :ip6_route_out ) do
92
+ <<~IP_OUT
93
+ default via d:e:a:d:b:e:e:f dev eth0 proto static metric 100
94
+ fc00:dead:beef:a::/64 dev virbr1 proto kernel metric 256 linkdown pref medium
95
+ fe80::/64 dev eth0 proto kernel scope link metric 100
96
+ IP_OUT
97
+ end
98
+ let ( :ip_none_addr_out ) do
99
+ <<~IP_OUT
100
+ 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr1 state DOWN group default qlen 1000
101
+ link/ether 52:54:00:ce:b4:f4 brd ff:ff:ff:ff:ff:ff
102
+ IP_OUT
103
+ end
117
104
118
105
subject ( :subj ) do
119
106
allow ( LinuxAdmin ::Distros ) . to receive ( :local ) . and_return ( LinuxAdmin ::Distros . generic )
120
107
described_class . dist_class ( true )
121
108
122
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_return ( result ( IP_ADDR_OUT , 0 ) )
123
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_ROUTE_ARGS ) . and_return ( result ( IP_ROUTE_OUT , 0 ) )
124
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP6_ROUTE_ARGS ) . and_return ( result ( IP6_ROUTE_OUT , 0 ) )
109
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_return ( result ( ip_addr_out , 0 ) )
110
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_route_args ) . and_return ( result ( ip_route_out , 0 ) )
111
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip6_route_args ) . and_return ( result ( ip6_route_out , 0 ) )
125
112
described_class . new ( device_name )
126
113
end
127
114
128
115
subject ( :subj6 ) do
129
116
allow ( LinuxAdmin ::Distros ) . to receive ( :local ) . and_return ( LinuxAdmin ::Distros . generic )
130
117
described_class . dist_class ( true )
131
118
132
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_return ( result ( IP6_ADDR_OUT , 0 ) )
133
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_ROUTE_ARGS ) . and_return ( result ( IP_ROUTE_OUT , 0 ) )
134
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP6_ROUTE_ARGS ) . and_return ( result ( IP6_ROUTE_OUT , 0 ) )
119
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_return ( result ( ip6_addr_out , 0 ) )
120
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_route_args ) . and_return ( result ( ip_route_out , 0 ) )
121
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip6_route_args ) . and_return ( result ( ip6_route_out , 0 ) )
135
122
described_class . new ( device_name )
136
123
end
137
124
138
125
subject ( :subj_no_net ) do
139
126
allow ( LinuxAdmin ::Distros ) . to receive ( :local ) . and_return ( LinuxAdmin ::Distros . generic )
140
127
described_class . dist_class ( true )
141
128
142
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_return ( result ( IP_NONE_ADDR_OUT , 0 ) )
143
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_ROUTE_ARGS ) . and_return ( result ( IP_ROUTE_OUT , 0 ) )
144
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP6_ROUTE_ARGS ) . and_return ( result ( IP6_ROUTE_OUT , 0 ) )
129
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_return ( result ( ip_none_addr_out , 0 ) )
130
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_route_args ) . and_return ( result ( ip_route_out , 0 ) )
131
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip6_route_args ) . and_return ( result ( ip6_route_out , 0 ) )
145
132
described_class . new ( device_name )
146
133
end
147
134
@@ -153,24 +140,24 @@ def result(output, exit_status)
153
140
it "returns false when ip addr show fails" do
154
141
subj
155
142
awesome_error = AwesomeSpawn ::CommandResultError . new ( "" , nil )
156
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_raise ( awesome_error )
143
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_raise ( awesome_error )
157
144
expect ( subj . reload ) . to eq ( false )
158
145
end
159
146
160
147
it "raises when ip route fails" do
161
148
subj
162
149
awesome_error = AwesomeSpawn ::CommandResultError . new ( "" , nil )
163
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_return ( result ( IP_ADDR_OUT , 0 ) )
164
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_ROUTE_ARGS ) . and_raise ( awesome_error )
165
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP6_ROUTE_ARGS ) . and_raise ( awesome_error )
150
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_return ( result ( ip_addr_out , 0 ) )
151
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_route_args ) . and_raise ( awesome_error )
152
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip6_route_args ) . and_raise ( awesome_error )
166
153
expect { subj . reload } . to raise_error ( LinuxAdmin ::NetworkInterfaceError )
167
154
end
168
155
169
156
it "doesn't blow up when given only ipv6 addresses" do
170
157
subj6
171
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_SHOW_ARGS ) . and_return ( result ( IP6_ADDR_OUT , 0 ) )
172
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP_ROUTE_ARGS ) . and_return ( result ( IP_ROUTE_OUT , 0 ) )
173
- allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *IP6_ROUTE_ARGS ) . and_return ( result ( IP6_ROUTE_OUT , 0 ) )
158
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_show_args ) . and_return ( result ( ip6_addr_out , 0 ) )
159
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip_route_args ) . and_return ( result ( ip_route_out , 0 ) )
160
+ allow ( AwesomeSpawn ) . to receive ( :run! ) . with ( *ip6_route_args ) . and_return ( result ( ip6_route_out , 0 ) )
174
161
expect { subj . reload } . to_not raise_error
175
162
end
176
163
end
@@ -259,24 +246,24 @@ def result(output, exit_status)
259
246
260
247
describe "#start" do
261
248
it "returns true on success" do
262
- expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *IFUP_ARGS ) . and_return ( result ( "" , 0 ) )
249
+ expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *ifup_args ) . and_return ( result ( "" , 0 ) )
263
250
expect ( subj . start ) . to be true
264
251
end
265
252
266
253
it "returns false on failure" do
267
- expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *IFUP_ARGS ) . and_return ( result ( "" , 1 ) )
254
+ expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *ifup_args ) . and_return ( result ( "" , 1 ) )
268
255
expect ( subj . start ) . to be false
269
256
end
270
257
end
271
258
272
259
describe "#stop" do
273
260
it "returns true on success" do
274
- expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *IFDOWN_ARGS ) . and_return ( result ( "" , 0 ) )
261
+ expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *ifdown_args ) . and_return ( result ( "" , 0 ) )
275
262
expect ( subj . stop ) . to be true
276
263
end
277
264
278
265
it "returns false on failure" do
279
- expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *IFDOWN_ARGS ) . and_return ( result ( "" , 1 ) )
266
+ expect ( AwesomeSpawn ) . to receive ( :run ) . with ( *ifdown_args ) . and_return ( result ( "" , 1 ) )
280
267
expect ( subj . stop ) . to be false
281
268
end
282
269
end
0 commit comments