Commit Graph
794 Commits
Author SHA1 Message Date
Mattias Walström c6027b3f92 test: rip_multihop: Adapt to yangerd changes 2026-06-24 15:53:03 +02:00
Mattias Walström f6539e2238 test: ntp: client_stratum_selection: Adapt to yangerd behaviour 2026-06-24 15:53:03 +02:00
Mattias Walström d58b9f7fde test: ospf_default_route_advertise: Make test more robust
FRR can sometimes be pretty slow to actually install the route in
the kernel. Increase the timeout of must_reach.
2026-06-24 15:53:03 +02:00
Mattias Walström e3b252327a test: route_pref_ospf: Update test spec 2026-06-24 15:53:03 +02:00
Mattias Walström fe962682b3 test: ntp_client: Update test spec 2026-06-24 15:53:03 +02:00
Mattias Walström 6c6d4adf2d test: hostname: adapt to yanger 2026-06-24 15:53:03 +02:00
Mattias Walström ad90e18478 test: ospf_point_to_multipoint: Adapt to yanger 2026-06-24 15:53:03 +02:00
Mattias Walström 279dcc0e07 test: spec: Allow to generate test specification without logical topology 2026-06-24 15:53:03 +02:00
Mattias Walström aa7830c873 test: upgrade: add missing readme 2026-06-24 15:53:03 +02:00
Mattias Walström 1f186a3299 test: operational_all: Harden to catch more
- Test so the value in operational actually is correct
- Move test to last in suite to see that there are no stray
  data in operational (yangerd)
2026-06-24 15:53:03 +02:00
Mattias Walström 6d4c77ad2d test: upgrade: Adapt to yangerd 2026-06-24 15:53:03 +02:00
Mattias Walström 48e6549b45 test: route_pref_ospf: Adapt to yangerd 2026-06-24 15:53:03 +02:00
Mattias Walström 8903306a36 test: ospf_unnumbered_interface: Adapt to new yangerd 2026-06-24 15:53:03 +02:00
Mattias Walström 2d5dc3b7e5 test: veth_delete: Adapt to new yangerd
Operational is now not instantly availible, is some lag.
2026-06-24 15:53:03 +02:00
Mattias Walström 36fa20ebbb test: ntp_client: Adapt to new yangerd daemon 2026-06-24 15:53:03 +02:00
Mattias Walström a085cec850 test: stp_basic: Stabilize test
With the new yangerd it failed 100% of the times, but it could fail
before as well, but that whould be very rare. Wait until operational
has been updated.
2026-06-24 15:53:03 +02:00
Mattias Walström 231987ea2b tests: Adapt to new yangerd 2026-06-24 15:53:03 +02:00
Mattias Walström 434fb6df40 test: syslog: property_filter: Adapt to changes required by yangerd
The test got an unexpected input in one of its logs:

'May 22 11:18:32 test-00-03-00 yangerd[3677]: SIGHUP: triggering immediate re-poll'
limit the string grepping for to be more exact.
2026-06-24 15:53:02 +02:00
Mattias Walström da4f5922c1 test: upgrade: Add adaptions needed for yangerd 2026-06-24 15:53:02 +02:00
Mattias Walström 5b8adbc359 test: upgrade: Add adaptions needed for yangerd
Specially the change:
`
-            oper = target.get_dict("/system-state/software")
+            oper = target.get_dict("/ietf-system:system-state/software")
`
i feel is strange, since only the backend for sysrepo has changed, but the
new syntax is actually correct, unsure why it has worked before.
2026-06-24 15:53:02 +02:00
Mattias Walström 7ef6da59a7 test: iface_enable_disable: Simplify test 2026-06-24 15:53:02 +02:00
Mattias Walström 357d54e58f test: wireguard_roadwarrior: Adapt to the new polled world in yangerd 2026-06-24 15:53:02 +02:00
Mattias Walström 4ab7c8643c yangerd: fix stp status 2026-06-24 15:53:02 +02:00
Mattias Walström f6df3a8e74 test: usb: adapt to new yangerd 2026-06-24 15:53:02 +02:00
Mattias Walström a28e1d9150 test: containers: host_commands/test.py: Adapt to new yangerd
Slightly slower to detect changes
2026-06-24 15:53:02 +02:00
Mattias Walström 5ce26d407a test: case: ntp: Adapt tests for polled yangerd 2026-06-24 15:53:02 +02:00
Mattias Walström d40f1cf14b test: dhcp: server_subnets: Add longer timeout for polling
This since NTP status is polled in yangerd.
2026-06-24 15:53:02 +02:00
Mattias Walström 673253ba00 test: firewall: Make tests more robust 2026-06-24 15:53:02 +02:00
Mattias Walström 78dbaf983c test: system: Make tests more robust 2026-06-24 15:53:02 +02:00
Mattias Walström d277c0d0f3 firewall: simplify 2026-06-24 15:53:02 +02:00
Joachim Wiberg 674fd6c396 confd: allow both ends of a veth pair to be assigned to containers
Previously at least one end of a veth pair had to remain in the host
namespace, because that end created and destroyed the pair.  Assigning
both ends to containers left no one to create it.

