Commit Graph
730 Commits
Author SHA1 Message Date
Mattias Walström addd89e07e test: dhcp: client_default_gw: Add longer timeout for test
This fix #1461
2026-03-31 12:26:46 +02:00
Joachim Wiberg cf08b577ed test: gps_simple: wait for full position data before has_fix()
has_fix() only checks that fix-mode is set (2d/3d), but altitude and
other fields may not yet be populated in the operational datastore when
gpsd is still processing its first NMEA cycles after boot.  Calling
verify_position() immediately after has_fix() passes can therefore race
and fail with:

  KeyError: 'altitude'

This manifests reliably on the second GPS receiver (gps1) after reboot,
because it is initialized slightly later than gps0 and hits the window
where fix-mode is set but altitude has not yet appeared.

  not ok 11 - Verify gps1 position is near the coordinates
  # Traceback (most recent call last):
  #   File "test/case/hardware/gps_simple/test.py", line 29, in verify_position
  #     alt = float(state["altitude"])
  #                 ~~~~~^^^^^^^^^^^^
  # KeyError: 'altitude'

Add has_position() to infamy/gps.py, which gates on fix-mode AND all
position fields (latitude, longitude, altitude, satellites-used) being
present.  Replace the has_fix() polls in both the pre- and post-reboot
verify steps with has_position().

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 17:05:36 +01:00
Joachim Wiberg 1c6c7724b9 test: iface_phys_address: use chassis MAC and add until() guards
Replace fragile SSH+jq approach for reading the chassis MAC with a
NETCONF query to ietf-hardware:hardware/component[name='mainboard'],
reading phys-address directly from the YANG model.

Also add until() polling to the chassis MAC and chassis+offset MAC
verification steps, consistent with the reset-to-default steps.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 16:18:17 +01:00
Joachim Wiberg 94a036be3a test/infamy: retry copy() on ConnectionError in restconf transport
A service restart triggered by finit during sysrepo callbacks can drop
an in-flight HTTP connection, causing copy("candidate", "running") to
fail with RemoteDisconnected.  Add retry logic consistent with the
existing PATCH retry pattern in put_config_dict().

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 16:18:17 +01:00
Joachim Wiberg 281f027749 test/infamy: wait for transport reachability after test_reset()
test_reset() triggers a config reload which causes services such as
rousette to restart.  Wait for the transport to become reachable again
before returning from attach(), preventing subsequent API calls from
racing with a still-restarting backend.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 16:18:16 +01:00
Joachim Wiberg abad3cedc6 confd: actually fix stratum-weight semantics and flaky test
The setting 'stratumweight 0.0' disables stratum in Chrony source
selection (pure distance-based), making client_stratum_selection
non-deterministic on a LAN.  Setting it to 1.0 gives srv1 a 1-second
effective advantage per stratum level, which no realistic distance
fluctuation can overcome.

Also correct the YANG descriptions in infix-system and infix-ntp which
had the semantics backwards — claiming 0.0 "ensures lower stratum is
always preferred" when in fact higher values do that.

Fixes #1361

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 16:18:15 +01:00
Mattias Walström f0b220b6e7 Followup OSPF point-to-multipoint
[skip ci]
2026-03-11 09:12:48 +01:00
Mattias Walström 312b856fba ospf: add point-to-multipoint and hybrid interface type support 2026-03-10 12:44:47 +01:00
Joachim Wiberg b9a8014e41 patches: lift iptables name length limit in firewalld
A legacy name length limit in firewalld triggered problems with longer
policy names.  This patch to firewalld lifts that limit by checking the
backend in use, no limit for nftables.

Fixes #1389

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:26:03 +01:00
Joachim Wiberg 09c649f0b3 test: update gps test spec.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:25:29 +01:00
Joachim Wiberg 982e610fef test: infamy: always emit the "1..N" plan line before exiting
Always emit the "1..N" plan line before exiting with error so test
harnesses don't report "test error, no plan" for failed or aborted
tests.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:25:29 +01:00
Joachim Wiberg a712fd5907 confd: new NTP setting stratum-weight
This patch adds support for chronyd's stratumpweight both in the NTP
client (ietf-system) and client+server (ietf-ntp) should fix the flaky
NTP stratum test.

