-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ref: Convert integration tests about dropping transactions to unit tests #1720
Conversation
previously there were two integration tests that checked if the transactions got dropped or not when they should based on the sample rate, now there is a single rust unit test that is more targeted to the relevant functions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still do not like that we have to start the entire ServiceState
just for one unit test. Maybe it's worth looking into this more closely and actually test a little bit different (only the pieces we care about).
relay-server/src/actors/processor.rs
Outdated
|
||
use crate::service::ServiceState; | ||
use crate::testutils::{new_envelope, state_with_rule_and_condition}; | ||
use crate::utils::Semaphore as MySemaphore; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we remove this to TestSemaphore
instead?
use crate::utils::Semaphore as MySemaphore; | |
use crate::utils::Semaphore as TestSemaphore; |
|
||
// it really shouldn't be necessary to start an entire service for a unit test | ||
// it was ported from a python integration test | ||
ServiceState::start(arconfig).unwrap(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This starts all the actors/services we have in order for this unit test to work, which is kind of heavy and does not make much sense.
But at this point I'm not sure how to solve this yet.
The current status:
-
the function you test uses
reject
function onenvelope_context
which triggers theTestStore
capture functionality
relay/relay-server/src/utils/envelope_context.rs
Lines 190 to 191 in 3b42784
// TODO: This could be optimized with Capture::should_capture TestStore::from_registry().send(Capture::rejected(self.event_id, &outcome)); -
this function also is triggered on
Drop
of theenvelope_context
-
also the
reject
function triggerstrack_outcome
which also requiresOutcome
actor to be available in the registry.
* master: (35 commits) ref(actix): Migrate ProjectUpstream to `relay_system::Service` (#1727) feat(general): Add unknown SessionStatus variant (#1736) ref: Convert integration tests about dropping transactions to unit tests (#1720) release: 0.8.16 ci: Skip redundant self-hosted E2E on library release (#1755) doc(changelog): Add relevant changes to python changelog (#1753) feat(profiling): Add profile context (#1748) release: 23.1.0 profiling(fix): use an unpadded base64 encoding (#1749) Revert "feat(replays): Enable PII scrubbing for all organizations" (#1747) feat: Switch from base64 to data-encoding (#1743) instr(replays): Add timer metric to recording processing (#1742) feat(replays): Use Annotated struct definition for replay-event parsing (#1582) feat(sessions): Retire session duration metric (#1739) feat(general): Scrub all fields with IP address (#1725) feat(replays): Enable PII scrubbing for all organizations (#1678) chore(project): Add backoff mechanism for fetching projects (#1726) feat(profiling): Add new measurement units for profiling (#1732) chore(toolchain): update rust to 1.66.1 (#1735) ref(actix): Migrate server actor to the "service" arch (#1723) ...
previously there were two integration tests that checked if the transactions got dropped or not when they should based on the sample rate, now there is a single rust unit test that is more targeted to the relevant functions
Also created a testutils file as some helper functions from dynamic_sampling.rs were needed elsewhere in the crate
#skip-changelog