* add test s17
* Add temp changes
* Add s17 positive / negative scenarios
* add S19
* Add S06 relay-only test and fix wrapper helpers (#173)
* - 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>
* Modify S19 test
* Adding S21
* Fix review comments
* Adding S22/S23
* Adding S24
* Add S26
* Add S30
* Add S31
* Improve `wait_for_event` loop logic and add `assert_event_invariants` helper (#178)
- 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>
* Add S07 and S10 send API tests with event invariants helper (#176)
* 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>
* Fix some tests
* Add S02/S12 send API tests and PR CI pipeline (#174)
* 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 relay-to-lightpush fallback integration tests (S08/S09) (#180)
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* Ignore S19
* fix s26
* Ignore s20 / s31 for errors
* Change image name
* fix xfail syntax error
* rename test file
* FIx flaky tests
* comment the skipped tests
* Fix review comments
* revert tag in yml in latest
* commenting lightpush
* Modify the PR
* Fix the ports conflict
* Modify S20
* fix portsshift option
* remove the /true from yml to allow errors to exist
* Modify the yml to continue on error
* First set of review comments
* adding xfail mark for failed tests
* address review comments about xfail
* cleanup unused lines
* event collector fix
* Address review comment about delay constant
* fix the timeout review comment
* Add assert_event_invariants
* enhance comment on S26 test
* mark the waku tests as docker_required
* Add S01
* add S01 second scenario
* Add S03
* Add S04
* Adding S11
* modify s11 scenario to pass
* Adding test S05
* Adding the new tests in part3 file
* Fix the yml file error
* Add the new test file to the PR job
* bump logos-delivery-python-bindings to include destroy_keep_ctx
* modify the S01 test
* mark S01 with xfail
* mark the second S01 test as xfail too
* use skip instead of xfail
* comment the skip line to try S01 again
* restore the xfail mark again
* remove the wrapped text code from test file
* Changing the test files names
* skip S01 again
* removed extra comments
* Update logos-delivery-python-bindings submodule
---------
Co-authored-by: Egor Rachkovskii <32649334+at0m1x19@users.noreply.github.com>
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* add test s17
* Add temp changes
* Add s17 positive / negative scenarios
* add S19
* Add S06 relay-only test and fix wrapper helpers (#173)
* - 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>
* Modify S19 test
* Adding S21
* Fix review comments
* Adding S22/S23
* Adding S24
* Add S26
* Add S30
* Add S31
* Improve `wait_for_event` loop logic and add `assert_event_invariants` helper (#178)
- 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>
* Add S07 and S10 send API tests with event invariants helper (#176)
* 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>
* Fix some tests
* Add S02/S12 send API tests and PR CI pipeline (#174)
* 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 relay-to-lightpush fallback integration tests (S08/S09) (#180)
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* Ignore S19
* fix s26
* Ignore s20 / s31 for errors
* Change image name
* fix xfail syntax error
* rename test file
* FIx flaky tests
* comment the skipped tests
* Fix review comments
* revert tag in yml in latest
* commenting lightpush
* Modify the PR
* Fix the ports conflict
* Modify S20
* fix portsshift option
* remove the /true from yml to allow errors to exist
* Modify the yml to continue on error
* First set of review comments
* adding xfail mark for failed tests
* address review comments about xfail
* cleanup unused lines
* event collector fix
* Address review comment about delay constant
* fix the timeout review comment
* Add assert_event_invariants
* enhance comment on S26 test
* mark the waku tests as docker_required
* Mark `test_s10_edge_lightpush_propagation` as xfail due to broken lightpush peer discovery.
* Mark `test_s15_lightpush_retryable_error_then_recovery` as xfail due to broken lightpush peer discovery.
---------
Co-authored-by: Egor Rachkovskii <32649334+at0m1x19@users.noreply.github.com>
Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
* rework old scripts & merge scripts
* Apply changes to existing scripts
* Add merged scripts
* last test script added
* Fix review point
* Adding new test scenarios after review points
* Adding the second scenario after review comments
* 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 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.
* Adding bandwidth tests
* Adding more bandwidth tests
* bandwidth &packet reorder
* Add packet loss new test
* comments enhancements
* Fix error in test
Fix test cases where message does not reach relay peer fails due to braking change coming into LMN - when publish would return zero peer instead NoPeersToPublish error is propagated. Fix covers such checks properly. (#157)
* Fix CI issue
* rename waku_px_peers_cached to waku_px_peers to match current software
* Fix CI issues
* Fix additional failing tests
* make relay = true
* Adding first test
* Adding more latency tests
* packet loss tests & fix old tests
* Adding packet loss tests
* new patch of packet loss tests
* Making PR ready for review
* remove docker.io from required packages
* Adding store scripts
* Fix old scripts & add new store stress scripts
* Add filter stress scenarios & store
* Adding last set of tests
---------
Co-authored-by: fbarbu15 <florin@status.im>
* work on the rest of tests
* Add debug tests
* Add rest debug levels tests
* Add rest APIs tests
* Fix non working tests
* Adding more tests
* Add final set of tests
* Add changes to enable sync
* Adding new test
* Make changes to allow store-sync to work
* Checkout the image with the bug fix
* Ad change to make test work
* Adding store-sync test scenarios
* Adding more tests
* Adding new set of tests
* Adding extensive tests
* Make PR ready for review
* revert changes