Select a deterministic primary end so exactly one side creates the pair.
When the primary is itself a container interface, create the pair in the
host namespace before the container starts; CNI host-device then moves
each end into its container.  Teardown is deferred to the container
removal script so the pair does not linger and block re-creation.

Drop the now-obsolete limitation notes from the documentation and YANG,
and add a regression test connecting two containers over a veth pair.

Fixes: #941

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-20 19:26:22 +02:00
Joachim Wiberg ebc4ce1d90 test: firewall/basic, minor refactor
Refactor to use a dummy interface instead of wasting a dut.  This not
only simplifies the test but also increases test coverage on test rigs
with a single DUT.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-18 17:58:57 +02:00
Ejub Sabic be6d287b19 web: added update notification on web-ui
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-18 10:59:03 +02:00
Ejub Sabic 67ea7a74c1 feat: infix-schedule based on ietf-schedule implementation
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-18 10:22:35 +02:00
Joachim WibergandGitHub 19c820fac2 Merge pull request #1539 from kernelkit/web-test-check
Web test check
2026-06-17 15:33:27 +02:00
Joachim Wiberg 4d398bbf57 test: skip webui test when not available in build
Add conditional YANG feature 'web-ui' to infix-services.yang, set when
the webui is built.  This feature is what the test now looks for to
determine if it should be skipped or not.

Also, clean up remnant of old test, which was entirely replaced by
Mattias' login/csrf test.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-17 10:30:43 +02:00
Ejub ŠabićandGitHub 0c6d96f8a9 Merge pull request #1537 from saba8814/fix/flaky-dhcp-option-121-test
fix: flaky dhcp option 121 test
2026-06-16 11:50:03 +02:00
Ejub Sabic 473cda35bb fix: flaky dhcp option 121 test
This commit increases attempts on checks in this particular test from default 10 to 60.
This has been introduced to match worst case scenario where after 3 retries(5s) each dhcp waits 30 seconds before next 3 retries.
Commits yields to much more stable test behaviour.

Resolves: #1515

Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-16 08:39:40 +02:00
Joachim WibergandGitHub 227f1290fd Merge pull request #1457 from kernelkit/web 2026-06-15 22:58:44 +02:00
Joachim Wiberg f5c549f669 test: Add test for login flow in WebUI
Verify:

 - Unauthenticated GET /  -> 303 to /login
 - Bad-password rejection -> no session is created
 - Session cookie is flagged HttpOnly
 - Authenticated GET /interfaces -> 200
   - with htmx-config meta tag check
 - State-changing POST without CSRF token -> 403
 - POST with X-CSRF-Token header -> succeeds
 - After logout the session no longer grants access

The cookie-preserving WebUI helper class also folds in the IPv6
link-local zone-id workaround (re-encode %25 back to %) that
infamy.restconf already uses.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2026-06-15 21:02:16 +02:00
Mattias WalströmandGitHub ff96401ce2 Merge pull request #1530 from saba8814/test/xpath-coverage-heatmap
Added support for xpath coverage report generation
2026-06-15 16:50:38 +02:00
Ejub Sabic 9853e08145 test: Added xpath coverage report generation (make test)
This commit introduces xpath coverage test report. It plugs into transport layer of test system and generates .md report.
Commit also introduces "make xpath-coverage-report" used to generate pdf out of md.

