Commit Graph
48 Commits
Author SHA1 Message Date
Mattias WalströmandJoachim Wiberg 72dc0f87f5 infamy: route: Add support to read ospf status 2024-01-10 17:51:46 +01:00
Mattias WalströmandJoachim Wiberg 35d74cecd4 Operational: Add support for multiple next-hop for routes 2024-01-08 10:04:44 +01:00
Mattias WalströmandJoachim Wiberg 6db8c2bc75 infamy:netns: Add traceroute support 2023-12-26 12:11:37 +01:00
Mattias WalströmandJoachim Wiberg 4e7bdc58d4 Add OSPFv2 support
A very limited part of the YANG model is implemented so far, basicly it is OSPFv2 with multiple areas and you can change timers
for the interfaces. Limited operational support.

admin@infix-00-00-00:/config/> edit routing control-plane-protocol ietf-ospf:ospfv2 name default
admin@infix-00-00-00:/config/routing/control-plane-protocol/ietf-ospf:ospfv2/name/default/> set ospf area 0.0.0.0 interface e0 enabled true
admin@infix-00-00-00:/config/routing/control-plane-protocol/ietf-ospf:ospfv2/name/default/> leave
2023-12-18 17:28:00 +01:00
Joachim WibergandMattias Walström 95c3e5c67c test: new test, verify dhcp option 121 is preferred over option 3
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström a61b3b8aef test: minor refactor to check for nexthop (gw) in routes
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström cb5419c84c test: new test, basic DHCP client
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström 5056424867 test: new infamy DHCP server class
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström 6244777f8e test: disable yang validation before sending config to target
This should probably be an optional argument to this method instead.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström 556a7d884e test: two new methods to fetch ietf-ip ipv4 addresses
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström a944923c6c test: add method, print all data for a given interface
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström 4b08ccf842 test: rename method
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Joachim WibergandMattias Walström 0f7cee8192 test: minor, update module description
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-12-14 16:40:41 +01:00
Mattias WalströmandTobias Waldekranz 797d69e774 Add support for downloading required yang models automatic 2023-12-11 09:10:52 +01:00
Mattias WalströmandJoachim Wiberg eab3c4d191 Add support for IPv6 static routing
admin@example:/> configure
admin@example:/config/> edit routing control-plane-protocol static name default
admin@example:/config/routing/control-plane-protocol/static/name/default/> set ipv6 route 2001:db8:3c4d:200::/64 next-hop next-hop-address 2001:db8:3c4d:1::1
admin@example:/config/routing/control-plane-protocol/static/name/default/> leave
admin@example:/>

admin@infix-00-01-00:/> show routes ipv6
PREFIX                        NEXT-HOP                      METRIC    PROTOCOL
2001:db8:3c4d:50::/64         eth4                          256       kernel
2001:db8:3c4d:200::1/128      lo                            256       kernel
fe80::/64                     eth3                          256       kernel
fe80::/64                     eth2                          256       kernel
fe80::/64                     eth1                          256       kernel
fe80::/64                     eth0                          256       kernel
fe80::/64                     eth5                          256       kernel
fe80::/64                     eth4                          256       kernel
::/0                          2001:db8:3c4d:50::1           20        static
2023-12-07 14:52:00 +01:00
Mattias WalströmandTobias Waldekranz b29df19478 infamy: Add support for devices with other default password 2023-12-01 15:58:27 +01:00
Tobias WaldekranzandMattias Walström 5f299ee151 test/infamy: Generalize wait functionality into "until" 2023-11-29 16:57:48 +01:00
Mattias Walström f7e9c44516 Fix problems when running test on real hardware not qemu
* sniffer did not work correctly
* links did not come upp as quick as in qemu
* must_reach in netns was to narrow, increase timeout
* add wait function to handle poll
2023-11-29 16:57:48 +01:00
Mattias WalströmandJoachim Wiberg 4ea1a682da Add test-case for a static routing 2023-11-17 07:19:28 +01:00
Mattias WalströmandJoachim Wiberg d66740250c confd: Add support for timezone-utc-offset
Some deviations has been done the yang model to comply with tzdata
on linux.

This fixes #106
2023-10-20 12:55:02 +02:00
Joachim Wiberg c6fae88268 Fix #166: drop SSDP entirely from Infix
mDNS-SD was added in Windows 10 Creators Update[1] (build 1703), relased
April 11, 2017.  This makes SSDP no longer critical for finding an Infix
device in Windows, both ping infix-01-02-03.local and using Chrome work.

