cisco_node_utils 0.9.0 → 1.0.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 +22 -0
- data/CONTRIBUTING.md +33 -31
- data/SUPPORT.md +3 -0
- data/cisco_node_utils.gemspec +1 -1
- data/docs/.rubocop.yml +13 -0
- data/docs/README-develop-node-utils-APIs.md +659 -0
- data/docs/README-maintainers.md +78 -0
- data/docs/agent_files.png +0 -0
- data/docs/template-feature.rb +45 -0
- data/docs/template-router.rb +125 -0
- data/docs/template-test_feature.rb +51 -0
- data/docs/template-test_router.rb +107 -0
- data/lib/cisco_node_utils/command_reference_common.yaml +42 -1
- data/lib/cisco_node_utils/interface.rb +106 -0
- data/lib/cisco_node_utils/interface_ospf.rb +17 -3
- data/lib/cisco_node_utils/node.rb +2 -2
- data/lib/cisco_node_utils/router_ospf_vrf.rb +12 -0
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vtp.rb +21 -12
- data/lib/cisco_node_utils/yum.rb +16 -6
- data/tests/n9000_sample-1.0.0-7.0.3.x86_64.rpm +0 -0
- data/tests/test_interface.rb +149 -7
- data/tests/test_interface_ospf.rb +33 -1
- data/tests/test_interface_switchport.rb +104 -1
- data/tests/test_router_ospf_vrf.rb +12 -0
- data/tests/test_snmpuser.rb +1 -1
- data/tests/test_vtp.rb +64 -48
- data/tests/test_yum.rb +11 -7
- metadata +32 -22
@@ -79,6 +79,37 @@ class TestInterfaceOspf < CiscoTestCase
|
|
79
79
|
node.cache_flush
|
80
80
|
end
|
81
81
|
|
82
|
+
def test_get_set_area
|
83
|
+
# setup a loopback to use
|
84
|
+
@device.cmd("configure terminal")
|
85
|
+
@device.cmd("interface loopback12")
|
86
|
+
@device.cmd("end")
|
87
|
+
node.cache_flush
|
88
|
+
|
89
|
+
int_ospf = InterfaceOspf.new("loopback12", "12", "0.0.0.0")
|
90
|
+
|
91
|
+
# test invalid
|
92
|
+
assert_raises(CliError) do
|
93
|
+
int_ospf.area = "Blue"
|
94
|
+
end
|
95
|
+
|
96
|
+
# test get/set ip address form
|
97
|
+
int_ospf.area = "0.0.0.4"
|
98
|
+
assert_equal(int_ospf.area, "0.0.0.4")
|
99
|
+
|
100
|
+
# test get/set integer form.
|
101
|
+
# Note: the area getter will munge the value to dotted decimal.
|
102
|
+
int_ospf.area = "3"
|
103
|
+
assert_equal(int_ospf.area, "0.0.0.3")
|
104
|
+
|
105
|
+
# cleanup
|
106
|
+
int_ospf.destroy
|
107
|
+
@device.cmd("configure terminal")
|
108
|
+
@device.cmd("no interface loopback12")
|
109
|
+
@device.cmd("end")
|
110
|
+
node.cache_flush
|
111
|
+
end
|
112
|
+
|
82
113
|
def test_interfaceospf_collection_empty
|
83
114
|
@device.cmd("configure terminal")
|
84
115
|
@device.cmd("no feature ospf")
|
@@ -746,7 +777,8 @@ class TestInterfaceOspf < CiscoTestCase
|
|
746
777
|
node.cache_flush
|
747
778
|
interface = InterfaceOspf.new("loopback122", "nonexistentOspf", "0")
|
748
779
|
|
749
|
-
|
780
|
+
# Note: the area getter will munge the value to dotted decimal.
|
781
|
+
assert_equal(interface.area, "0.0.0.0")
|
750
782
|
assert_equal(interface.hello_interval, interface.default_hello_interval)
|
751
783
|
|
752
784
|
interface.destroy
|
@@ -19,11 +19,20 @@ require File.expand_path("../../lib/cisco_node_utils/vtp", __FILE__)
|
|
19
19
|
include Cisco
|
20
20
|
|
21
21
|
class TestInterfaceSwitchport < CiscoTestCase
|
22
|
-
|
22
|
+
DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN = "1-4094"
|
23
|
+
DEFAULT_IF_SWITCHPORT_NATIVE_VLAN = 1
|
24
|
+
|
25
|
+
def setup
|
26
|
+
super
|
23
27
|
s = @device.cmd("configure terminal")
|
24
28
|
s = @device.cmd("no feature vtp")
|
25
29
|
s = @device.cmd("no feature interface-vlan")
|
30
|
+
s = @device.cmd("end")
|
31
|
+
node.cache_flush
|
32
|
+
end
|
26
33
|
|
34
|
+
def interface_ethernet_default(ethernet_id)
|
35
|
+
s = @device.cmd("configure terminal")
|
27
36
|
s = @device.cmd("default interface ethernet #{ethernet_id}")
|
28
37
|
s = @device.cmd("end")
|
29
38
|
node.cache_flush
|
@@ -642,6 +651,100 @@ class TestInterfaceSwitchport < CiscoTestCase
|
|
642
651
|
interface_ethernet_default(interfaces_id[0])
|
643
652
|
end
|
644
653
|
|
654
|
+
def test_interface_switchport_trunk_allowed_vlan_all
|
655
|
+
interface = Interface.new(interfaces[0])
|
656
|
+
interface.switchport_enable
|
657
|
+
interface.switchport_trunk_allowed_vlan = "all"
|
658
|
+
assert_equal(
|
659
|
+
DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN,
|
660
|
+
interface.switchport_trunk_allowed_vlan)
|
661
|
+
interface_ethernet_default(interfaces_id[0])
|
662
|
+
end
|
663
|
+
|
664
|
+
def test_interface_switchport_trunk_allowed_vlan_change
|
665
|
+
interface = Interface.new(interfaces[0])
|
666
|
+
interface.switchport_enable
|
667
|
+
interface.switchport_trunk_allowed_vlan = "20"
|
668
|
+
assert_equal("20", interface.switchport_trunk_allowed_vlan)
|
669
|
+
interface.switchport_trunk_allowed_vlan = "30"
|
670
|
+
assert_equal("30", interface.switchport_trunk_allowed_vlan)
|
671
|
+
interface_ethernet_default(interfaces_id[0])
|
672
|
+
end
|
673
|
+
|
674
|
+
def test_interface_switchport_trunk_allowed_vlan_default
|
675
|
+
interface = Interface.new(interfaces[0])
|
676
|
+
interface.switchport_enable
|
677
|
+
interface.switchport_trunk_allowed_vlan =
|
678
|
+
interface.default_switchport_trunk_allowed_vlan
|
679
|
+
assert_equal(
|
680
|
+
DEFAULT_IF_SWITCHPORT_ALLOWED_VLAN,
|
681
|
+
interface.switchport_trunk_allowed_vlan)
|
682
|
+
interface_ethernet_default(interfaces_id[0])
|
683
|
+
end
|
684
|
+
|
685
|
+
def test_interface_switchport_trunk_allowed_vlan_invalid
|
686
|
+
interface = Interface.new(interfaces[0])
|
687
|
+
interface.switchport_enable
|
688
|
+
assert_raises(RuntimeError) {
|
689
|
+
interface.switchport_trunk_allowed_vlan = "hello"
|
690
|
+
}
|
691
|
+
interface_ethernet_default(interfaces_id[0])
|
692
|
+
end
|
693
|
+
|
694
|
+
def test_interface_switchport_trunk_allowed_vlan_none
|
695
|
+
interface = Interface.new(interfaces[0])
|
696
|
+
interface.switchport_enable
|
697
|
+
interface.switchport_trunk_allowed_vlan = "none"
|
698
|
+
assert_equal("none", interface.switchport_trunk_allowed_vlan)
|
699
|
+
interface_ethernet_default(interfaces_id[0])
|
700
|
+
end
|
701
|
+
|
702
|
+
def test_interface_switchport_trunk_allowed_vlan_valid
|
703
|
+
interface = Interface.new(interfaces[0])
|
704
|
+
interface.switchport_enable
|
705
|
+
interface.switchport_trunk_allowed_vlan = "20, 30"
|
706
|
+
assert_equal("20,30", interface.switchport_trunk_allowed_vlan)
|
707
|
+
interface_ethernet_default(interfaces_id[0])
|
708
|
+
end
|
709
|
+
|
710
|
+
def test_interface_switchport_trunk_native_vlan_change
|
711
|
+
interface = Interface.new(interfaces[0])
|
712
|
+
interface.switchport_enable
|
713
|
+
interface.switchport_trunk_native_vlan = 20
|
714
|
+
assert_equal(20, interface.switchport_trunk_native_vlan)
|
715
|
+
interface.switchport_trunk_native_vlan = 30
|
716
|
+
assert_equal(30, interface.switchport_trunk_native_vlan)
|
717
|
+
interface_ethernet_default(interfaces_id[0])
|
718
|
+
end
|
719
|
+
|
720
|
+
def test_interface_switchport_trunk_native_vlan_default
|
721
|
+
interface = Interface.new(interfaces[0])
|
722
|
+
interface.switchport_enable
|
723
|
+
interface.switchport_trunk_native_vlan =
|
724
|
+
interface.default_switchport_trunk_native_vlan
|
725
|
+
assert_equal(
|
726
|
+
DEFAULT_IF_SWITCHPORT_NATIVE_VLAN,
|
727
|
+
interface.switchport_trunk_native_vlan)
|
728
|
+
interface_ethernet_default(interfaces_id[0])
|
729
|
+
end
|
730
|
+
|
731
|
+
def test_interface_switchport_trunk_native_vlan_invalid
|
732
|
+
interface = Interface.new(interfaces[0])
|
733
|
+
interface.switchport_enable
|
734
|
+
assert_raises(RuntimeError) {
|
735
|
+
interface.switchport_trunk_native_vlan = "20, 30"
|
736
|
+
}
|
737
|
+
interface_ethernet_default(interfaces_id[0])
|
738
|
+
end
|
739
|
+
|
740
|
+
def test_interface_switchport_trunk_native_vlan_valid
|
741
|
+
interface = Interface.new(interfaces[0])
|
742
|
+
interface.switchport_enable
|
743
|
+
interface.switchport_trunk_native_vlan = 20
|
744
|
+
assert_equal(20, interface.switchport_trunk_native_vlan)
|
745
|
+
interface_ethernet_default(interfaces_id[0])
|
746
|
+
end
|
747
|
+
|
645
748
|
=begin
|
646
749
|
# Run this test at your peril as it can cause timeouts for this test and
|
647
750
|
# others - 'no feature-set fex' states:
|
@@ -750,4 +750,16 @@ class TestRouterOspfVrf < CiscoTestCase
|
|
750
750
|
"Error: #{vrf.name} vrf, max timer throttle spf not correct")
|
751
751
|
vrf.parent.destroy
|
752
752
|
end
|
753
|
+
|
754
|
+
def test_routerospfvrf_noninstantiated
|
755
|
+
routerospf = create_routerospf
|
756
|
+
vrf = RouterOspfVrf.new("absent", "absent", false)
|
757
|
+
vrf.auto_cost
|
758
|
+
vrf.default_metric
|
759
|
+
vrf.log_adjacency
|
760
|
+
vrf.router_id
|
761
|
+
vrf.timer_throttle_lsa
|
762
|
+
vrf.timer_throttle_spf
|
763
|
+
routerospf.destroy
|
764
|
+
end
|
753
765
|
end
|
data/tests/test_snmpuser.rb
CHANGED
data/tests/test_vtp.rb
CHANGED
@@ -21,6 +21,11 @@ class TestVtp < CiscoTestCase
|
|
21
21
|
no_feature_vtp
|
22
22
|
end
|
23
23
|
|
24
|
+
def teardown
|
25
|
+
no_feature_vtp
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
24
29
|
def no_feature_vtp
|
25
30
|
# VTP will raise an error if the domain is configured twice so we need to
|
26
31
|
# turn the feature off for a clean test.
|
@@ -34,26 +39,58 @@ class TestVtp < CiscoTestCase
|
|
34
39
|
vtp
|
35
40
|
end
|
36
41
|
|
42
|
+
def test_vtp_disabled
|
43
|
+
vtp = Vtp.new(false)
|
44
|
+
assert_empty(vtp.domain)
|
45
|
+
assert_equal(vtp.default_password, vtp.password)
|
46
|
+
assert_equal(vtp.default_filename, vtp.filename)
|
47
|
+
assert_equal(vtp.default_version, vtp.version)
|
48
|
+
refute(Vtp.enabled, "VTP feature was unexpectedly enabled?")
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_vtp_enabled_but_no_domain
|
52
|
+
vtp = Vtp.new(false)
|
53
|
+
@device.cmd("conf t ; feature vtp ; end")
|
54
|
+
node.cache_flush()
|
55
|
+
assert(Vtp.enabled)
|
56
|
+
assert_empty(vtp.domain)
|
57
|
+
assert_equal(vtp.default_password, vtp.password)
|
58
|
+
assert_equal(vtp.default_filename, vtp.filename)
|
59
|
+
assert_equal(vtp.default_version, vtp.version)
|
60
|
+
# Can set these without setting domain
|
61
|
+
vtp.filename = "bootflash:/foo.bar"
|
62
|
+
assert_equal("bootflash:/foo.bar", vtp.filename)
|
63
|
+
vtp.version = 1
|
64
|
+
assert_equal(1, vtp.version)
|
65
|
+
# Can't set any of the below without setting a domain first
|
66
|
+
assert_raises(RuntimeError) do
|
67
|
+
vtp.password = "hello"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_vtp_domain_enable_disable
|
72
|
+
assert_empty(Vtp.domain)
|
73
|
+
vtp = vtp_domain("enable")
|
74
|
+
assert_equal("enable", Vtp.domain)
|
75
|
+
vtp.destroy
|
76
|
+
assert_empty(Vtp.domain)
|
77
|
+
end
|
78
|
+
|
37
79
|
def test_vtp_create_valid
|
38
|
-
no_feature_vtp
|
39
80
|
vtp = vtp_domain("accounting")
|
40
81
|
s = @device.cmd("show run vtp | incl '^vtp domain'")
|
41
82
|
assert_match(/^vtp domain accounting/, s,
|
42
83
|
"Error: failed to create vtp domain")
|
43
|
-
vtp.destroy
|
44
84
|
end
|
45
85
|
|
46
86
|
def test_vtp_domain_name_change
|
47
|
-
no_feature_vtp
|
48
87
|
vtp = vtp_domain("accounting")
|
49
88
|
vtp_new = vtp_domain("uplink")
|
50
89
|
assert_equal("uplink", vtp.domain,
|
51
90
|
"Error: vtp domain name incorrect")
|
52
|
-
vtp_new.destroy
|
53
91
|
end
|
54
92
|
|
55
93
|
def test_vtp_create_preconfig_no_change
|
56
|
-
no_feature_vtp
|
57
94
|
s = @device.cmd("configure terminal")
|
58
95
|
s = @device.cmd("feature vtp")
|
59
96
|
s = @device.cmd("vtp domain accounting")
|
@@ -65,11 +102,9 @@ class TestVtp < CiscoTestCase
|
|
65
102
|
vtp = vtp_domain("accounting")
|
66
103
|
assert_equal("accounting", vtp.domain,
|
67
104
|
"Error: vtp domain wrong")
|
68
|
-
vtp.destroy
|
69
105
|
end
|
70
106
|
|
71
107
|
def test_vtp_create_double
|
72
|
-
no_feature_vtp
|
73
108
|
vtp = vtp_domain("accounting")
|
74
109
|
vtp_new = vtp_domain("accounting")
|
75
110
|
|
@@ -77,32 +112,27 @@ class TestVtp < CiscoTestCase
|
|
77
112
|
"Error: vtp domain wrong")
|
78
113
|
assert_equal("accounting", vtp_new.domain,
|
79
114
|
"Error: vtp_new domain wrong")
|
80
|
-
vtp_new.destroy
|
81
115
|
end
|
82
116
|
|
83
117
|
def test_vtp_create_domain_invalid
|
84
|
-
no_feature_vtp
|
85
118
|
assert_raises(ArgumentError) do
|
86
119
|
vtp_domain(node)
|
87
120
|
end
|
88
121
|
end
|
89
122
|
|
90
123
|
def test_vtp_create_domain_nil
|
91
|
-
no_feature_vtp
|
92
124
|
assert_raises(ArgumentError) do
|
93
125
|
vtp_domain(nil)
|
94
126
|
end
|
95
127
|
end
|
96
128
|
|
97
129
|
def test_vtp_create_domain_empty
|
98
|
-
no_feature_vtp
|
99
130
|
assert_raises(ArgumentError) do
|
100
131
|
vtp_domain("")
|
101
132
|
end
|
102
133
|
end
|
103
134
|
|
104
135
|
def test_vtp_assignment
|
105
|
-
no_feature_vtp
|
106
136
|
vtp = vtp_domain("accounting")
|
107
137
|
vtp.password = "copy_test"
|
108
138
|
assert_equal("copy_test", vtp.password,
|
@@ -110,28 +140,22 @@ class TestVtp < CiscoTestCase
|
|
110
140
|
vtp_extra = vtp
|
111
141
|
assert_equal("copy_test", vtp_extra.password,
|
112
142
|
"Error: vtp password not set")
|
113
|
-
vtp.destroy
|
114
143
|
end
|
115
144
|
|
116
145
|
def test_vtp_domain_get
|
117
|
-
no_feature_vtp
|
118
146
|
vtp = vtp_domain("accounting")
|
119
147
|
assert_equal("accounting", vtp.domain,
|
120
148
|
"Error: vtp domain incorrect")
|
121
|
-
vtp.destroy
|
122
149
|
end
|
123
150
|
|
124
151
|
def test_vtp_password_nil
|
125
|
-
no_feature_vtp
|
126
152
|
vtp = vtp_domain("accounting")
|
127
153
|
assert_raises(TypeError) do
|
128
154
|
vtp.password = nil
|
129
155
|
end
|
130
|
-
vtp.destroy
|
131
156
|
end
|
132
157
|
|
133
158
|
def test_vtp_password_default
|
134
|
-
no_feature_vtp
|
135
159
|
vtp = vtp_domain("accounting")
|
136
160
|
vtp.password = "test_me"
|
137
161
|
assert_equal("test_me", vtp.password,
|
@@ -140,21 +164,16 @@ class TestVtp < CiscoTestCase
|
|
140
164
|
vtp.password = vtp.default_password
|
141
165
|
assert_equal(node.config_get_default("vtp", "password"), vtp.password,
|
142
166
|
"Error: vtp password not correct")
|
143
|
-
|
144
|
-
vtp.destroy
|
145
167
|
end
|
146
168
|
|
147
169
|
def test_vtp_password_zero_length
|
148
|
-
no_feature_vtp
|
149
170
|
vtp = vtp_domain("accounting")
|
150
171
|
vtp.password = ""
|
151
172
|
assert_equal("", vtp.password,
|
152
173
|
"Error: vtp password not empty")
|
153
|
-
vtp.destroy
|
154
174
|
end
|
155
175
|
|
156
176
|
def test_vtp_password_get
|
157
|
-
no_feature_vtp
|
158
177
|
vtp = vtp_domain("accounting")
|
159
178
|
|
160
179
|
s = @device.cmd("configure terminal")
|
@@ -164,19 +183,15 @@ class TestVtp < CiscoTestCase
|
|
164
183
|
node.cache_flush()
|
165
184
|
assert_equal("cisco123", vtp.password,
|
166
185
|
"Error: vtp password not correct")
|
167
|
-
vtp.destroy
|
168
186
|
end
|
169
187
|
|
170
188
|
def test_vtp_password_get_not_set
|
171
|
-
no_feature_vtp
|
172
189
|
vtp = vtp_domain("accounting")
|
173
190
|
assert_equal("", vtp.password,
|
174
191
|
"Error: vtp password not empty")
|
175
|
-
vtp.destroy
|
176
192
|
end
|
177
193
|
|
178
194
|
def test_vtp_password_clear
|
179
|
-
no_feature_vtp
|
180
195
|
vtp = vtp_domain("accounting")
|
181
196
|
vtp.password = "cisco123"
|
182
197
|
assert_equal("cisco123", vtp.password,
|
@@ -185,12 +200,9 @@ class TestVtp < CiscoTestCase
|
|
185
200
|
vtp.password = ""
|
186
201
|
assert_equal("", vtp.password,
|
187
202
|
"Error: vtp default password not set")
|
188
|
-
|
189
|
-
vtp.destroy
|
190
203
|
end
|
191
204
|
|
192
205
|
def test_vtp_password_valid
|
193
|
-
no_feature_vtp
|
194
206
|
vtp = vtp_domain("accounting")
|
195
207
|
alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
|
196
208
|
password = ""
|
@@ -202,11 +214,9 @@ class TestVtp < CiscoTestCase
|
|
202
214
|
"Error: vtp password not set")
|
203
215
|
end
|
204
216
|
}
|
205
|
-
vtp.destroy
|
206
217
|
end
|
207
218
|
|
208
219
|
def test_vtp_password_too_long
|
209
|
-
no_feature_vtp
|
210
220
|
vtp = vtp_domain("accounting")
|
211
221
|
password = "a"
|
212
222
|
Vtp::MAX_VTP_PASSWORD_SIZE.times {
|
@@ -215,29 +225,29 @@ class TestVtp < CiscoTestCase
|
|
215
225
|
assert_raises(ArgumentError) {
|
216
226
|
vtp.password = password
|
217
227
|
}
|
218
|
-
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_vtp_password_special_characters
|
231
|
+
vtp = vtp_domain("password")
|
232
|
+
vtp.password = 'hello!//\\#%$x'
|
233
|
+
assert_equal('hello!//\\#%$x', vtp.password)
|
219
234
|
end
|
220
235
|
|
221
236
|
def test_vtp_filename_nil
|
222
|
-
no_feature_vtp
|
223
237
|
vtp = vtp_domain("accounting")
|
224
238
|
assert_raises(TypeError) do
|
225
239
|
vtp.filename = nil
|
226
240
|
end
|
227
|
-
vtp.destroy
|
228
241
|
end
|
229
242
|
|
230
243
|
def test_vtp_filename_valid
|
231
|
-
no_feature_vtp
|
232
244
|
vtp = vtp_domain("accounting")
|
233
245
|
vtp.filename = "bootflash:/test.dat"
|
234
246
|
assert_equal("bootflash:/test.dat", vtp.filename,
|
235
247
|
"Error: vtp file content wrong")
|
236
|
-
vtp.destroy
|
237
248
|
end
|
238
249
|
|
239
250
|
def test_vtp_filename_zero_length
|
240
|
-
no_feature_vtp
|
241
251
|
vtp = vtp_domain("accounting")
|
242
252
|
vtp.filename = vtp.default_filename
|
243
253
|
assert_equal(node.config_get_default("vtp", "filename"), vtp.filename,
|
@@ -248,20 +258,24 @@ class TestVtp < CiscoTestCase
|
|
248
258
|
vtp.filename = ""
|
249
259
|
assert_equal(node.config_get_default("vtp", "filename"), vtp.filename,
|
250
260
|
"Error: vtp file content wrong")
|
251
|
-
|
261
|
+
end
|
262
|
+
|
263
|
+
def test_vtp_filename_auto_enable
|
264
|
+
vtp = Vtp.new(false)
|
265
|
+
refute(Vtp.enabled, "VTP should not be enabled")
|
266
|
+
vtp.filename = "bootflash:/foo.bar"
|
267
|
+
assert(Vtp.enabled)
|
268
|
+
assert_equal("bootflash:/foo.bar", vtp.filename)
|
252
269
|
end
|
253
270
|
|
254
271
|
def test_vtp_version_valid
|
255
|
-
no_feature_vtp
|
256
272
|
vtp = vtp_domain("accounting")
|
257
273
|
vtp.version = vtp.default_version
|
258
274
|
assert_equal(node.config_get_default("vtp", "version"), vtp.version,
|
259
275
|
"Error: vtp version not default")
|
260
|
-
vtp.destroy
|
261
276
|
end
|
262
277
|
|
263
278
|
def test_vtp_version3_valid
|
264
|
-
no_feature_vtp
|
265
279
|
vtp = vtp_domain("accounting")
|
266
280
|
|
267
281
|
ref = cmd_ref.lookup("vtp", "version")
|
@@ -273,7 +287,6 @@ class TestVtp < CiscoTestCase
|
|
273
287
|
}
|
274
288
|
|
275
289
|
ref = nil
|
276
|
-
vtp.destroy
|
277
290
|
end
|
278
291
|
|
279
292
|
# Decides whether to check for a raised Exception or an equal value.
|
@@ -288,16 +301,13 @@ class TestVtp < CiscoTestCase
|
|
288
301
|
end
|
289
302
|
|
290
303
|
def test_vtp_version_invalid
|
291
|
-
no_feature_vtp
|
292
304
|
vtp = vtp_domain("accounting")
|
293
305
|
assert_raises(Cisco::CliError) do
|
294
306
|
vtp.version = 34
|
295
307
|
end
|
296
|
-
vtp.destroy
|
297
308
|
end
|
298
309
|
|
299
310
|
def test_vtp_version_default
|
300
|
-
no_feature_vtp
|
301
311
|
vtp = vtp_domain("accounting")
|
302
312
|
vtp.version = 2
|
303
313
|
assert_equal(2, vtp.version,
|
@@ -305,11 +315,17 @@ class TestVtp < CiscoTestCase
|
|
305
315
|
vtp.version = vtp.default_version
|
306
316
|
assert_equal(node.config_get_default("vtp", "version"), vtp.version,
|
307
317
|
"Error: vtp version not default")
|
308
|
-
|
318
|
+
end
|
319
|
+
|
320
|
+
def test_vtp_version_auto_enable
|
321
|
+
vtp = Vtp.new(false)
|
322
|
+
refute(Vtp.enabled, "VTP should not be enabled")
|
323
|
+
vtp.version = 1
|
324
|
+
assert(Vtp.enabled)
|
325
|
+
assert_equal(1, vtp.version)
|
309
326
|
end
|
310
327
|
|
311
328
|
def test_vtp_feature_enable_disable
|
312
|
-
no_feature_vtp
|
313
329
|
Vtp.new.enable
|
314
330
|
assert(Vtp.enabled, "Error: vtp is not enabled")
|
315
331
|
|