Resolves: #581
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-15 12:26:51 +02:00
Joachim Wiberg f8f73b89cb statd: extend mount-points + advertised pmds per interface
- Include /run and /tmp in mount-points, likely more interesting than /.
- Include advertised link modes in operational to compare with supported

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-14 18:28:22 +02:00
Richard Alpe 76c314a23a test: render PDF report via 9pm report.py
The test-report target fed a pre-baked report.adoc to asciidoctor-pdf.
Let 9pm's report.py, the author of result.json, both generate and
render the report instead.  It is invoked with Infix's own theme, fonts
and logo so the output is unchanged; downstream projects need only
override LOGO to rebrand it.

Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-12 15:38:24 +02:00
Richard Alpe 187c19639f Bump 9pm submodule
Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-12 15:38:22 +02:00
Ejub Sabic a2f57bdd4d doc: add missing test doc for container basic test
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-09 08:58:18 +02:00
Joachim Wiberg 5286c16480 test: infamy: add optional argument to rpc/actions
For example setting DUT date-time using ietf-system RPC.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-04 13:35:02 +00:00
Mattias Walström 8e5d49665b test: Remove function put_config_dict and convert tests to use put_config_dicts
This fix #1237
2026-06-02 16:59:28 +02:00
Joachim Wiberg 65eb4c072a cli: tighten 'show interface' detail-view alignment
The Ethernet packet/RMON counters at the bottom of 'show interface
<name>' were appended with a wider label column than the operational
data above them, breaking visual alignment.  Group them under an
"Ethernet Statistics" section heading (Decore.title), same convention
as 'Available Networks' in the wifi scan view.

Narrow the operational-data label column from 20 to 19 chars so the
title bar exactly matches the heading text — a tighter and more
deliberately aligned look.  All labels in pr_iface fit within 19
chars except 'lacp system priority' (20); rename it to 'lacp sys
priority' for consistency with the other 'lacp ...' labels (lacp
aggregate id, lacp partner mac, ...) so the new field width works
universally.

Refresh CLI snapshots and doc samples to match.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-05-27 20:53:30 +02:00
Joachim Wiberg 7fa141178f cli: layered show interface, IEEE 802.3.2-2025 ethernet model
Import ieee802-ethernet-interface@2025-09-10.yang, from IEEE 802.3.2-2025,
and companion ieee802-ethernet-phy-type.yang, replacing the 2019 revision.
Operational interface speed moves to ietf-interfaces:speed, RFC 8343,
eth:speed is now obsolete.  Bump infix-interfaces.yang revision to track
the upgrade.

The CLI 'show interface' command renders interfaces as bottom-up layered
protocol rows.  Ethernet interfaces a new IEEE link-mode row (1000baseT,
10GbaseLR, ...) is added with 'duplex: full|half' in the DATA column.
Without link the ethernet row is the first row.  Tunnels and wifi follow
the same layering: gre/vxlan rows carry remote:/vni: tokens with optional
ethernet sub-row for the L2-bearing variants; wifi rows carry 'station' or
'access-point' ssid:, signal:, stations: tokens.

admin@bpi-76-8f-c2:/> show interface
⚑ INTERFACE   PROTOCOL      STATE       DATA
⇅ lo          loopback      UP
              ipv4                      127.0.0.1/8 (static)
              ipv6                      ::1/128 (static)
⇅ br0         bridge        DOWN
  │           ethernet                  32:2e:3f:76:8f:c2
  │           ipv4                      192.168.0.1/24 (static)
⇅ ├ lan0      bridge        LOWER-DOWN
⇅ ├ lan1      bridge        LOWER-DOWN
⇅ ├ lan2      bridge        LOWER-DOWN
⇅ └ lan3      bridge        LOWER-DOWN
⇅ gre0        gre           UP          remote: 198.51.100.7
              ipv4                      10.255.0.1/30 (static)
