cisco_node_utils 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -0
- data/README.md +14 -0
- data/ext/mkrf_conf.rb +1 -1
- data/lib/cisco_node_utils/ace.rb +142 -7
- data/lib/cisco_node_utils/banner.rb +63 -0
- data/lib/cisco_node_utils/bridge_domain.rb +1 -1
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +1 -1
- data/lib/cisco_node_utils/client/utils.rb +20 -10
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/banner.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +2 -2
- data/lib/cisco_node_utils/cmd_ref/hostname.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +20 -12
- data/lib/cisco_node_utils/cmd_ref/interface_hsrp_group.yaml +3 -3
- data/lib/cisco_node_utils/cmd_ref/ip_multicast.yaml +6 -2
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +4 -1
- data/lib/cisco_node_utils/cmd_ref/syslog_facility.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +3 -3
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +16 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +2 -2
- data/lib/cisco_node_utils/environment.rb +8 -1
- data/lib/cisco_node_utils/hostname.rb +62 -0
- data/lib/cisco_node_utils/interface.rb +59 -2
- data/lib/cisco_node_utils/interface_DEPRECATED.rb +5 -0
- data/lib/cisco_node_utils/interface_hsrp_group.rb +17 -6
- data/lib/cisco_node_utils/ip_multicast.rb +13 -9
- data/lib/cisco_node_utils/node.rb +4 -1
- data/lib/cisco_node_utils/syslog_facility.rb +64 -0
- data/lib/cisco_node_utils/syslog_server.rb +18 -13
- data/lib/cisco_node_utils/syslog_settings.rb +43 -1
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +1 -1
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +21 -8
- data/spec/environment_spec.rb +107 -0
- data/tests/ciscotest.rb +8 -1
- data/tests/test_ace.rb +60 -3
- data/tests/test_banner.rb +85 -0
- data/tests/test_bgp_af.rb +1 -1
- data/tests/test_hostname.rb +64 -0
- data/tests/test_interface.rb +22 -1
- data/tests/test_interface_hsrp_group.rb +12 -24
- data/tests/test_ip_multicast.rb +32 -21
- data/tests/test_nxapi.rb +8 -4
- data/tests/test_syslog_facility.rb +80 -0
- data/tests/test_syslog_server.rb +3 -2
- data/tests/test_syslog_settings.rb +16 -1
- data/tests/yum_package.yaml +5 -0
- metadata +12 -3
data/tests/ciscotest.rb
CHANGED
@@ -223,8 +223,15 @@ class CiscoTestCase < TestCase
|
|
223
223
|
end
|
224
224
|
|
225
225
|
def skip_legacy_defect?(pattern, msg)
|
226
|
+
if pattern.is_a?(String)
|
227
|
+
pattern = [pattern]
|
228
|
+
elsif !pattern.is_a?(Array)
|
229
|
+
fail 'Argument: pattern must be a String or Array object'
|
230
|
+
end
|
226
231
|
msg = "Defect in legacy image: [#{msg}]"
|
227
|
-
|
232
|
+
pattern.each do |pat|
|
233
|
+
skip(msg) if Utils.image_version?(Regexp.new(pat))
|
234
|
+
end
|
228
235
|
end
|
229
236
|
|
230
237
|
def step_unless_legacy_defect(pattern, msg)
|
data/tests/test_ace.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2015-
|
1
|
+
# Copyright (c) 2015-2018 Cisco and/or its affiliates.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -57,7 +57,7 @@ class TestAce < CiscoTestCase
|
|
57
57
|
end
|
58
58
|
rescue CliError => e
|
59
59
|
skip('This property is not supported on this platform') if
|
60
|
-
e.message[/(Invalid parameter detected|Invalid command)/]
|
60
|
+
e.message[/(Invalid parameter detected|Invalid command|Invalid number)/]
|
61
61
|
flunk(e.message)
|
62
62
|
end
|
63
63
|
|
@@ -83,7 +83,7 @@ class TestAce < CiscoTestCase
|
|
83
83
|
def test_proto
|
84
84
|
%w(ipv4 ipv6).each do |afi|
|
85
85
|
# Sampling of proto's
|
86
|
-
%w(ip tcp udp).each do |val|
|
86
|
+
%w(ip tcp udp icmp).each do |val|
|
87
87
|
val = 'ipv6' if val[/ip/] && afi[/ipv6/]
|
88
88
|
a = ace_helper(afi, proto: val)
|
89
89
|
assert_equal(val, a.proto)
|
@@ -149,6 +149,15 @@ class TestAce < CiscoTestCase
|
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
+
def test_vlan
|
153
|
+
%w(ipv4 ipv6).each do |afi|
|
154
|
+
%w(10 100).each do |val|
|
155
|
+
a = ace_helper(afi, proto: 'icmp', vlan: val)
|
156
|
+
assert_equal(val, a.vlan)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
152
161
|
def test_tcp_flags
|
153
162
|
%w(ipv4 ipv6).each do |afi|
|
154
163
|
%w(ack fin urg syn psh rst) + [
|
@@ -187,6 +196,34 @@ class TestAce < CiscoTestCase
|
|
187
196
|
end
|
188
197
|
end
|
189
198
|
|
199
|
+
def test_log_proto_option
|
200
|
+
%w(ipv4 ipv6).each do |afi|
|
201
|
+
refute(ace_helper(afi).log)
|
202
|
+
a = ace_helper(afi, proto: 'icmp', proto_option: 'redirect', log: true)
|
203
|
+
assert(a.log)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_proto_option
|
208
|
+
%w(ipv4 ipv6).each do |afi|
|
209
|
+
refute(ace_helper(afi).log)
|
210
|
+
a = ace_helper(afi, proto: 'icmp', proto_option: 'time-exceeded')
|
211
|
+
assert_equal(a.proto_option, 'time-exceeded')
|
212
|
+
a = ace_helper(afi, proto: 'icmp', dscp: 'af11', proto_option: 'echo-reply')
|
213
|
+
assert_equal(a.proto_option, 'echo-reply')
|
214
|
+
assert_equal(a.dscp, 'af11')
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_redirect_proto_option
|
219
|
+
afi = 'ipv4'
|
220
|
+
val = 'port-channel1,port-channel2'
|
221
|
+
a = ace_helper(afi, proto: 'icmp', proto_option: 'redirect',
|
222
|
+
redirect: val, log: true, set_erspan_dscp: '3', set_erspan_gre_proto: '33')
|
223
|
+
assert_equal(val, a.redirect)
|
224
|
+
assert_equal('redirect', a.proto_option)
|
225
|
+
end
|
226
|
+
|
190
227
|
def test_precedence
|
191
228
|
afi = 'ipv4'
|
192
229
|
%w(critical flash flash-override immediate internet network
|
@@ -244,4 +281,24 @@ class TestAce < CiscoTestCase
|
|
244
281
|
'CSCuy47463: access-list ttl does not nvgen') if a.ttl.nil?
|
245
282
|
assert_equal(val, a.ttl)
|
246
283
|
end
|
284
|
+
|
285
|
+
def test_set_erspan_dscp
|
286
|
+
afi = 'ipv4'
|
287
|
+
val = 'port-channel1,port-channel2'
|
288
|
+
a = ace_helper(afi, proto: 'icmp', proto_option: 'redirect',
|
289
|
+
redirect: val, log: true, set_erspan_dscp: '3', set_erspan_gre_proto: '33')
|
290
|
+
assert_equal('redirect', a.proto_option)
|
291
|
+
assert_equal(val, a.redirect)
|
292
|
+
assert_equal('3', a.set_erspan_dscp)
|
293
|
+
end
|
294
|
+
|
295
|
+
def test_set_erspan_gre_proto
|
296
|
+
afi = 'ipv4'
|
297
|
+
val = 'port-channel1,port-channel2'
|
298
|
+
a = ace_helper(afi, proto: 'icmp', proto_option: 'redirect',
|
299
|
+
redirect: val, log: true, set_erspan_gre_proto: '33')
|
300
|
+
assert_equal('redirect', a.proto_option)
|
301
|
+
assert_equal(val, a.redirect)
|
302
|
+
assert_equal('33', a.set_erspan_gre_proto)
|
303
|
+
end
|
247
304
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#
|
2
|
+
# Minitest for Banner class
|
3
|
+
#
|
4
|
+
# Copyright (c) 2014-2018 Cisco and/or its affiliates.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require_relative 'ciscotest'
|
19
|
+
require_relative '../lib/cisco_node_utils/banner'
|
20
|
+
|
21
|
+
# TestBanner - Minitest for Banner node utility.
|
22
|
+
class TestBanner < CiscoTestCase
|
23
|
+
def setup
|
24
|
+
# setup runs at the beginning of each test
|
25
|
+
super
|
26
|
+
no_motd
|
27
|
+
end
|
28
|
+
|
29
|
+
def teardown
|
30
|
+
# teardown runs at the end of each test
|
31
|
+
no_motd
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
def no_motd
|
36
|
+
# Turn the feature off for a clean test.
|
37
|
+
config('no banner motd')
|
38
|
+
end
|
39
|
+
|
40
|
+
# TESTS
|
41
|
+
|
42
|
+
def test_single_motd
|
43
|
+
id = 'default'
|
44
|
+
|
45
|
+
banner = Cisco::Banner.new(id)
|
46
|
+
assert_includes(Cisco::Banner.banners, id)
|
47
|
+
assert_equal(Cisco::Banner.banners[id], banner)
|
48
|
+
|
49
|
+
assert_equal(banner.default_motd, Cisco::Banner.banners['default'].motd)
|
50
|
+
assert_equal(banner.default_motd, banner.motd)
|
51
|
+
|
52
|
+
banner.motd = 'Test banner!'
|
53
|
+
assert_equal(Cisco::Banner.banners['default'].motd,
|
54
|
+
'Test banner!')
|
55
|
+
assert_equal(Cisco::Banner.banners['default'].motd,
|
56
|
+
banner.motd)
|
57
|
+
|
58
|
+
banner.motd = nil
|
59
|
+
assert_equal(banner.default_motd, Cisco::Banner.banners['default'].motd)
|
60
|
+
assert_equal(banner.default_motd, banner.motd)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_multiline_motd
|
64
|
+
skip_versions = ['7.0.3.I[2-6]', '7.0.3.I7.[1-3]', '7.3', '8.[1-3]']
|
65
|
+
skip_legacy_defect?(skip_versions, 'multiline banner configuration using nxapi not supported')
|
66
|
+
id = 'default'
|
67
|
+
|
68
|
+
banner = Cisco::Banner.new(id)
|
69
|
+
assert_includes(Cisco::Banner.banners, id)
|
70
|
+
assert_equal(Cisco::Banner.banners[id], banner)
|
71
|
+
|
72
|
+
assert_equal(banner.default_motd, Cisco::Banner.banners['default'].motd)
|
73
|
+
assert_equal(banner.default_motd, banner.motd)
|
74
|
+
|
75
|
+
banner.motd = 'This is\na sweet\n\nmultiline\nbanner!\n'
|
76
|
+
assert_equal(Cisco::Banner.banners['default'].motd,
|
77
|
+
"This is\na sweet\n\nmultiline\nbanner!\n")
|
78
|
+
assert_equal(Cisco::Banner.banners['default'].motd,
|
79
|
+
banner.motd)
|
80
|
+
|
81
|
+
banner.motd = nil
|
82
|
+
assert_equal(banner.default_motd, Cisco::Banner.banners['default'].motd)
|
83
|
+
assert_equal(banner.default_motd, banner.motd)
|
84
|
+
end
|
85
|
+
end
|
data/tests/test_bgp_af.rb
CHANGED
@@ -175,7 +175,7 @@ class TestBgpAF < CiscoTestCase
|
|
175
175
|
expect = :runtime if test == :additional_paths_receive && Platform.image_version[/8.0|8.1/]
|
176
176
|
when /I5.2|I5.3|I6/
|
177
177
|
expect = :success if test == :maximum_paths || test == :maximum_paths_ibgp
|
178
|
-
when /I7/
|
178
|
+
when /I7|9\.2/
|
179
179
|
expect = :success if test == :maximum_paths ||
|
180
180
|
test == :maximum_paths_ibgp ||
|
181
181
|
test == :additional_paths_send ||
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#
|
2
|
+
# Minitest for HostName class
|
3
|
+
#
|
4
|
+
# Copyright (c) 2014-2018 Cisco and/or its affiliates.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require_relative 'ciscotest'
|
19
|
+
require_relative '../lib/cisco_node_utils/hostname'
|
20
|
+
|
21
|
+
# TestHostname - Minitest for SyslogSetting node utility.
|
22
|
+
class TestHostName < CiscoTestCase
|
23
|
+
def setup
|
24
|
+
# setup runs at the beginning of each test
|
25
|
+
super
|
26
|
+
hostname_setup
|
27
|
+
end
|
28
|
+
|
29
|
+
def teardown
|
30
|
+
# teardown runs at the end of each test
|
31
|
+
hostname_teardown
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
@current_hostname = ''
|
36
|
+
|
37
|
+
def hostname_setup
|
38
|
+
hostname_output = Cisco::Client.filter_cli(
|
39
|
+
cli_output: config('show running-config | include ^hostname'),
|
40
|
+
value: /hostname (.*)/)
|
41
|
+
@current_hostname = hostname_output.first unless hostname_output.nil?
|
42
|
+
# Turn the feature off for a clean test.
|
43
|
+
config('no hostname')
|
44
|
+
end
|
45
|
+
|
46
|
+
def hostname_teardown
|
47
|
+
if @current_hostname != ''
|
48
|
+
config("hostname #{@current_hostname}")
|
49
|
+
else
|
50
|
+
config('no hostname')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# TESTS
|
55
|
+
|
56
|
+
def test_hostname_name
|
57
|
+
hostname_setting = Cisco::HostName.new('testhost')
|
58
|
+
assert_equal(Cisco::HostName.hostname['testhost'], hostname_setting)
|
59
|
+
hostname_setting = Cisco::HostName.new('testhost2')
|
60
|
+
assert_equal(Cisco::HostName.hostname['testhost2'], hostname_setting)
|
61
|
+
hostname_setting.send('hostname=', nil)
|
62
|
+
assert_nil(Cisco::HostName.hostname['testhost2'])
|
63
|
+
end
|
64
|
+
end
|
data/tests/test_interface.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2013-
|
1
|
+
# Copyright (c) 2013-2018 Cisco and/or its affiliates.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1250,6 +1250,27 @@ class TestInterface < CiscoTestCase
|
|
1250
1250
|
'Error: ip redirects default get value mismatch')
|
1251
1251
|
end
|
1252
1252
|
|
1253
|
+
def test_ipv6_redirects
|
1254
|
+
interface = create_interface
|
1255
|
+
interface.switchport_mode = :disabled if platform == :nexus
|
1256
|
+
|
1257
|
+
# check default value
|
1258
|
+
assert_equal(interface.default_ipv6_redirects, interface.ipv6_redirects,
|
1259
|
+
'Error: ipv6 redirects default get value mismatch')
|
1260
|
+
|
1261
|
+
# set with value false
|
1262
|
+
interface.ipv6_redirects = false
|
1263
|
+
assert_equal(interface.ipv6_redirects, false)
|
1264
|
+
|
1265
|
+
# set with value true
|
1266
|
+
interface.ipv6_redirects = true
|
1267
|
+
assert_equal(interface.ipv6_redirects, true)
|
1268
|
+
|
1269
|
+
# get default and set
|
1270
|
+
interface.ipv6_redirects = interface.default_ipv6_redirects
|
1271
|
+
assert_equal(interface.ipv6_redirects, interface.default_ipv6_redirects)
|
1272
|
+
end
|
1273
|
+
|
1253
1274
|
def config_from_hash(inttype_h)
|
1254
1275
|
inttype_h.each do |k, v|
|
1255
1276
|
config('feature interface-vlan') if (/^Vlan\d./).match(k.to_s)
|
@@ -109,8 +109,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
109
109
|
def test_auth_type_clear
|
110
110
|
skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
|
111
111
|
ihg = create_interface_hsrp_group_ipv4
|
112
|
-
|
113
|
-
ihg.authentication_string)
|
112
|
+
assert_nil(ihg.authentication_string)
|
114
113
|
attrs = {}
|
115
114
|
attrs[:authentication_auth_type] = 'cleartext'
|
116
115
|
attrs[:authentication_string] = 'Test'
|
@@ -119,8 +118,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
119
118
|
assert_equal('Test', ihg.authentication_string)
|
120
119
|
attrs[:authentication_string] = ihg.default_authentication_string
|
121
120
|
ihg.authentication_set(attrs)
|
122
|
-
|
123
|
-
ihg.authentication_string)
|
121
|
+
assert_nil(ihg.authentication_string)
|
124
122
|
|
125
123
|
ihg = create_interface_hsrp_group_ipv6
|
126
124
|
attrs[:authentication_auth_type] = 'cleartext'
|
@@ -130,8 +128,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
130
128
|
assert_equal('Test', ihg.authentication_string)
|
131
129
|
attrs[:authentication_string] = ihg.default_authentication_string
|
132
130
|
ihg.authentication_set(attrs)
|
133
|
-
|
134
|
-
ihg.authentication_string)
|
131
|
+
assert_nil(ihg.authentication_string)
|
135
132
|
end
|
136
133
|
|
137
134
|
def test_auth_type_md5
|
@@ -147,8 +144,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
147
144
|
assert_equal('MyMD5Password', ihg.authentication_string)
|
148
145
|
attrs[:authentication_string] = ihg.default_authentication_string
|
149
146
|
ihg.authentication_set(attrs)
|
150
|
-
|
151
|
-
ihg.authentication_string)
|
147
|
+
assert_nil(ihg.authentication_string)
|
152
148
|
ihg = create_interface_hsrp_group_ipv6
|
153
149
|
attrs[:authentication_string] = 'MyMD5Password'
|
154
150
|
ihg.authentication_set(attrs)
|
@@ -157,8 +153,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
157
153
|
assert_equal('MyMD5Password', ihg.authentication_string)
|
158
154
|
attrs[:authentication_string] = ihg.default_authentication_string
|
159
155
|
ihg.authentication_set(attrs)
|
160
|
-
|
161
|
-
ihg.authentication_string)
|
156
|
+
assert_nil(ihg.authentication_string)
|
162
157
|
end
|
163
158
|
|
164
159
|
def test_auth_key_string_enc_0
|
@@ -178,8 +173,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
178
173
|
assert_equal('7', ihg.authentication_string)
|
179
174
|
attrs[:authentication_string] = ihg.default_authentication_string
|
180
175
|
ihg.authentication_set(attrs)
|
181
|
-
|
182
|
-
ihg.authentication_string)
|
176
|
+
assert_nil(ihg.authentication_string)
|
183
177
|
ihg = create_interface_hsrp_group_ipv6
|
184
178
|
attrs[:authentication_string] = '7'
|
185
179
|
ihg.authentication_set(attrs)
|
@@ -189,8 +183,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
189
183
|
assert_equal('7', ihg.authentication_string)
|
190
184
|
attrs[:authentication_string] = ihg.default_authentication_string
|
191
185
|
ihg.authentication_set(attrs)
|
192
|
-
|
193
|
-
ihg.authentication_string)
|
186
|
+
assert_nil(ihg.authentication_string)
|
194
187
|
end
|
195
188
|
|
196
189
|
def test_auth_key_string_enc_7
|
@@ -217,8 +210,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
217
210
|
assert_equal('12345678901234567890', ihg.authentication_string)
|
218
211
|
attrs[:authentication_string] = ihg.default_authentication_string
|
219
212
|
ihg.authentication_set(attrs)
|
220
|
-
|
221
|
-
ihg.authentication_string)
|
213
|
+
assert_nil(ihg.authentication_string)
|
222
214
|
end
|
223
215
|
|
224
216
|
def test_auth_key_string_enc_7_compat_timeout_ipv4
|
@@ -250,8 +242,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
250
242
|
assert_equal(false, ihg.authentication_compatibility)
|
251
243
|
attrs[:authentication_string] = ihg.default_authentication_string
|
252
244
|
ihg.authentication_set(attrs)
|
253
|
-
|
254
|
-
ihg.authentication_string)
|
245
|
+
assert_nil(ihg.authentication_string)
|
255
246
|
end
|
256
247
|
|
257
248
|
def test_auth_key_string_enc_7_compat_timeout_ipv6
|
@@ -283,8 +274,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
283
274
|
assert_equal(false, ihg.authentication_compatibility)
|
284
275
|
attrs[:authentication_string] = ihg.default_authentication_string
|
285
276
|
ihg.authentication_set(attrs)
|
286
|
-
|
287
|
-
ihg.authentication_string)
|
277
|
+
assert_nil(ihg.authentication_string)
|
288
278
|
end
|
289
279
|
|
290
280
|
def test_auth_key_string_enc_0_compat_timeout_ipv4
|
@@ -315,8 +305,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
315
305
|
assert_equal(3333, ihg.authentication_timeout)
|
316
306
|
attrs[:authentication_string] = ihg.default_authentication_string
|
317
307
|
ihg.authentication_set(attrs)
|
318
|
-
|
319
|
-
ihg.authentication_string)
|
308
|
+
assert_nil(ihg.authentication_string)
|
320
309
|
end
|
321
310
|
|
322
311
|
def test_auth_key_string_enc_0_compat_timeout_ipv6
|
@@ -347,8 +336,7 @@ class TestInterfaceHsrpGroup < CiscoTestCase
|
|
347
336
|
assert_equal(3333, ihg.authentication_timeout)
|
348
337
|
attrs[:authentication_string] = ihg.default_authentication_string
|
349
338
|
ihg.authentication_set(attrs)
|
350
|
-
|
351
|
-
ihg.authentication_string)
|
339
|
+
assert_nil(ihg.authentication_string)
|
352
340
|
end
|
353
341
|
|
354
342
|
def test_preempt_ipv4
|
data/tests/test_ip_multicast.rb
CHANGED
@@ -38,31 +38,42 @@ class TestIpMulticast < CiscoTestCase
|
|
38
38
|
super
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
41
|
+
def test_overlay_distributed_dr
|
42
|
+
skip_legacy_defect?('7.0.3.I7.4', 'CSCvk01535')
|
43
|
+
|
44
|
+
ipm = IpMulticast.new
|
45
|
+
|
46
|
+
# Test Defaults
|
47
|
+
have = ipm.overlay_distributed_dr
|
48
|
+
should = ipm.default_overlay_distributed_dr
|
49
|
+
assert_equal(have, should, 'overlay_distributed_dr does not match default value')
|
50
|
+
|
51
|
+
# Test property set
|
52
|
+
ipm.overlay_distributed_dr = true
|
53
|
+
assert_equal(ipm.overlay_distributed_dr, true, 'overlay_distributed_dr was not set')
|
54
|
+
|
55
|
+
# Test property unset
|
56
|
+
ipm.overlay_distributed_dr = false
|
57
|
+
assert_equal(ipm.overlay_distributed_dr, false, 'overlay_distributed_dr was not unset')
|
58
|
+
|
59
|
+
ipm.destroy
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_overlay_spt_only
|
42
63
|
ipm = IpMulticast.new
|
43
|
-
opts = %w(overlay_distributed_dr overlay_spt_only)
|
44
64
|
|
45
|
-
#
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
assert_equal(have, should, "#{opt} doesn't match the default")
|
50
|
-
end
|
65
|
+
# Test Defaults
|
66
|
+
have = ipm.overlay_spt_only
|
67
|
+
should = ipm.default_overlay_spt_only
|
68
|
+
assert_equal(have, should, 'overlay_spt_only does not match default value')
|
51
69
|
|
52
|
-
#
|
53
|
-
|
54
|
-
|
55
|
-
should = 'ip multicast ' + opt.tr('_', '-')
|
56
|
-
assert_equal(ipm.send("#{opt}"), should, "#{opt} was not set")
|
57
|
-
end
|
70
|
+
# Test property set
|
71
|
+
ipm.overlay_spt_only = true
|
72
|
+
assert_equal(ipm.overlay_spt_only, true, 'overlay_spt_only was not set')
|
58
73
|
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
should = false
|
63
|
-
assert_equal(ipm.send("#{opt}"), should, "#{opt} was not unset")
|
64
|
-
assert_equal(ipm.send("#{opt}"), ipm.send("default_#{opt}"), "#{opt} doesn't match default")
|
65
|
-
end
|
74
|
+
# Test property unset
|
75
|
+
ipm.overlay_spt_only = false
|
76
|
+
assert_equal(ipm.overlay_spt_only, false, 'overlay_spt_only was not unset')
|
66
77
|
|
67
78
|
ipm.destroy
|
68
79
|
end
|