Also, make sure to *not* 'rm -rf /etc/chrony/conf.d/*' in system.c to
prevent clobbering settings potentially made in ntp.c

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 18:03:15 +01:00
Mattias Walström 565a07a0b2 test: Add GPS test
Only possible to run on virtual Qemu instances right now.
2026-03-05 08:21:34 +01:00
Mattias WalströmandGitHub 082bcd1712 Revert "Upgrade buildroot to 2026.02.0" 2026-03-04 19:47:11 +01:00
Joachim WibergandGitHub 0bedde52d3 Merge pull request #1410 from saba8814/issue-782-dhcp-ntp-dns
Issue 782 dhcp ntp dns
2026-03-04 13:52:12 +01:00
Mattias Walström afa01489e6 test: Add parameter -j to watchdogctl
This is required to get the output as JSON data, since the upgrade
of buildroot (and watchdogd)
2026-03-04 11:45:04 +01:00
Joachim Wiberg b341d37267 Update URL from kernelkit.org to www.kernelkit.org
DNS does not allow CNAME records at an apex domain (e.g. kernelkit.org),
so GitHub Pages cannot reliably redirect kernelkit.github.io to it.  A
www subdomain can carry a CNAME pointing directly to kernelkit.github.io,
giving GitHub full control over the mapping and making the redirect work.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-01 06:59:48 +01:00
Mattias WalströmandGitHub f5ad6bc9ea Merge pull request #1415 from kernelkit/add-yang-check
Add yang check
2026-02-27 13:58:27 +01:00
Mattias Walström 5762c75727 test: Upgrade docker for GPS tests 2026-02-27 11:06:31 +01:00
Mattias Walström bb5240e48b test: usb: remove unused import 2026-02-27 11:06:31 +01:00
Mattias WalströmandJoachim Wiberg c4f24caa94 yanger: Adapt to new stricter pattern for publish 2026-02-27 08:35:21 +01:00
Joachim Wiberg a5c807abe0 test/infamy: make until() exception-safe
Any exception raised by fn() propagated immediately out of the retry
loop, effectively making until() a single-shot call the moment any
transient error occurred.

Fix by wrapping fn() in a try/except inside the loop and treating any
exception as a "not yet" result.  The last exception is preserved and
re-raised if all attempts are exhausted, so failure output is still
meaningful.  Also fix a missing newline at end of file.

Fixes #1403

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-26 19:05:43 +01:00
Joachim Wiberg b5a292d7dd test/infamy: catch TimeoutError in curl() to allow retries
Python's urllib.request wraps OSError in URLError during the connection
phase, but NOT during response reading (getresponse()).  This means a
timeout that fires after the TCP handshake completes, e.g. when a service
accepts the connection but hasn't sent a response yet, propagates as a
bare TimeoutError that bypasses the exception handler, killing the entire
until() retry loop on the first attempt.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-26 13:43:41 +01:00
Joachim Wiberg e63275d3a1 test: wait for multicast filter to bite
Also, update test description a bit.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:30 +01:00
Joachim Wiberg 2abee79c18 test: minor fix, missing format string
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:30 +01:00
Joachim Wiberg a844ba7d8c test: wait for static route before must_reach()
Not all systems are equally quick, let's give it while to set before
bailing out because we test too soon.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:29 +01:00
Joachim Wiberg e8c9c70e37 test: fix flaky tests, retry until()
In the ongoing campaign against load-bearing sleep() and pure luck.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-24 06:59:29 +01:00
Ejub Sabic 1a1d917cd6 test: add dhcp combination test and integrate into suite 2026-02-22 15:08:34 +01:00
Mattias Walström 51b0488e66 test: Return fail if make test fails
$? needs to be $$? inside a make rule to expand the
bash variable.
2026-02-21 12:23:04 +01:00
Joachim Wiberg d1659dbbc1 test: fix missing IPv6 forwarding on tunnel in tunnel_basic
Enable IPv6 forwarding on the left DUT's tunnel interface, matching
the IPv4 tunnel config.  Without it, IPv6 packets are not forwarded
through the tunnel, causing all tunnel_basic IPv6 tests to fail.