⇅ sfp1        ethernet      DOWN        ca:59:f0:77:80:5b
⇅ wan         1000baseT     UP          duplex: full
              ethernet                  32:2e:3f:76:8f:c2
              ipv4                      192.168.0.235/24 (dhcp)
              ipv6                      fe80::302e:3fff:fe76:8fc2/64 (link-layer)
⇅ wan.10      vlan          UP          vid: 10
  │           ipv4                      10.0.10.1/24 (static)
  └ wan
⇅ wan.10.20   vlan          UP          vid: 20
  │           ipv4                      10.0.10.20/28 (static)
  └ wan.10
⇅ wifi0       wifi          UP          station ssid: corp-net signal: good
              ethernet                  dc:a6:32:00:11:22
              ipv4                      192.168.7.42/24 (dhcp)

yanger populates phy-type and pmd-type from a static ETHTOOL link-mode
identity table keyed on (port, speed, duplex).  Both leaves are populated
for unambiguous media (copper, DAC, copper-T); for generic fiber where
the (port, speed, duplex) tuple can map to multiple PMDs (SR vs LR vs
ER, etc.) only the phy-type family identity is emitted — guessing the
PMD would be misleading.  cli_pretty prefers pmd-type (specific) and
falls back to phy-type (family) for display.

yanger also emits ietf-interfaces:speed and fixes a long-standing
'auto-negotation' typo (yanger had never matched ethtool's correctly-
spelled JSON field, so operational auto-negotiation always read
'unknown').

Filling the WG's gap on fixed-speed config
------------------------------------------

IEEE Std 802.3.2-2025 obsoleted the eth:speed leaf without providing a
config-true replacement; the standards-correct way to express what
older Infix configurations called 'fixed speed' is to restrict the set
of PMDs auto-negotiation may advertise.  Augment auto-negotiation with
two leaf-lists:

  auto-negotiation/advertised-pmd-types  config-true,  leaf-list of pmd-type
  ethernet/supported-pmd-types           config-false, leaf-list of pmd-type

Pinning a port to a single mode is now expressed as a single-entry
advertised-pmd-types list.  The kernel-supported set is exposed as
operational state for diagnosis — SFP/SFP+ cages report the inserted
module's capabilities, narrowing the list to a single PMD when the
optic only supports one mode (as suggested by @wkz in PR review).
When the supported list collapses to a single entry, yanger uses it
to refine the operational pmd-type leaf — more accurate than the
(port, speed, duplex) lookup for fiber.

confd C apply path (src/confd/src/ieee802-ethernet-interface.c)
translates each advertised pmd-type identity to the corresponding
ETHTOOL_LINK_MODE_*_BIT_*, ORs them into a mask, and emits
'ethtool --change <if> autoneg on advertise 0x<mask>'.  An empty
list keeps the historical default of advertising every supported
mode.  The (legacy) 'auto-negotiation/enable = false' + speed/duplex
branch is removed — it has no model representation any more.

cli_pretty's detail view gains 'advertised' and 'supported' rows
listing the PMDs in each set.  A new _pr_label_list() helper unifies
multi-row rendering across these new rows and the pre-existing
ipv4/ipv6 address rows.

The detailed interface view also gains a 'link mode' row carrying the
pmd-type / phy-type-derived label.

Migration of existing startup configurations
--------------------------------------------

Bump confd version 1.8 → 1.9 to trigger the migration on upgrade.
share/migrate/1.9/10-ethernet-advertise.sh translates old configs of
the form

  ethernet { auto-negotiation { enable false; } speed S; duplex D; }

into

  ethernet { auto-negotiation { advertised-pmd-types [PMD]; } duplex D; }

mapping (S, D) → PMD via a static lookup covering the copper-T speeds
the deprecated speed leaf historically supported (10/100/1000/2.5G/
5G/10G).  Interfaces that don't disable auto-negotiation, or that
lack a speed leaf, are passed through untouched.

Closes #530
Closes #805

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-05-27 20:53:29 +02:00