* 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>
* Fix auto and static sharding subscribe/unsubscribe tests - use a safe un-used cluster-id ever (cluster id 2 is now defaults to logos.dev with its settings), also adapted static sharding unsubscribe to PR#3732
* Adjust cluster_id to pubsub_topics
* Fix uncertain rate limit hit of filter subscribes - this is a planned behavior of current rate limiting, as we are trying our best to serve requests within reasonanble flexibility, thus we mint new tokens over time, so it can be seen as we are able to serve more requests as configured, those are not hard limits.
* fix test_relay_2_nodes_bandwidth_low_vs_high_drain_time flaky result, eliminate jitter and localhost test optimization can appear on docker networking.