Since all major operating systems now support mDNS-SD[2] we've decided
to standardize on that and LLDP for Infix and its derivatives.  Other
reasons for dropping it include, but is not limited to: lack of IPv6 in
the implementation we use, and potential security implications[3].

[1]: https://en.wikipedia.org/wiki/Windows_10,_version_1703
[2]: https://techcommunity.microsoft.com/t5/networking-blog/mdns-in-the-enterprise/ba-p/3275777
[3]: https://blog.cloudflare.com/ssdp-100gbps/

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-10-17 16:32:41 +02:00
Joachim Wiberg d3ac2942bb test/infamy: refactor and add iface.get_phys_address()
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-09-21 16:34:48 +02:00
Joachim Wiberg 826ea9d2a9 test/infamy: add missing <get-data> RPC to netconf-client
The netconf-client Python lib currently does not support the <get-data>
RPC.  This commit adds a local extension to the Device class which can
be upstreamed at a later time.

Also some added comments and disabling of pylint warnings.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-09-21 16:34:48 +02:00
Joachim Wiberg 15bc21c56b test/infamy: minor refactor and whitespace
- prefix local members with _
 - pylint whitespace
 - pylint unnecessary parens

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-09-21 16:34:48 +02:00
Joachim WibergandTobias Waldekranz 9075e93524 test: add SsdpClient helper class to probe for end devices
This first version reliles on netcat (nc), mostly because that's what I
could figure out how to run in a netns.  A better way would be to have a
full SsdpClient that can collect query responses properly and log all
devices found.

This, however, will do fine for verifying SSDP on/off functionality.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-30 10:37:43 +02:00
Joachim WibergandTobias Waldekranz 9a5c619571 test: add Sniffer helper class, wrapping tcpdump
Monday fixup, audit with @wkz

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-30 10:37:43 +02:00
Joachim WibergandTobias Waldekranz 1ff744fd04 test: minor, syntax pep-8
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-30 10:37:43 +02:00
Ahmed KaricandJoachim Wiberg 2c4b67cbbc test/case: add basic routing test 2023-08-18 14:26:58 +02:00
Ahmed KaricandTobias Waldekranz 7432ff10aa test/case: add bridge forwarding tests (single-DUT, dual-DUT, VLAN separation) 2023-08-16 13:51:00 +02:00
Ahmed KaricandTobias Waldekranz fc7d212696 test/infamy: add edge type to logical topology (mgmt port selection) 2023-08-16 13:51:00 +02:00
Ahmed KaricandJoachim Wiberg b0d3976ae0 test/case: Add interface status tests 2023-07-11 18:05:58 +02:00
Tobias WaldekranzandJoachim Wiberg 7cf65f4c56 test/infamy: Support submitting edits containing deletions 2023-06-30 18:38:59 +02:00
Tobias WaldekranzandJoachim Wiberg 5be61a7013 test/case: Add ietf_system/upgrade
Verifies that RAUC bundles can be installed using NETCONF.

We choose to not add this to the "all" suite for now, as the qeneth
topologies do not run with full disk emulation.

To test locally, configure your "make run" instance to use the UEFI
loader, launch `make run`, and then run:

    make INFIX_TESTS=test/case/ietf_system/upgrade.py test-run
2023-06-30 15:33:10 +02:00
Tobias WaldekranzandJoachim Wiberg 6d6acda35d test/infamy: Patch netconf_client's logging to support IPv6
As an example, when running meta/play, a call to a device's `_debug()`
method will enable logging of all transmitted and received NETCONF
messages, which is very useful during debugging.
2023-06-30 15:33:10 +02:00
Tobias WaldekranzandJoachim Wiberg fd939f65ce test/infamy: Add helpers to access operational state 2023-06-30 15:33:10 +02:00
Tobias WaldekranzandJoachim Wiberg 6fc131dace test/infamy: Add helpers to call actions and regular RPCs
As with config, the call can be described with a regular python
dictionary. As an example, to reboot the device:

    target.call_dict("ietf-system", { "system-restart": {} })
