Commit Graph

91 Commits

Author SHA1 Message Date
Petr Štetiar
0d7897408c
ci: testbed: labgrid: bump OSPv2 login_timeout for lcm_data reformat
The lcm_data cleanup erases the first 0x400 blocks (the ext4 filesystem
metadata) of the lcm_data partition in U-Boot, so on the next boot the
block-mount layer finds a bad superblock on /lcm (mmcblk0p16, a ~3 GiB
partition on OSPv2) and runs a full mke2fs before it can be mounted:

  e2fsck: Bad magic number in super-block while trying to open /dev/mmcblk0p16
  mount: mounting /dev/mmcblk0p16 on /lcm failed: Invalid argument
  mke2fs 1.47.0 (5-Feb-2023)
  Creating filesystem with 786432 4k blocks and 196608 inodes

That reformat is the whole point (it is what keeps /lcm clean between CI
runs), but it adds enough boot time to push the login prompt just past
the ShellDriver default login_timeout of 60s on the OSPv2 (mxl25641-hdk-6)
eMMC target, which has no override, so board bringup fails with:

  pexpect.exceptions.TIMEOUT: Timeout of 60 seconds exceeded during waiting for login

Bump the OSPv2 login_timeout to 80s, which is enough headroom to absorb
the reformat on top of its usual boot while still failing bringup fast on
a genuinely dead board. The Freedom (wnc-freedom) eMMC target keeps its
own 120s, which reflects its longer/different boot time expectations
rather than the lcm_data reformat.

Fixes: 5432e4a864 ("ci: testbed: labgrid: restore lcm_data cleanup dropped by FEAT-29 flow")
Fixes: CI-2
References: PPW-718
Link: https://gitlab.com/prpl-foundation/prplos/prplos/-/jobs/15140103104#L697
Assisted-by: claude:opus-4-8:1m-context
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-07-02 07:30:07 +02:00
Petr Štetiar
5432e4a864
ci: testbed: labgrid: restore lcm_data cleanup dropped by FEAT-29 flow
The FEAT-29 update_prpl conversion switched both the Freedom (wnc-freedom)
and OSPv2 (mxl25641-hdk-6) eMMC flash flows to erase only the rootfs_data
overlay, and in doing so dropped the lcm_data partition cleanup that
PPW-718 had introduced. The persistent /lcm (lcm_data) partition is not
cleared between CI runs, so stale containers from a previous test survive
the reboot/flash procedure and make the LCM cram suite non-idempotent.

