Skip to content

Commit

Permalink
integration_test
Browse files Browse the repository at this point in the history
  • Loading branch information
Dav1dde committed Nov 15, 2023
1 parent 1b839df commit b08d27b
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
3 changes: 3 additions & 0 deletions relay-server/src/actors/envelopes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -310,9 +310,11 @@ impl EnvelopeManagerService {
envelope.accept();
}
Err(SendEnvelopeError::UpstreamRequestFailed(e)) if e.is_received() => {
dbg!("failed but received");
envelope.accept();
}
Err(error) => {
dbg!("send error", &error);
// Errors are only logged for what we consider an internal discard reason. These
// indicate errors in the infrastructure or implementation bugs.
relay_log::with_scope(
Expand Down Expand Up @@ -350,6 +352,7 @@ impl EnvelopeManagerService {
max_batch_size_bytes = self.config.metrics_max_batch_size_bytes_processing();
}

dbg!("send metrics");
self.enveloper_processor.send(EncodeMetrics {
buckets,
scoping,
Expand Down
11 changes: 11 additions & 0 deletions tests/integration/fixtures/mini_sentry.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,17 @@ def store_event():
sentry.captured_events.put(envelope)
return jsonify({"event_id": uuid.uuid4().hex})

@app.route("/api/77/envelope/", methods=["POST"])
def store_event_internal_server_error():
assert (
flask_request.headers.get("Content-Encoding", "") == "gzip"
), "Relay should always compress store requests"
data = gzip.decompress(flask_request.data)
envelope = Envelope.deserialize(data)

sentry.captured_events.put(envelope)
return abort(503, "oops")

@app.route("/api/<project>/store/", methods=["POST"])
@app.route("/api/<project>/envelope/", methods=["POST"])
def store_event_catchall(project):
Expand Down
56 changes: 56 additions & 0 deletions tests/integration/test_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,62 @@ def test_transaction_metrics(
}


def test_transaction_metrics_outcome_for_upstream_failure(mini_sentry, relay):
relay = relay(
mini_sentry,
options={
**TEST_CONFIG,
"outcomes": {
"emit_outcomes": True,
"batch_size": 1,
"batch_interval": 1,
"source": "relay",
},
"http": {
"max_retry_interval": 0,
"retry_delay": 0,
},
},
)

project_id = 77
mini_sentry.add_basic_project_config(project_id)

timestamp = int(datetime.now(tz=timezone.utc).timestamp())
metrics_payload = f"transactions/foo:42|c\ntransactions/bar:17|c|T{timestamp}"
relay.send_metrics(project_id, metrics_payload)

outcomes = mini_sentry.captured_outcomes.get(timeout=30)
print(outcomes)

envelope = mini_sentry.captured_events.get(timeout=3)
assert len(envelope.items) == 1

metrics_item = envelope.items[0]
assert metrics_item.type == "metric_buckets"

received_metrics = json.loads(metrics_item.get_bytes().decode())
received_metrics = sorted(received_metrics, key=lambda x: x["name"])
assert received_metrics == [
{
"timestamp": timestamp,
"width": 1,
"name": "c:transactions/bar@none",
"value": 17.0,
"type": "c",
},
{
"timestamp": timestamp,
"width": 1,
"name": "c:transactions/foo@none",
"value": 42.0,
"type": "c",
},
]

assert False


def test_transaction_metrics_count_per_root_project(
mini_sentry,
relay,
Expand Down

0 comments on commit b08d27b

Please sign in to comment.