From 9aec425bc017592429d5e3120d580f6ed9e39dd6 Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 13 Mar 2022 18:35:11 +0000 Subject: [PATCH] Add unit tests for all interface/sub-interface failure modes --- unittest/error-interface-mtu1.yaml | 12 ++++++++++++ unittest/error-interface-mtu2.yaml | 12 ++++++++++++ unittest/error-subinterface1.yaml | 17 +++++++++++++++++ unittest/error-subinterface2.yaml | 13 +++++++++++++ unittest/error-subinterface3.yaml | 13 +++++++++++++ unittest/error-subinterface4.yaml | 17 +++++++++++++++++ unittest/error-subinterface5.yaml | 17 +++++++++++++++++ unittest/error-subinterface6.yaml | 20 ++++++++++++++++++++ unittest/error-subinterface7.yaml | 10 ++++++++++ 9 files changed, 131 insertions(+) create mode 100644 unittest/error-interface-mtu1.yaml create mode 100644 unittest/error-interface-mtu2.yaml create mode 100644 unittest/error-subinterface1.yaml create mode 100644 unittest/error-subinterface2.yaml create mode 100644 unittest/error-subinterface3.yaml create mode 100644 unittest/error-subinterface4.yaml create mode 100644 unittest/error-subinterface5.yaml create mode 100644 unittest/error-subinterface6.yaml create mode 100644 unittest/error-subinterface7.yaml diff --git a/unittest/error-interface-mtu1.yaml b/unittest/error-interface-mtu1.yaml new file mode 100644 index 0000000..973f755 --- /dev/null +++ b/unittest/error-interface-mtu1.yaml @@ -0,0 +1,12 @@ +test: + description: "MTU too small on one interface, too large on another" + errors: + expected: + - "mtu.*less than 128" + - "mtu.*greater than 9216" +--- +interfaces: + GigabitEthernet1/0/0: + mtu: 9217 + GigabitEthernet1/0/1: + mtu: 127 diff --git a/unittest/error-interface-mtu2.yaml b/unittest/error-interface-mtu2.yaml new file mode 100644 index 0000000..0fa4bd7 --- /dev/null +++ b/unittest/error-interface-mtu2.yaml @@ -0,0 +1,12 @@ +test: + description: "MTU of sub-interfaces cannot be higher than their parent" + errors: + expected: + - "sub-interface .* has MTU 9001 higher than parent MTU 9000" +--- +interfaces: + GigabitEthernet1/0/0: + mtu: 9000 + sub-interfaces: + 100: + mtu: 9001 diff --git a/unittest/error-subinterface1.yaml b/unittest/error-subinterface1.yaml new file mode 100644 index 0000000..fb36612 --- /dev/null +++ b/unittest/error-subinterface1.yaml @@ -0,0 +1,17 @@ +test: + description: "Two subinterfaces can't have the same encapsulation" + errors: + expected: + - "100 .* unique encapsulation" + - "101 .* unique encapsulation" +--- +interfaces: + GigabitEthernet1/0/0: + sub-interfaces: + 100: + description: "VLAN 100" + 101: + description: "Another VLAN 100" + encapsulation: + dot1q: 100 + diff --git a/unittest/error-subinterface2.yaml b/unittest/error-subinterface2.yaml new file mode 100644 index 0000000..c7a774e --- /dev/null +++ b/unittest/error-subinterface2.yaml @@ -0,0 +1,13 @@ +test: + description: "A subinterface cannot have an LCP if the parent doesn't have one" + errors: + expected: + - "sub-interface .* has LCP but .* does not have LCP" +--- +interfaces: + GigabitEthernet1/0/0: + sub-interfaces: + 100: + description: "VLAN 100" + lcp: "foo.100" + diff --git a/unittest/error-subinterface3.yaml b/unittest/error-subinterface3.yaml new file mode 100644 index 0000000..19be078 --- /dev/null +++ b/unittest/error-subinterface3.yaml @@ -0,0 +1,13 @@ +test: + description: "The length of the LCP name is too long" + errors: + expected: + - "Length .* is greater than 8" +--- +interfaces: + GigabitEthernet1/0/0: + lcp: "e01234567" + sub-interfaces: + 100: + description: "VLAN 100" + diff --git a/unittest/error-subinterface4.yaml b/unittest/error-subinterface4.yaml new file mode 100644 index 0000000..89ac13d --- /dev/null +++ b/unittest/error-subinterface4.yaml @@ -0,0 +1,17 @@ +test: + description: "The length of the generated child LCP name is too long" + errors: + expected: + - "sub-interface .* has LCP with too long name" +--- +interfaces: + GigabitEthernet1/0/0: + lcp: "e01234" + sub-interfaces: + 100: + description: "QinQ subinterface" + addresses: [ 192.0.2.1/24 ] + encapsulation: + dot1q: 1234 + inner-dot1q: 2345 + diff --git a/unittest/error-subinterface5.yaml b/unittest/error-subinterface5.yaml new file mode 100644 index 0000000..ef61dbc --- /dev/null +++ b/unittest/error-subinterface5.yaml @@ -0,0 +1,17 @@ +test: + description: "Sub-interface with addresses must have an LCP. Gi1/0/0 does this wrong, while Gi2/0/0 does it correctly" + errors: + expected: + - "sub-interface .* has address.* but .* does not have LCP" +--- +interfaces: + GigabitEthernet1/0/0: + sub-interfaces: + 100: + addresses: [ 192.0.2.1/24 ] + GigabitEthernet2/0/0: + lcp: "xe2-0-0" + sub-interfaces: + 100: + addresses: [ 192.0.2.1/24 ] + diff --git a/unittest/error-subinterface6.yaml b/unittest/error-subinterface6.yaml new file mode 100644 index 0000000..b5c2531 --- /dev/null +++ b/unittest/error-subinterface6.yaml @@ -0,0 +1,20 @@ +test: + description: "A bunch of sub-interfaces with incorrect encapsulation" + errors: + expected: + - "has invalid encapsulation" + count: 2 +--- +interfaces: + GigabitEthernet1/0/0: + sub-interfaces: + 100: + encapsulation: + ## Cannot have both dot1q and dot1ad + dot1q: 100 + dot1ad: 100 + 101: + encapsulation: + ## Missing dot1q or dot1ad + inner-dot1q: 100 + diff --git a/unittest/error-subinterface7.yaml b/unittest/error-subinterface7.yaml new file mode 100644 index 0000000..15eaf3c --- /dev/null +++ b/unittest/error-subinterface7.yaml @@ -0,0 +1,10 @@ +test: + description: "A completely empty sub-interface is not allowed" + errors: + expected: + - "sub-interface .* has no config" +--- +interfaces: + GigabitEthernet1/0/0: + sub-interfaces: + 100: {}