So lets restore the cleanup by erasing the first 0x400 blocks (the eMMC
erase-group size, i.e. just the ext4 filesystem metadata, not the whole
multi-GiB partition) of lcm_data right after the rootfs_data erase, so
every refresh starts from a clean /lcm. The offsets are taken from each
board's current prpl Standard Flash Layout GPT, verified live in U-Boot:

  Freedom (IPQ9574#):
   28	0x00134022	0x00534021	"lcm_data"
   29	0x00534022	0x00574021	"rootfs_data"

  OSPv2 (Lightning #):
   14	0x00086c00	0x00096bff	"rootfs_data"
   16	0x000a6c00	0x006a6bff	"lcm_data"

Fixes: CI-2
References: 78b11d2d5b ("ci: testbed: labgrid: flash OSPv2 and Freedom via FEAT-29 update_prpl")
References: PPW-718
Assisted-by: claude:opus-4-8:1m-context
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-07-01 20:35:54 +02:00
Petr Štetiar
4fb886cf4d ci: testbed-01: add Nokia Valyrian labgrid bits for initramfs based boot
Nokia Valyrian board should be integrated into the testbeds, so lets add
labgrid support bits for initramfs based boot into testbed-01 for the
start.

References: PCF-2338
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
Signed-off-by: Peter Steinhaeuser <ps@embedd.com>
2026-07-01 15:05:53 +01:00
Petr Štetiar
78b11d2d5b
ci: testbed: labgrid: flash OSPv2 and Freedom via FEAT-29 update_prpl
Switch the OSPv2 (mxl25641-hdk-6) and Freedom (wnc-freedom) eMMC flash
flow to the FEAT-29 U-Boot update script, replacing the legacy OSPv2
update_fullimage path and the Freedom untar/flash sysupgrade path. This
exercises the image/update tooling introduced in prplos!1964.

The flow tftpboots the per-board update_script.itb, sources it and runs
update_prpl against the FEAT-29 OS artifacts:
- OSPv2: PRPL_OSP_v2-wgrtd159be_b_wav700-ext4.img (4G variant)
- Freedom: prpl_freedom-kernel.itb + prpl_freedom-rootfs.itb

update_rescue_bank is set to yes so both OS banks carry the same image
and a bank failover cannot boot a stale rootfs. U-Boot/RBE/XBL/SMD are
left unset: those are one-time migration inputs and must not be
reflashed on every refresh. Boards are expected to already be on the
prpl flash layout. Hand-off to Linux uses run bootcmd (bootprpl/bootipq)
instead of reset, which avoids a power cycle and the labgrid autoboot
re-interrupt hazard.

init_command_timeout bounds the whole init_commands sequence and is set
deliberately tight, per board, so a network/perf regression (e.g. image
TFTP throughput roughly halving) trips the timeout instead of silently
passing, while still absorbing TFTP first-packet jitter. Validated runs
executed the init_commands in:
- OSPv2:   ~30s (update_script TFTP ~10s + update_prpl ~18s)   -> 60s
- Freedom: ~37s (sleep 5 + update_script TFTP ~3.5s + update_prpl ~24s,
                 two images to both banks)                     -> 75s

The rootfs_data overlay is erased before update_prpl so every refresh
boots from a clean overlay; update_prpl itself leaves rootfs_data
untouched. The block offsets are hardcoded from each board's GPT because
the target U-Boot has no part command to derive them:
- OSPv2:   mmc erase 0x86c00 0x10000   (32 MiB, UPDK 9.2.0)
- Freedom: mmc erase 0x534022 0x40000  (128 MiB)

Because update_prpl needs both the update script and the OS image over
TFTP, generalise the testbed/cdrouter firmware copy to a list via the
new TFTP_IMAGE_FILENAMES variable (falling back to TFTP_IMAGE_FILENAME),
rather than overloading TFTP_IMAGE_UNPACK_COMMAND. The Freedom testbed
job now drives the wnc-freedom-emmc target instead of initramfs, so the
now-unused wnc-freedom-initramfs labgrid target is dropped.

Flip the wnc-freedom and mxl25641-hdk-6 testbed runner tags to the -sfl
variant (dut-wnc-freedom-sfl, dut-mxl25641-hdk-6-b-sfl), to make it
clear, that those devices are converted to the prpl Standard Flash
Layout.

References: FEAT-29
Closes: PCF-2644, PCF-2645
Assisted-by: claude:opus-4-8:1m-context
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-06-23 10:57:09 +02:00
Petr Štetiar
e266163bea ci: cdrouter: switch USP testing from STOMP to MQTTv5 as primary MTP
Currently all CDRouter USP protocol tests in prplOS use STOMP MTP
(100%). This no longer matches the FEAT-63 delivery plan and industry
adoption.

MQTTv5 should become the default MTP for the majority of CDRouter test
runs, while keeping WebSocket and STOMP coverage in some jobs as smaller
regression slices.

So lets switch the shared template to MQTTv5 by default, parameterising
the shipped CDRouter configs instead of cloning them, and adding guarded
DUT init helpers that stop obuspa, install the requested reset file,
clear /etc/obuspa.db, start obuspa again, and wait for the USP data
model to come back.

Use the existing job matrix to keep protocol coverage aligned with the
agreed distribution:

 - Wireless smoke tests use WebSocket
 - prplOS Network Test Plan Candidate jobs use WebSocket
 - IPv6 Top-100+mDNS VLAN jobs use STOMP
 - all remaining jobs use MQTTv5
 - MQTTv3 stays out of scope

References: PCF-1323, PCF-2322
Assisted-by: codex:gpt-5.4:xhigh
Assisted-by: claude:opus-4-6:1m-context
Co-developed-by: Sergio Panseri <sergio.panseri@consult.red>
Co-developed-by: Piotr Nakraszewicz <piotr.nakraszewicz@consult.red>
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-04-21 16:00:15 +01:00
Petr Štetiar
1c5278d464 ci: testbed: migrate CDRouter packages from .gz exports to YAML
Currently all 16 CDRouter test packages are stored as opaque .gz
binary exports that cannot be reviewed, diffed, or maintained as
code. The .gz format carries implicit runtime fields (config_id,
device_id, schedule, agent_id) that do not belong in version
control.

So lets add unversioned YAML manifests for all 16 packages
converted from their .gz source files using
cdrouter-package-convert.py, and remove all .gz binary artifacts
from the repository. Each manifest contains name, description,
and tests in original order. Options use the compact form where
only non-default overrides are present (2 of 16 packages have
explicit options; the remaining 14 use CDRouter defaults
entirely).

All 16 packages passed round-trip fidelity verification:

  CDRouter-IPv6-Top-100, CDRouter-IPv6-Top-100+mDNS,
  CDRouter-IPv6-Top-100+mDNS+dslite, CDRouter-Top-100,
  CDRouter-Top-100+mDNS, CDRouter-Top-100+mDNS-OSP,
  CDRouter-TR-069, CDRouter-UPnP-IPv46,
  CDRouter-UPnP-IPv46-Failing, CDRouter-USP-prpl,
  CDRouter-Wireless, CDRouter-Wireless-OSPv1,
  prpl-Certification, prplWare-Smoke-Test-Suite,
  prplOS-Network-Test-Plan-Candidate-v1.2.0,
  prplOS-Network-Test-Plan-Mandatory-v1.2.0

References: PCF-2533
Assisted-by: codex:gpt-5.4:xhigh
Assisted-by: claude:opus-4-6:1m-context
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-04-21 16:00:15 +01:00
Petr Štetiar
6bc69fde54 ci: scripts: add CDRouter .gz to YAML package converter
Currently CDRouter test packages are stored as opaque .gz binary
exports in .testbed/cdrouter/packages/. These binary blobs are not
human-readable, not diffable, and carry implicit fields that leak
runtime state into the repository.

So lets add a converter script that reads the two-line JSON format
inside .gz exports and emits clean unversioned YAML manifests. The
converter extracts name, description, testlist (as tests), and
options from each .gz file. By default it compacts the options map
by omitting keys matching known CDRouter defaults, keeping only
semantic overrides. The --preserve-all-options flag emits the full
source options map when needed.

Fidelity verification expands both source and generated options
with known defaults before comparison, so compact manifests with
omitted defaults still pass. Testlist order is compared exactly.
The converter rejects packages where the internal name does not
match the .gz filename.

CLI supports --input-dir, --output-dir, --filter, --dry-run,
--overwrite, --preserve-all-options, and --verbose flags. Exits
non-zero if any package fails fidelity.

References: PCF-2531, PCF-2535
Assisted-by: codex:gpt-5.4:xhigh
Assisted-by: claude:opus-4-6:1m-context
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-04-21 16:00:15 +01:00
Petr Štetiar
59ef62862b
PROVISORY: testbed: wnc-freedom: workaround longer boot times with ATH13.1CS
Changes in !1920 (c66bc572) introduced issues with longer boot times.
CI tests failed because the board was not ready within the 80 second
timeout.

  pexpect.exceptions.TIMEOUT: Timeout of 80 seconds exceeded during waiting for login

Increase login_timeout by 40 seconds (from 80s to 120s) for both
wnc-freedom-initramfs and wnc-freedom-emmc targets to accommodate
the longer boot times.

References: PCF-2346
Link: https://gitlab.com/prpl-foundation/prplos/prplos/-/jobs/12946876755#L73
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-03-06 16:20:02 +01:00
Petr Štetiar
69cb220a00 ci: testbed-01: labgrid: hook in new Papouch Quido relay board
Currently testbed-01 labgrid still controls power via the SSH-based
ExternalPowerDriver, which became unreliable around the time we replaced
the faulty relay board and can leave multiple DUTs powered at the same
time.

So lets update the testbed-01 labgrid config to use the new Papouch
Quido relay board via Modbus/TCP, following the pattern already used in
testbed-02.

Closes: PCF-2361
References: PCF-2003
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-02-10 20:02:20 +00:00
Petr Štetiar
fcfef4c496 ci: release,testbed: OSPv2: make firmware filenames UPDK 9.2.3 compliant
Update references to OSPv2 image names in YAML configurations to match
the new naming convention, which was introduced in UPDK 9.2.3, providing
single build for both A-Step and B-Step OSPv2 hardware revisions.

New A-Step: prplos-intel_x86-lgm-PRPL_OSP_v2-tb341_wav700_fullimage.fit
New B-Step: prplos-intel_x86-lgm-PRPL_OSP_v2-wgrtd159be_b_wav700_fullimage.fit

References: PCF-2202
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-01-29 10:46:42 +00:00
Petr Štetiar
fe95746263 ci: remove support for urx851-hdk-3 board
OSPv1 board was removed quite some time ago and replaced with OSPv2
successor, so lets cleanup the CI bits a bit to keep the tree tidy.

References: PCF-1134
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-01-23 10:45:05 +00:00
Petr Štetiar
bf021278cb ci: cdrouter: add prplOS Network Test Plan v1.2.0 tests
prplOS Network Functionality Test Plan v1.2.0 added following prplOS
4.1.0 mandatory tests which were enabled in Mandatory package and
removed from Candidate package.

 * 1.2.10
 * 1.2.25
 * 1.2.27
 * 1.2.28
 * 1.3.7
 * 1.4.2
 * 1.4.3
 * 1.4.4
 * 1.5.4
 * 1.5.5
 * 1.5.6
 * 1.5.7
 * 1.5.14
 * 1.5.15
 * 1.5.16
 * 1.5.17

Test plan packages v1.1.0 are being removed as they're not being used
anymore.

prplOS Network Test Plan timeout was increased to 1h 45min as the test
runtime increased to 1h 40min, 5 min is kept as buffer. The prplOS
Network Test Plan v1.2.0 mandatory tests require more time to complete
than the previous 70 minute timeout allowed. Candidate tests are
shorter, approx. 47 minutes on average, so having 52 minute timeout.

Closes: PCF-2275
Link: https://prplfoundation.org/wp-content/uploads/prplOS-Network-Functionality-Test-Plan-v1.2.0.pdf
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-01-23 10:45:05 +00:00
Petr Štetiar
718375e0a6
ci: cdrouter: wireless: migrate LAN interface to NTA-3000
We've upgraded CDRouter hardware from legacy NTA-1000 hardware platform
to the new NTA-3000 hardware platform.

Some of the network interface names changed, so we need to update
network interface names of the NTA1000 to match the corresponding
interface on the new NTA3000 platform.

References: PCF-2267
Link: https://support.qacafe.com/cdrouter/hardware/cdrouter-backup-and-restore-tools/#nta1000---nta3000-interface-mapping-table
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-12-29 06:19:05 +00:00
Petr Štetiar
7310621934
ci: switch testing from OSPv2 A-Step board to B-Step board
Since OSPv2 B-Step devices are de-facto a standard devices currently
being sold, it was decided to start using them for testing in prplOS CI
instead of current OSPv2 A-Step boards.

References: PCF-2200
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-11-16 15:54:32 +00:00
Petr Štetiar
80e047a824 ci: labgrid: wnc-freedom: fix failing login prompt detection by increasing timeout
It seems, that recent changes in init scripts are causing different
behavior of serial console, thus the current timeout of 75s for login
prompt detection is not enough anymore:

   File "/usr/local/lib/python3.7/dist-packages/labgrid-0.4.1.dev239+g1ca30de-py3.7.egg/labgrid/driver/shelldriver.py", line 210, in _await_login
     raise TIMEOUT(f"Timeout of {self.login_timeout} seconds exceeded during waiting for login")  # pylint: disable=line-too-long
   pexpect.exceptions.TIMEOUT: Timeout of 75 seconds exceeded during waiting for login

Currently it needs 77s:

  expect state='stop', result=(0, b"crond[5305]: crond (busybox 1.36.1) started, log level 5\r\ncrond[5305]: ignoring file 'logrotate' (no such user)\r\n\r\n", <re.Match object; span=(115, 130), match=b'root@prplOS:~# '>, b'root@prplOS:~# '), duration=0.004
   _await_login state='stop', duration=77.550

So lets increase the timeout to 80s.

References: PCF-1990, FEAT-67
Link: https://gitlab.com/prpl-foundation/prplos/prplos/-/jobs/11649231947
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-27 19:13:58 +01:00
Petr Štetiar
85f379b696 ci: testbed: OSPv2: cleanup LCM data partition during flashing
There is now dedicated LCM data partition mounted under /lcm which is
not cleared up after each test, thus containers used in previous tests
persist during the DUT reboot and flashing procedure, violating test
imdepotence and making consecutive test fail.

So lets fix it by clearing up the LCM data partition during DUT firmware
flashing procedure, clearing just ext4 filesystem metadata, not erasing
complete 3 GiB and saving some time.

 16     0x000a6c00      0x006a6bff      "lcm_data"
        attrs:  0x0000000000000000
        type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
        guid:   777a7bb0-4d48-4b39-8cc1-da40d9f28205

The 0xa6c00 is the starting eMMC block of that partition and 0x400 is
eMMC erase group size, thus minimal size we can erase.

Reported-by: Matthias Franck <matthias.franck@softathome.com>
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-12 11:20:32 +02:00
Petr Štetiar
fc5eedd76a
ci: cdrouter: add prplOS Network Test Plan v1.1.0 Candidate tests
We need to make sure, that prplWare passes prplOS Network Test Plan
certification test suite. We've added separate test package with
Mandatory test cases, but we should be able to test as well the
remaining, currently Optional or Privisionary Excluded test cases, so we
get the test results and work towards making all of them Mandatory.

The test package contains only mandatory tests from the test plan, so 64
tests:

prplos.1.1.1, prplos.1.1.2, prplos.1.1.8, prplos.1.1.9, prplos.1.1.10,
prplos.1.1.11, prplos.1.1.12, prplos.1.1.13, prplos.1.2.10,
prplos.1.2.20, prplos.1.2.21, prplos.1.2.22, prplos.1.2.23,
prplos.1.2.24, prplos.1.2.25, prplos.1.2.27, prplos.1.2.28,
prplos.1.2.30, prplos.1.3.4, prplos.1.3.5, prplos.1.3.6, prplos.1.3.7,
prplos.1.3.9, prplos.1.3.11, prplos.1.3.14, prplos.1.3.15,
prplos.1.3.16, prplos.1.3.18, prplos.1.3.19, prplos.1.3.20,
prplos.1.3.21, prplos.1.3.22, prplos.1.3.23, prplos.1.3.24,
prplos.1.3.25, prplos.1.3.26, prplos.1.3.27, prplos.1.4.2, prplos.1.4.3,
prplos.1.4.4, prplos.1.5.4, prplos.1.5.5, prplos.1.5.6, prplos.1.5.7,
prplos.1.5.14, prplos.1.5.15, prplos.1.5.16, prplos.1.5.17,
prplos.1.5.18, prplos.1.5.19, prplos.1.6.1, prplos.1.6.2, prplos.1.6.6,
prplos.1.6.7, prplos.1.6.8, prplos.1.6.13, prplos.1.6.15, prplos.1.6.19,
prplos.1.6.24, prplos.1.6.25, prplos.1.6.26, prplos.1.6.27,
prplos.1.6.28, prplos.1.6.29

References: PCF-1609
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-11 13:54:15 +00:00
Petr Štetiar
72bbfce2a4
ci: cdrouter: prplos-certification: fix prplOS.1.4.9: DNS Proxy with Router Advertisement
Currently we're seeing prplOS.1.4.9 test failure which is happening due
to disabled config options:

 * ipv6WanRDNSS - This option enables or disables the IPv6 RDNSS option
                  for router advertisements on the WAN. When set to yes, CDRouter will
                  announce the configured IPv6 DNS servers using the RDNSS option in
                  router advertisements.

 * ipv6WanDNSSL - This option enables or disables the IPv6 DNSSL option
                  for router advertisements on the WAN. When set to yes, CDRouter will
                  announce the domain name, as configured by the testvar wanDomainName,
                  using the DNSSL option in router advertisements.

So lets fix it by enabling those config options.

References: PPW-362
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-11 13:54:14 +00:00
Petr Štetiar
c9e14b80e7
ci: cdrouter: provide configuration for prplOS Network Test Plan
We need to make sure, that prplWare passes prplOS Network Test Plan
certification test suite and for that we need to configure CDRouter and
DUT.

CDRouter config changes in new prplos-certification config:

 * ipv6WanMode was changed from autoconf to DHCP
 * ipv6LanMode was changed from autoconf to DHCP

DUTs are being dynamically configured with following datamodel
configuration:

 * DHCPv6Client.Client.wan.RequestAddresses=1 so DUT requests IA_NA
 * RouterAdvertisement.InterfaceSetting.lan.AdvManagedFlag=1 so CDRouter
   can start DHCPv6 client

    - WARNING(lan): The Mbit in the last router advertisement is set to 0 indicating that DHCPv6 is not allowed
    - WARNING(lan): Cannot start DHCPv6 client

References: PCF-1609
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-11 13:54:13 +00:00
Petr Štetiar
e6546c2347
ci: cdrouter: create prplos-certification from generic-ipv6 test
We need to create a new configuration for prplOS Certification testing,
so lets start from generic-ipv6 config, so the CDRouter configuration
changes needed for prplOS Certification tests are visible in the next
Git commit (diff).

References: PCF-1609
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-11 13:54:12 +00:00
Petr Štetiar
3b134e421c
ci: cdrouter: add mandatory prplOS Network Test Plan v1.1.0 tests
We need to make sure, that prplWare passes prplOS Network Test Plan
certification test suite. So lets add a new `certification tests` stage
with a new prplOS-Network-Test-Plan-Mandatory-v1.1.0 CI test job which
should help us QA this.

The test package contains only mandatory tests from the test plan, so 63
tests:

 prplos.1.1.3, prplos.1.1.4, prplos.1.1.5, prplos.1.1.6, prplos.1.1.7,
 prplos.1.2.1, prplos.1.2.2, prplos.1.2.3, prplos.1.2.4, prplos.1.2.5,
 prplos.1.2.6, prplos.1.2.7, prplos.1.2.8, prplos.1.2.9, prplos.1.2.11,
 prplos.1.2.12, prplos.1.2.13, prplos.1.2.14, prplos.1.2.15,
 prplos.1.2.16, prplos.1.2.17, prplos.1.2.18, prplos.1.2.19,
 prplos.1.2.26, prplos.1.2.29, prplos.1.3.1, prplos.1.3.2, prplos.1.3.3,
 prplos.1.3.8, prplos.1.3.10, prplos.1.3.12, prplos.1.3.13,
 prplos.1.3.17, prplos.1.4.1, prplos.1.4.5, prplos.1.4.6, prplos.1.4.7,
 prplos.1.4.8, prplos.1.4.9, prplos.1.5.1, prplos.1.5.2, prplos.1.5.3,
 prplos.1.5.8, prplos.1.5.9, prplos.1.5.10, prplos.1.5.11, prplos.1.5.12,
 prplos.1.5.13, prplos.1.6.3, prplos.1.6.4, prplos.1.6.5, prplos.1.6.9,
 prplos.1.6.10, prplos.1.6.11, prplos.1.6.12, prplos.1.6.14,
 prplos.1.6.16, prplos.1.6.17, prplos.1.6.18, prplos.1.6.20,
 prplos.1.6.21, prplos.1.6.22, prplos.1.6.23

References: PCF-1609
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-11 13:54:10 +00:00
Petr Štetiar
fad852247f
ci: cdrouter: prplWare-Smoke-Test-Suite: add 7 new UPnP tests
To increase QA of UPnP/IGD stack, lets add following new 7 smoke tests with approx. runtime of 66 seconds.

+----------+-----------------------+----------------------------------------------------------------------------------------+
| Duration | Test Name             | Description                                                                            |
+----------+-----------------------+----------------------------------------------------------------------------------------+
| 1        | cdrouter_upnp_igd2_30 | Verify UPnP GetExternalIPAddress Action returns WAN IP address (IGD2)                  |
| 1        | ipv6_upnp_igd2_230    | Verify router responds to UPnP GetFirewallStatus action (IGD2, IPv6)                   |
| 2        | ipv6_upnp_igd2_10     | Verify XML description of IGD root device can be parsed (IGD2, IPv6)                   |
| 4        | cdrouter_upnp_igd2_45 | Verify UPnP Router rejects new port mappings that conflict (IGD2)                      |
| 5        | cdrouter_upnp_45      | Verify UPnP Router rejects new port mappings that conflict                             |
| 27       | ipv6_upnp_igd2_300    | Add/delete dynamic UPnP TCP port mapping for wildcard IPv6 source address (IGD2, IPv6) |
| 27       | ipv6_upnp_igd2_302    | Add/delete dynamic UPnP port mapping for wildcard IPv6 source address (IGD2, IPv6)     |
+----------+-----------------------+----------------------------------------------------------------------------------------+

References: FEAT-13, FEAT-85
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
Co-authored-by: Nikolai Merinov <n.merinov@inango-systems.com>
Co-authored-by: Timothy Winters <tim@qacafe.com>
2025-10-08 20:18:55 +00:00
Petr Štetiar
a144fe12cf
ci: cdrouter: add CDRouter-UPnP-IPv46-Failing with currently failing UPnP tests
In CDRouter-UPnP-IPv46 we've now all passing UPnP tests from both upnp
and upnp-v6 modules, which are known to be working as of today.

From the list of available 111 tests in CDRouter version 15.8.1 in both
upnp-v6.tcl (60) and upnp.tcl(51) modules we've removed following 30
tests currently known to be not failing:

  cdrouter_upnp_203, cdrouter_upnp_204, cdrouter_upnp_220,
  cdrouter_upnp_igd2_203, cdrouter_upnp_igd2_204, cdrouter_upnp_igd2_220,
  ipv6_upnp_35, ipv6_upnp_36, ipv6_upnp_40, ipv6_upnp_41, ipv6_upnp_45,
  ipv6_upnp_50, ipv6_upnp_100, ipv6_upnp_203, ipv6_upnp_204,
  ipv6_upnp_220, ipv6_upnp_igd2_20, ipv6_upnp_igd2_25, ipv6_upnp_igd2_35,
  ipv6_upnp_igd2_36, ipv6_upnp_igd2_40, ipv6_upnp_igd2_41,
  ipv6_upnp_igd2_45, ipv6_upnp_igd2_50, ipv6_upnp_igd2_100, ipv6_upnp_igd2_200,
  ipv6_upnp_igd2_203, ipv6_upnp_igd2_204, ipv6_upnp_igd2_220,
  ipv6_upnp_igd2_307

So lets introduce a new CDRouter-UPnP-IPv46-Failing package, with the
above mentioned failing tests (29) which would allow us tracking the
potentially remaining bits which needs to be fixed.

Link: https://support.qacafe.com/cdrouter/knowledge-base/upnp-testing-guide
References: PCF-720, PPW-336, FEAT-85, FEAT-244
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-10-08 20:18:54 +00:00
Petr Štetiar
587158c13d
ci: cdrouter: CDRouter-UPnP-IPv46: enable only tests which are passing
We're currently using just a subset of UPnP test cases as being
available in CDRouter via PCF-720.

We need to increase the QA of UPnP, so lets add complete upnp and
upnp-v6 modules, which are known to be working as of today. From the
list of available 111 tests in CDRouter version 15.8.1 in both upnp-v6.tcl
(60) and upnp.tcl(51) modules we're removing following 30 tests currently known
to be not passing:

 cdrouter_upnp_203, cdrouter_upnp_204, cdrouter_upnp_220,
 cdrouter_upnp_igd2_203, cdrouter_upnp_igd2_204, cdrouter_upnp_igd2_220,
 ipv6_upnp_35, ipv6_upnp_36, ipv6_upnp_40, ipv6_upnp_41, ipv6_upnp_45,
 ipv6_upnp_50, ipv6_upnp_100, ipv6_upnp_203, ipv6_upnp_204,
 ipv6_upnp_220, ipv6_upnp_igd2_20, ipv6_upnp_igd2_25, ipv6_upnp_igd2_35,
 ipv6_upnp_igd2_36, ipv6_upnp_igd2_40, ipv6_upnp_igd2_41,
 ipv6_upnp_igd2_45, ipv6_upnp_igd2_50, ipv6_upnp_igd2_200, ipv6_upnp_igd2_203,
 ipv6_upnp_igd2_204, ipv6_upnp_igd2_220, ipv6_upnp_igd2_307

So we can regression test UPnP stack in current state and thus improve the QA.

Cap the CI job runtime to 60 minutes as currently it seems, that it
takes around 53 minutes to complete.

References: PCF-720, PPW-336, FEAT-85, FEAT-244
Link: https://support.qacafe.com/cdrouter/knowledge-base/upnp-testing-guide
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
Co-authored-by: Nikolai Merinov <n.merinov@inango-systems.com>
2025-10-08 20:18:53 +00:00
Sergio Panseri
6091dfe159 ci: cdrouter: enable testing of TR-069 over TLS v1.3
We now have proper TLS support, configuration and certificates in the
system and tr069-manager, so lets switch all CDRouter tests to TR-609
over TLS v1.3.

References: PCF-2021
Signed-off-by: Sergio Panseri <sergio.panseri@consult.red>
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org> [tls1.3, certs, all configs]
2025-10-03 12:04:09 +02:00
Petr Štetiar
efb833e204
ci: testbed: OSPv2: update flashing procedure to the new flash layout
Support for 24.10 based prplOS comes with UPDK 9.2.0/9.1.95 which brings
as well prpl Standard Flash Layout, so lets adapt the flashing
procedure using new bootloader and FIT image.

References: PCF-1832
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-09-13 06:16:11 +00:00
Petr Štetiar
489f7d44f2 ci: cdrouter: prplWare-Smoke-Test-Suite: add USP instance/search permissions tests
To QA instance and search expression based permissions we're adding
following USP conformance test cases into smoke test suite (adding ~13s
of additional test runtime):

 * usp_conformance_2_10 - Adding a Role
 * usp_conformance_2_11 - Permissions - Object Creation Allowed
 * usp_conformance_2_12 - Permissions - Object Creation Not Allowed
 * usp_conformance_2_13 - Permissions - Object Deletion Allowed
 * usp_conformance_2_14 - Permissions - Object Deletion Not Allowed
 * usp_conformance_2_15 - Permissions - Parameter Update Allowed
 * usp_conformance_2_16 - Permissions - Parameter Update Not Allowed
 * usp_conformance_2_18 - Permissions - Operation Not Allowed
 * usp_conformance_2_19 - Permissions - Value Change Notification Allowed on Parameter
 * usp_conformance_2_20 - Permissions - Value Change Notification Not Allowed on Parameter
 * usp_conformance_2_21 - Permissions - Overlapping Permissions
 * usp_conformance_2_22 - Using Get when no read permissions are available on some parameters
 * usp_conformance_2_25 - Permissions - Parameter within added object not allowed, omitted
 * usp_conformance_2_26 - Permissions - Parameter within added object not allowed, included

References: FEAT-199
Tests: PCF-1748, PCF-1749
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-08-27 15:35:44 +02:00
Toon Caeyers
916f15af02
Revert "PROVISORY: ci: cdrouter: workaround no-wan-tr069-inform test failures with 480s timeout"
This reverts commit 9ad33b2cc03d01201b75c427e0532c6e9420ea4d.

Signed-off-by: Toon Caeyers <toon.caeyers_ext@softathome.com>
2025-07-31 15:28:43 +00:00
Petr Štetiar
c0e731a8fb
ci: add runtime testing using MediaTek/Arcadyan Mozart board
New MediaTek/Arcadyan Mozart regular track reference platform is being
introduced, so lets enable the runtime testing using cram/CDRouter tests
on one Mozart device currently plugged into testbed-02.

References: PCF-1460, PCF-1461
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-07-31 15:27:38 +00:00
Petr Štetiar
4a44a5f622
PROVISORY: ci: cdrouter: workaround no-wan-tr069-inform test failures with 480s timeout
After changes done in commit cd0b15563161 ("profiles: prpl:
tr069-manager: bump to v1.35.5"), we've started seeing increased number
of CDRouter test failures related to TR-069 testing:

  FAIL: Did not receive TR-069 Inform RPC from CPE after 120 seconds » no-wan-tr069-inform
  FAIL: Did not receive TR-069 Inform RPC from CPE after 240 seconds » no-wan-tr069-inform

Until this gets fixed, lets increase the default acsWaitForInform timeout
from 120 seconds to 480 seconds, which hopefully should provide enough
room for cwmpd to connect with ACS.

References: PPW-544
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:27:28 +00:00
Petr Štetiar
5a529b6a4a
ci: testbed-01: add OSPv2 device
Increase testing capacity by adding OSPv2 device into the testbed.

Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:26:06 +00:00
Petr Štetiar
474159071d
ci: ipq807x: fix filenames and references after target rename to qualcommax
Currently the build for Haze produces images for ath79 target (default).

This is happening, because there is no ipq807x target in the tree
anymore, because upstream in commit f02f6aaa8d ("ipq807x: rename
target to qualcommax") renamed the target for following reasons:

  Currently, ipq807x only covers Qualcomm IPQ807x SoC-s.
  However, Qualcomm also has IPQ60xx and IPQ50xx SoC-s under the AX WiSoC-s
  and they share a lot of stuff with IPQ807x, especially IPQ60xx so to avoid
  duplicating kernel patches and everything lets make a common target with
  per SoC subtargets.

  Start doing that by renaming ipq807x to qualcommax so that dependencies
  on ipq807x target can be updated.

So lets fix the profile using the new target/subtarget structure.

Fixes: PCF-1605
References: PCF-1574
References: https://github.com/openwrt/openwrt/commit/f02f6aaa8d4e
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:25:51 +00:00
Petr Štetiar
9ff6e61037
ci: cdrouter: prpl-Certification: add HL-API test cases for USP and CWMP
Currently we've only "prplOS Test Plan for prpl devices" included in the
prpl-Certification package, but we need as well "prpl High-Level API
Tests" (USP) and "prpl High-Level API Tests for CWMP" as we need to make
sure, that prplWare is usable via both USP and CWMP protocols.

So lets add those currently missing test cases:

 * prpl High-Level API Tests (USP)

   * prpl_hl-api.1.1 - Profile GetSupportedDM
   * prpl_hl-api.1.2 - Profile Parameters Write
   * prpl_hl-api.1.3 - Get
   * prpl_hl-api.1.4 - Set
   * prpl_hl-api.1.5 - Add and Delete

 * prpl High-Level API Tests for CWMP

   * prpl_hl-api-cwmp.2.1 - Profile GetParameterNames
   * prpl_hl-api-cwmp.2.2 - Profile Parameters Write
   * prpl_hl-api-cwmp.2.3 - Get
   * prpl_hl-api-cwmp.2.4 - Set
   * prpl_hl-api-cwmp.2.5 - Add and Delete

References: PCF-1611
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:25:25 +00:00
Petr Štetiar
812fba36f7
ci: cdrouter: add prpl Certification test suite
CDRouter offers a dedicated prpl Certification expansion for the prpl
Foundation’s prplWare and High-Level API Certification program.

As an officially approved testing tool, CDRouter is an authorized test
tool for use in conducting the prplWare and High-Level API self-testing
certification.

prplOS should be routinely tested using the CDRouter prpl Certification
expansion, so lets add the prpl Certification CI jobs for all devices
and new prpl Certification package.

Closes: PCF-1611
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:39 +00:00
Petr Štetiar
aa6e066659
ci: cdrouter: add configuration for prpl Certification Expansion
CDRouter offers a dedicated prpl Certification expansion for the prpl
Foundation’s prplWare and High-Level API Certification program.

As an officially approved testing tool, CDRouter is an authorized test
tool for use in conducting the prplWare and High-Level API self-testing
certification.

prplOS should be routinely tested using the CDRouter prpl Certification
expansion, so lets add the needed configuration:

 prplosLanInterfaceAlias - This parameter specifies the LAN interface
     Alias used to verify bridge functions on the prplOS implementation. This
     parameter must be set to the value of Device.Bridging.Bridge.{i}.Port.{i}.Alias
     that corresponds to the primary LAN test interface used for prplOS
     Certification testing.

 useSameLanInterface - If this testvar is set to no, CDRouter will
     change LAN interfaces each time a test is run when multiple LAN
     interfaces are configured. You can disable this behavior by configuring
     the testvar useSameLanInterface to yes.

     We set this value to `yes`, because we're only utilizing one LAN port.

References: PCF-1611
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:38 +00:00
Petr Štetiar
db51702498
PROVISORY: ci: cdrouter: remove usp_conformance_1_20 test from CDRouter-USP-prpl package
usp_conformance_1_20 has a known issue in test implementation, caused by
an erroneous change to the USP Spec.  So until its fixed, lets remove
the test.

References: PPW-363, PCF-1612
References: https://issues.broadband-forum.org/browse/USP-917
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:24 +00:00
Houssem Dafdouf
63ee034e38
pwhm: upstep pwhm version to v7.6.7
This upstep will integrate the following tickets :

- Issue: PPM-3034 PWHM Wi-Fi hostap updated security configuration for
Wi-Fi 7
- Issue: PPW-384 Fix hex string to byte conversion issue
- Issue: PPM-2984 Add WiFi.AccessPoint.MLDConfig
- PPW-367: Assigning Toggle action to wps_state parameter to avoid all
three radios restart while changing security modethree...

Adapt obuspa.t cram test accordingly

Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2025-07-31 15:23:22 +00:00
Petr Štetiar
b12d7cc424
ci: cdrouter: add prplWare Smoke Test Suite testing
Current CI testing pipeline is very comprehensive and unusable for
testing of more granular deliveries and thus a new prplWare Smoke Test
Suite is needed.

The idea behind this new prplWare Smoke Test Suite is, that the complete
test runtime should fit into the range of 60-90 minutes.

The new Smoke Test Suite should contain testing a bit of everything, so
we cover most of the areas, while being  able to finish a test within a
reasonable timeframe.

Thus this new test suite combines the current:

 * CDRouter TOP 100 IPv4 and IPv6 packages, minus:

   - the longest running TCP/UDP firewall port scan tests:

     * ipv6_firewall_100
     * ipv6_firewall_101
     * cdrouter_firewall_100
     * cdrouter_firewall_101
     * cdrouter_firewall_110

   - the failing tests on OSP boards:

     * cdrouter_nat_201 tracked in PCF-972
     * cdrouter_l2tppt_2 tracked in PCF-971

 * CDRouter TR-069 package, minus the reboot test od128_test_14.1

 * CDRouter USP certification test cases + USP basic test + prpl HL-API
   tests (minus the problematic and currently always failing prpl_hl-api.1.4 Set test)

 * cdrouter_dyndns_1 - DynDNS client sends an update request when the WAN IP address changes
 * cdrouter_dyndns_2 - DynDNS client does not update if the WAN reestablishes with the same IP address

So the package contains in total 310 CDRouter test cases.

Closes: PCF-1645
References: PCF-971, PCF-972
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:20 +00:00
Petr Štetiar
91811f9f0d
ci: cleanup obsolete and unused devices, tests and support bits
There is currently a lot of old and already very obsolete stuff in the
tree for the past devices like glinet-b1300, urx851-b0-dk, nec-wx3000hp.

So lets cleanup all those unused bits to make the tree more tidy and
easier to maintain.

Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:19 +00:00
Petr Štetiar
3e060477f5
ci: cdrouter: configurations: smoke-test: sync DynDNS settings with generic config
We're going to use single smoke-test config to test bit of everything in
single test suite, so lets sync the DynDNS config from the generic
config.

References: PCF-1645
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:18 +00:00
Petr Štetiar
9debef340d
ci: cdrouter: configurations: smoke-test: sync dhcpLeaseTime with generic config
We're going to use single config for both IPv4 and IPv6 testing, so lets
sync the dhcpLeaseTime of 180 seconds from generic config, currently
being used for IPv4 based tests only.

References: PCF-1645
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:17 +00:00
Petr Štetiar
01d61b2878
ci: testbed: cdrouter: configurations: add smoke test configuration
Copy over generic-ipv6 configuration to smoke-test, so later changes are
clearly visible.

References: PCF-1645
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:23:16 +00:00
Houssem Dafdouf
df3826d404
profiles: prpl: upstep pwhm to v7.6.3
The main purpose of this upstep is the integration of the Wifi7/MLO
feature.

Additional updates :

Feeds :

- Update libswlc to v5.30.2

CRAM tests :

- obuspa.t/ubus-datamodel-list.t : add new objects introduced by the
pwhm v7.x upstep

- 100-pwhm.t : update script to test MLO main link interface status

- 101-mlo.t : new script to test MLO deactivation

CDRouter updates (tri-band MLO prequesties) :

- Security mode is now set to WPA3-WPA2-Personal

- Add SAE in the expected key management mode list.

- Remove 'be' from the expected phy mode list on OSPv2. As it shouldn't
be broadcasted if MLO is not supported or when the access point is not
part of an MLD.
PWHM reference commit : 0627886f993c25b0de4ee628d9d07e7f67f01008

Closes: PPM-2984
References: PPW-228

Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2025-07-31 15:23:03 +00:00
Petr Štetiar
380f5bab86
PROVISORY: ci: cdrouter: OSPv1: workaround EAPOL 4-way handshake instability by disabling wifi_10 test
We have been running CDRouter wireless tests on the 2.4GHz band, using default
settings except for changing the SSID to prplOS-2g-6 and channel to 6. In multiple
test loops, the majority of observed failures occur specifically in CDRouter’s
wifi_10 test when running on the OSPv1 board. Removing the wifi_10 test, however,
leads to near 100% passing results, indicating that the issue is specifically tied
to how the AP handles the 4-way EAPOL handshake under wifi_10.

Packet captures and hostapd logs suggest the AP resets its handshake state machine
prematurely, returning to PTKSTART and eventually causing deauthentication (reason code 15).
This breaks the test procedure and leads to a high failure rate on OSPv1.

Analysis shows that other boards (e.g., MXL25641-HDK-6, Haze, Freedom) do not exhibit
the same level of instability. For OSPv1 (URX851-HDK-3), the failure rate can reach about
40-78% during wifi_10 runs. Removing wifi_10 reduces failures drastically.

Until the root cause in the EAPOL 4-way handshake process is identified and resolved,
we will remove the wifi_10 test from the test suite. Doing so mitigates the frequent
failures and allows the rest of the suite to execute reliably.

References: PCF-1586
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:22:05 +00:00
Houssem Dafdouf
0bf4a4452c
ci: cdrouter: wireless: enable wifiCapture option
Enable wifiCapture option so air captures can be exported in artifacts

Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2025-07-31 15:21:59 +00:00
Petr Štetiar
40b0d0c4c9
ci: cdrouter: fix wireless testing configuration
Three issues were identified with CDRouter wireless tests:

1. The wireless configuration handling changed, making SSIDs no longer
   available at fixed datamodel indexes.

2. The default Channel=1 frequency spectrum changed in the testbed environment,
   causing increased interference with other devices.

3. Both testbeds and DUTs in them were using identical default settings,
   resulting in crosstalk between them when CDRouter Wireless tests were
   run on both testbeds at the same time.

So lets fix it by moving each testbed into different channel and properly
configuring the wireless settings for each testbed and DUT corresponding
to the testbed:

  - testbed-01: RegulatoryDomain=CZ, Channel=6, SSID=prplOS-2g-6
  - testbed-02: RegulatoryDomain=CZ, Channel=12, SSID=prplOS-2g-12

While at it, switch from ubus-cli to ba-cli, which is now preferred due
to its bus agnostic nature, thus making the commands more future proof.

Closes: PPM-3069
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:21:58 +00:00
Petr Štetiar
f4fd5df68c
Revert "PROVISORY: ci: cdrouter: workaround NTP sync issues a bit more"
This reverts commit e19787c7e531ce7ce29fd3ae681a94bfa38ec306 as the
issues should be fixed and thus the workaround shouldn't be needed.

References: PCF-1168
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:20:56 +00:00
Petr Štetiar
feba8611f0
Revert "PROVISORY: ci: cdrouter: increase usp message timeout"
This reverts commit 65b6e4b990993b7e760acff7d309c67744f16f2b as the
issues should be fixed and thus the workaround shouldn't be needed.

References: PCF-1252
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:20:50 +00:00
Matthias FRANCK
bef6276786
cdrouter: wireless: make wifiBeaconPhy configurable
With the new wnc-freedom wifi7 box, the wifiBeaconPhy testvar of CDRouter needs to include "be" as well. Let's make this configurable in the CI by introducing a CDROUTER_CONFIG_WIFI_BEACON_PHY variable that can be set uniquely for every box.

Signed-off-by: Matthias FRANCK <matthias.franck@softathome.com>
2025-07-31 15:20:32 +00:00
sah0447
dda2876608
ci: cdrouter: enable wifi 7 as expected beacon
Signed-off-by: Matthias FRANCK <matthias.franck@softathome.com>
2025-07-31 15:20:02 +00:00