2023-06-30 15:33:10 +02:00
Tobias WaldekranzandJoachim Wiberg 60beca8820 test/infamy: Ensure that environment always has an ltop attribute
This fixes an issue where attaching to a device in an environment
without a logical topology would trigger an exception.
2023-06-30 15:33:10 +02:00
Joachim WibergandTobias Waldekranz b2c77a2457 test/infamy: use factory-default rpc between tests
Instead of relying on startup-config == factory-config we can now set
running-config to factory-config using the factory-default rpc when
we prepare for a new test.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-30 13:37:12 +02:00
Joachim WibergandTobias Waldekranz 2014c470cd test/infamy: reset between test cases using 'copy startup running'
This should copy factory running, instead of using the factory-reset RPC
but for now we use startup since 'factory' is not yet supported as a
copy-from target.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-22 00:12:43 +02:00
Joachim WibergandTobias Waldekranz 52c2fe1e68 test/infamy: spellcheck
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-22 00:12:43 +02:00
Joachim WibergandTobias Waldekranz 35b4e3296b test/infamy: fix runtime exception handling
File "/home/runner/work/infix/infix/test/infamy/netconf.py", line 116, in put_config
    except self.ncc.RpcError:
           ^^^^^^^^^^^^^^^^^
AttributeError: 'Manager' object has no attribute 'RpcError'

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-20 11:11:52 +02:00
Joachim WibergandTobias Waldekranz 587f92cbaa test/infamy: attempt to handle RpcError "processing timed out"
While running tests in GitHub action, the following[1] often happens.
From the timestamp it seems unlikely to be casused by timeout, which
from what I can tell is 120 sec in the library and 30 sec on our socket.
This never happens when running locally, so I've added a simple
try-catch to retry the operation, because some[2] jobs actually pass.

2023-06-18 09:18:17 # Traceback (most recent call last):
2023-06-18 09:18:17 #   File "/home/runner/work/infix/infix/test/case/infix_interfaces/dual_bridge.py", line 18, in <module>
2023-06-18 09:18:17 #     target.put_config_dict("ietf-interfaces", {
2023-06-18 09:18:17 #   File "/home/runner/work/infix/infix/test/infamy/netconf.py", line 117, in put_config_dict
2023-06-18 09:18:17 #     return self.put_config(lyd.print_mem("xml", with_siblings=True, pretty=False))
2023-06-18 09:18:17 #            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-18 09:18:17 #   File "/home/runner/work/infix/infix/test/infamy/netconf.py", line 112, in put_config
2023-06-18 09:18:17 #     self.ncc.edit_config(xml, default_operation='merge')
2023-06-18 09:18:17 #   File "/root/.infix-test-venv/lib/python3.11/site-packages/netconf_client/ncclient.py", line 277, in edit_config
2023-06-18 09:18:17 #     self._send_rpc(rpc_xml)
2023-06-18 09:18:17 #   File "/root/.infix-test-venv/lib/python3.11/site-packages/netconf_client/ncclient.py", line 223, in _send_rpc
2023-06-18 09:18:17 #     r = f.result(timeout=timeout)
2023-06-18 09:18:17 #         ^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-18 09:18:17 #   File "/usr/lib/python3.11/concurrent/futures/_base.py", line 456, in result
2023-06-18 09:18:17 #     return self.__get_result()
2023-06-18 09:18:17 #            ^^^^^^^^^^^^^^^^^^^
2023-06-18 09:18:17 #   File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
2023-06-18 09:18:17 #     raise self._exception
2023-06-18 09:18:17 # netconf_client.error.RpcError: EV ORIGIN: "rpc" ID 5 processing timed out.
2023-06-18 09:18:17 #

[1]: https://github.com/kernelkit/infix/actions/runs/5302735753/jobs/9597878647
[2]. https://github.com/kernelkit/infix/actions/runs/5302735946/jobs/9597878838

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-20 11:11:52 +02:00
Joachim WibergandTobias Waldekranz 16be0e9db5 test/infamy: use merge operation with edit-config
Unsure if this is right, but existing nework test does not send loopback
or other interfaces in the networking configuration, so maybe merge?

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-20 11:11:52 +02:00
Tobias WaldekranzandJoachim Wiberg aa8e11a58b test/infamy: Create an infamy specific topology object
Create topology objects that are tailored to represent topologies on
the expected format. This let's us make convenient accessors for
things like the controller node, infix devices, getting the ports used
to reach a certain device from another one, etc.
2023-06-14 17:40:16 +02:00
Tobias WaldekranzandJoachim Wiberg 7eb2269972 test/infamy: Fix incorrect call when bailing out of MACVLAN creation
We're calling the bound instance of __exit__, so `self` is
superfluous.
2023-06-14 17:40:16 +02:00
Joachim Wiberg 9e5cf13522 test: debug gh action
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-09 11:54:23 +02:00
Joachim Wiberg 0da9606644 test: infamy: raise exception if dut mgmt ip cannot be found
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-06-09 11:54:23 +02:00
Tobias WaldekranzandJoachim Wiberg 0fc720d48a test/infamy: Initial add of python based test library 2023-06-08 11:10:31 +02:00