Regression introduced when fixing issue #515 in 717c1c0.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-05 08:50:22 +01:00
Joachim Wiberg 8973dc488b test: ensure result of tests is the exit code of the rule
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-05 08:50:22 +01:00
Joachim WibergandGitHub fe56591d8d Merge pull request #1379 from kernelkit/copilot/add-infix-keystore-documentation
Keystore refactor and documentation

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-03 08:09:05 +01:00
Joachim Wiberg 5ceda4569e confd: restore IETF standard keystore leaf types and NACM rules
Infix key format identities now derive from the IETF bases, so the standard
identityref accepts them without any need for deviations.  This also preserves
the nacm default rules, which were inadvertently dropped before.

Also rename format identities for generality:

 - wifi-preshared-key-format      -> renamed: 'passphrase-key-format'
 - wireguard-symmetric-key-format -> use IETF 'octet-string-key-format'

Since cleartext-symmetric-key is now type binary (base64-encoded), the
WiFi backends (station and AP) decode values before passing them to
wpa_supplicant and hostapd.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-02 17:50:07 +01:00
Joachim Wiberg 76bfd6c57f test: update test to verify container restart on env change
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-01 10:40:45 +01:00
Joachim Wiberg 4f876bc58e test: update nacm basic test spec.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-30 13:09:18 +01:00
Joachim Wiberg db0c6417b2 test: add IPv6 forwarding verification to routing-basic
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-30 13:09:14 +01:00
Joachim Wiberg 6932939525 statd: convert 'show ntp [opt]' tables to SimpleTable
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-25 02:27:37 +01:00
Mattias Walström e401c5a080 test: mdns: Add test for mDNS reflector 2026-01-23 13:05:34 +01:00
Mattias Walström 0d55ea46e0 infamy: sniffer: Wait for the capture to actually start in enter() 2026-01-23 13:05:34 +01:00
Joachim Wiberg f4d9bb6898 test: run 9pm report tool inside container
Ensure the 9pm report tool runs inside the container so that it has
permissions to write to the test/.log directory.  Then mark the log
directory as 777 when done so the ghmoon 'git clean -ffdx' can clean
it up when switching between jobs.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 09:47:56 +01:00
Joachim Wiberg b706f521b5 test: fix race condition in DHCP Server Multiple Subnets
Need to verify that client hostnames have been set before starting the
client, otherwise the test will fail due to clients getting pool lease,
which is intended.

In a real-world scenario this is not a problem. Here we've booby trapped
the server to try to trip up errors.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:26 +01:00
Joachim Wiberg 0376a83677 test: new case nacm-basic
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:26 +01:00
Joachim Wiberg ca2bf42c0a test/infamy: refactor, rename modname -> xpath
For consistency with netconf transport and general understanding.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:25 +01:00
Joachim Wiberg 7ac77b2eef test/infamy: add patch_config() for single operations on running
Used by the new NACM basic test to verify ACL rules on explicit XPaths
or modules.  For this we cannot rely on put_config_dict() since it now
uses the candidate datastore for all changes.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:25 +01:00
Joachim Wiberg a63f2474a2 test/infamy: Use PATCH for RESTCONF merge semantics
Switch RESTCONF from PUT to PATCH for configuration updates. This gives
RESTCONF the same merge behavior as NETCONF edit-config, allowing NACM
to correctly enforce path-specific permissions instead of requiring
write access to the entire datastore.

Fixes #617

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:25 +01:00
Joachim Wiberg 71384ff070 test/infamy: ensure residual state is cleaned up in dhcp server
Fixes #1344

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:24 +01:00
Joachim Wiberg b6a7d0f294 cli: new admin-exec level command 'show nacm'
Show operational details about nacm and user//group mappings.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-23 06:12:21 +01:00
Joachim Wiberg b58550367c sys: rename sys-cli -> sysrepo + klish
Previously the sys-cli group was for interactive shell access, but with
ever changing requirements this split has become necessary.

This commit introduces the 'sysrepo' group for low-level access to all
sysrepo commands, i.e., bootstrap only.  For user-level shell access a
'klish' group is added which allows users to connect to the CLI.  This
is now the only group users, including the default 'admin', are members
of, effectively making the new 'copy' tool the norm.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-22 22:44:14 +01:00
Joachim Wiberg d105178992 statd: resize 'show hardware' tables to match 'show system' width
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-18 23:30:20 +01:00
Joachim WibergandGitHub 26ecf48600 Merge pull request #1350 from kernelkit/change-dhcpv6-client
Migrate to odhcp6c for dhpcv6 client support
2026-01-11 09:26:51 +01:00