summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
7 daystests: give the veth pair fixed MAC addressesDenys Fedoryshchenko
The tests create the veth pair with 'ip link add ... type veth peer name ...' and let the kernel pick random hardware addresses, then start accel-pppd right away. On distributions where systemd-udevd rewrites the address of a freshly created veth (MACAddressPolicy in its .link rules, seen on Ubuntu 22.04) this is a race: accel-pppd reads the address of the interface it serves once, at startup, and when udev wins it advertises an address the interface no longer has. Discovery still completes - the client copies the advertised address into its kernel PPPoE session as the peer address - but from then on the two ends disagree about it, no PPP frame is exchanged in either direction, and the session dies on LCP timeouts. Every PPPoE session test can fail this way; test_pppoe_ccp_ipcp_race failed 8 times out of 12 runs in one qemu Ubuntu-22.04 job. Create the pair with fixed, locally administered addresses derived from the name the pair already gets, so udev has nothing to change. The same job passes 12 out of 12 with this. This only removes the trigger in the tests. accel-pppd not following the address of the interface it serves is tracked in #363 and needs a fix of its own.
9 daysMerge pull request #359 from nuclearcat/ipcp-ccp-delay-ackDenys Fedoryshchenko
Ipcp ccp delay ack
2026-09-01ppp: cover alignment-safe MPPE prefer setupDenys Fedoryshchenko
Serialize the MPPE option through an aligned temporary and exercise mppe=prefer in the existing unauthenticated PPPoE session test.
2026-09-01tests: check that IPCP ConfReq is not answered with TermAck during CCPDenys Fedoryshchenko
Covers the previous commit: with 'mppe=prefer' CCP is non-passive, so it is still negotiating (and needs one more round trip because pppd rejects the MPPE option) when pppd, which does not delay IPCP on CCP, sends its IPCP ConfReq. The test asserts that the session becomes active and that no IPCP TermAck was sent, reading the negotiation from the accel-pppd debug log. The check is skipped if the peer happened to send its IPCP ConfReq only after CCP was done, in that case the race is not exercised.
2026-08-31Merge pull request #346 from nuclearcat/ipoe-stale-session-flushDenys Fedoryshchenko
Ipoe stale session flush fixes
2026-08-08tests: cover the removal of stale ipoe session interfacesDenys Fedoryshchenko
Three tests around the interfaces the ipoe module creates per session: - kill accel-pppd with SIGKILL while a dhcp session is up, start it again and check that the interfaces left behind by the killed instance are gone, - remove a session interface with 'ip link del', - check that 'ip link add ... type ipoe' is refused, since a device made through rtnetlink would have none of the private state that IPOE_CMD_CREATE sets up. They carry the ipoe_driver marker and sit next to the existing ipoe tests, so the workflows run them in the steps that follow the insmod of the module. No workflow change is needed. The [modules] section has to list connlimit and radius before ipoe: libipoe.so refers to symbols of both, and with a strict dynamic linker loading it on its own fails with a relocation error instead of a missing feature. The tests assert that accel-pppd came up, so that this kind of misconfiguration is not reported as an unrelated cli connection failure. Restarting accel-pppd needs no explicit synchronisation: triton_load_modules() runs every DEFINE_INIT() before triton_run() starts the threads that serve the cli, so by the time accel-cmd 'show version' is answered the flush registered at DEFINE_INIT(19) has already run. Interfaces are compared by ifindex and not by name, because dhclient may get a new session in the meantime and the fresh interface would reuse the ipoe0 name. The check that nothing removes the interfaces while no accel-pppd is running is only printed, not asserted, so that the module is free to start doing it on its own later on.
2026-08-02metrics: expose session details in JSON outputDenys Fedoryshchenko
Add an opt-in sessions setting for the JSON metrics renderer. Include session identity, addressing, protocol state, interface context, uptime, and traffic counters while keeping Prometheus output aggregate-only. The session list is walked with ses_lock held, so report the accounting counters the session last sampled rather than calling ap_session_read_stats(): that issues a synchronous netlink round trip per session, which would stall session setup and teardown for the duration of a scrape, it writes back into the session while only the read lock is held, and it needs the thread local net of the session's namespace, which the metrics context does not have. Counter freshness therefore follows accounting, which the documentation spells out. Escape malformed UTF-8 in peer supplied strings so a single bad username cannot make the whole document undecodable, and reserve room for the response header in front of the rendered body so a body that can be megabytes is not copied a second time. Document the privacy-sensitive option in both accel-ppp.conf and the man page, and cover the empty session list, the aggregate-only Prometheus output and the response framing in the metrics integration test.
2026-05-14tests: Add metrics module coverageDenys Fedoryshchenko
Signed-off-by: Denys Fedoryshchenko <denys.f@collabora.com>
2024-11-28tests,ci: disable chap-secrets related tests on alpineSergey V. Lobanov
radius and chap-secrets can't work together due to musl library limiations This patch disables chap-secrets related tests on alpine ref: https://github.com/accel-ppp/accel-ppp/pull/190#issuecomment-2331036461
2024-11-28tests: add ipoe shared + chap-secrets auth, add ipoe+chap-secrets + luaSergey V. Lobanov
2024-09-04tests: add test pppoe session using chap-secrets authSergey V. Lobanov
2024-08-23ci: run tests in alpine vmSergey V. Lobanov
Alpine Linux uses musl libc so now accel-ppp is tested under musl Currently, Alpine Linux doesn't provide a link to the latest stable version so direct link to Alpine 3.20 is used Improved musl support might be used to run on platforms like openwrt without additional patches
2024-08-19tests: fix execution orderSergey V. Lobanov
2024-08-19tests: add pcre negative cases, improve pcre-related code test coverageSergey V. Lobanov
these test cases will help for pcre2 migration (issue #173)
2022-09-06tests ci: add testing in Qemu (Ubuntu 18.04, 20.04, 22.04, Debian 10,11,12)Sergey V. Lobanov
2022-09-04add tests and ci workflow for running testsSergey V. Lobanov
This commit adds tests (using python3 pytest framework): 1. Test basic accel-cmd commands (show version, show stat, etc) 2. Test ipoe shared session up (dhcpv4) without radius 3. Test pppoe discovery (without PADO delay) 4. Test pppoe discovery (without PADO delay) 5. Test pppoe session up (ipv4) without radius 6. Test vlan creation using vlan-mon (pppoe) These tests require external utils. Please read tests/README.md how to setup environment, how to run the tests and how to generate coverage report Also, run-tests.yml contains step-by-step instruction how to run the tests Signed-off-by: Sergey V. Lobanov <sergey@lobanov.in>