* Add tests for auto-subscribe on first send and isolated sender with no peers
* Add PR CI workflow with tiered test strategy
- pr_tests.yml: build job with cache, wrapper-tests, smoke-tests,
and label-triggered full-suite
- test_common.yml: add deploy_allure/send_discord inputs so PR runs
skip reporting side effects
- Add docker_required marker to S19 (needs Docker, excluded from
wrapper-only CI job)
- Register docker_required marker in pytest.ini
* Document PR CI test workflows in README
* Refine PR CI test strategy:
- Exclude `docker_required` tests from smoke set in `pr_tests.yml`.
- Add `wait_for_connected` helper for connection state checks.
- Update S19 test to dynamically create and clean up the store node setup.
- General simplifications and improved test stability.
* Add `wait_for_connected` assertion to ensure sender connection state before propagation test
* Refine tests and CI workflows:
- Replace `ERROR_TIMEOUT_S` with `ERROR_AFTER_CACHE_EXPIRY_TIMEOUT_S` in `test_send_e2e.py`.
- Adjust timeout assertion for better clarity and accuracy.
- Update `pr_tests.yml` to add retries (`--reruns`) and ignore wrapper tests in smoke tests.
- Change `test_common.yml` default Discord reporting to `false`.
* Normalize `portsshift` to `portsShift` in `test_send_e2e.py` configuration definitions.
---------
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* Add `assert_event_invariants` to enforce per-request event constraints and integrate into relevant tests
* Integrate `assert_event_invariants` into edge and store tests
* Remove redundant comments from `test_send_e2e.py`
---------
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
- Refactored the `wait_for_event` function for clarity and to ensure proper deadline handling within the loop.
- Introduced `assert_event_invariants` to validate per-request event properties, enforcing invariants like correct `requestId`, no duplicate terminal events, and proper timing between `Propagated` and `Sent`.
- Added tests for `assert_event_invariants` enforcement in `S14` and `S15` lightpush scenarios.
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* Fix for wrong url of reports
* remove the delete hidden file step
* work around for the cleanup of >200k to clean all
* add additional cleanup
* fix clean up
* another fix trail
* restore the number of shards
* - Add S06 relay-only test case for testing message propagation without a store.
- Update `wrapper_helpers` for clearer event type handling and type annotations (`Optional[...]` usage).
- Simplify `get_node_multiaddr` to retrieve addresses via `get_node_info_raw`.
- Refactor `wrappers_manager` to adjust bindings path to `vendor` directory and add `get_node_info_raw` method.
- Update `.gitignore` to exclude `store.sqlite3*`.
* Refactor S06 relay-only test: replace try-finally blocks with context managers for clarity and conciseness.
* Migrate S06 relay-only test to `test_send_e2e.py` and refactor with `StepsCommon` for reusability.
---------
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* Add logos-delivery-python-bindings submodule
* Adding wrapper manager modifications
* Add unit test for wrappers
* ignore third paty
* Ignore third party
* Add thin wrapper layer to be used in tests
* Add last API
* Add needed helpers
* basic tests added
* Fix minor points
* Add dependency to the requirements
* Fix the yml file
* add debug info
* Add logos-delivery submodule
* Add logos-delivery-python-bindings submodule
* Remove old logos-delivery submodule
* fix the import path issue
* add cffi
* add .so build step
* add nim
* remove nimble
* fix the nimble error
* Add rest of libraries
* Fix the nim version issue
* Add nimble install command
* Make real setup for the nimple
* change nim version
* Ignore vendor files
* fix for review points
* remove stubs file
* merge master & add comment about wrapper_manager usage
* Add REST API traffic bypass for network conditions manipulation
- Introduced methods to apply packet loss only to P2P traffic, excluding REST API traffic.
- Simplified test cases to leverage new differentiated packet loss handling.
- Removed unused and legacy metrics/tests for cleaner configuration and coverage.
* Refactor network conditions setup to streamline command execution
* Pin priomap so libp2p traffic actually hits netem
The default prio qdisc priomap routes SO_PRIORITY 6 and 7 to band 0,
which is our REST bypass class 1:1. libp2p/gossipsub packets set a high
SO_PRIORITY on their sockets, so they were silently escaping the netem
impairment via the priomap rather than through the u32 filter. The
result: test_relay_packet_loss_correlated_vs_uncorrelated became green
by accident because no loss was ever applied to relay traffic.
Forcing priomap to 1 1 1 1 ... on all 16 slots routes every SO_PRIORITY
value to band 1 (netem). The u32 filter remains the only path to 1:1,
so REST stays isolated and libp2p now takes the configured loss.
Verified in alpine netns: with SO_PRIORITY=6, 50 packets to a non-REST
port ended up in 1:1 under the old rules (0 drops); with the forced
priomap they land in 1:2 and see the expected ~50% drop rate.
* Refactor P2P traffic loss handling; isolate REST API traffic
- Added `_p2p_iface` to dynamically detect libp2p interface tied to the Waku network.
- Introduced `add_packet_loss_p2p_only` and `add_packet_loss_correlated_p2p_only` for targeted packet loss on libp2p traffic.
- Replaced REST API traffic bypass logic with simplified P2P interface-based tc rules.
- Updated tests to use `clear_p2p` for cleanup, ensuring REST traffic remains unaffected.
---------
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>