Skip to content

Commit

Permalink
fix(uptime): add offset to trace item resolver for uptime checks (#6840)
Browse files Browse the repository at this point in the history
seems like we weren't using the request offset for uptime checks. this
PR fixes.
  • Loading branch information
JoshFerge authored Jan 30, 2025
1 parent 36475eb commit c06a580
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,12 @@ def _build_query(request: TraceItemTableRequest) -> Query:
# protobuf sets limit to 0 by default if it is not set,
# give it a default value that will actually return data
limit=request.limit if request.limit > 0 else _DEFAULT_ROW_LIMIT,
having=aggregation_filter_to_expression(request.aggregation_filter)
if request.HasField("aggregation_filter")
else None,
having=(
aggregation_filter_to_expression(request.aggregation_filter)
if request.HasField("aggregation_filter")
else None
),
offset=request.page_token.offset,
)
treeify_or_and_conditions(res)
apply_virtual_columns(res, request.virtual_column_contexts)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,82 @@ def test_with_data(self, setup_teardown: Any) -> None:
meta=ResponseMeta(request_id="be3123b3-2e5d-4eb9-bb48-f38eaa9e8480"),
)
assert MessageToDict(response) == MessageToDict(expected_response)

def test_with_offset(self, setup_teardown: Any) -> None:
ts = Timestamp(seconds=int(BASE_TIME.timestamp()))
hour_ago = Timestamp(
seconds=int((BASE_TIME - timedelta(hours=10000)).timestamp())
)
message = TraceItemTableRequest(
meta=RequestMeta(
project_ids=[1, 2, 3],
organization_id=1,
cogs_category="something",
referrer="something",
start_timestamp=hour_ago,
end_timestamp=ts,
request_id="be3123b3-2e5d-4eb9-bb48-f38eaa9e8480",
trace_item_type=TraceItemType.TRACE_ITEM_TYPE_UPTIME_CHECK,
),
columns=[
Column(
key=AttributeKey(
type=AttributeKey.TYPE_STRING,
name="region",
),
),
Column(
key=AttributeKey(
type=AttributeKey.TYPE_STRING,
name="trace_id",
)
),
Column(
key=AttributeKey(
type=AttributeKey.TYPE_INT,
name="scheduled_check_time",
)
),
],
order_by=[
TraceItemTableRequest.OrderBy(
column=Column(
key=AttributeKey(
type=AttributeKey.TYPE_INT,
name="scheduled_check_time",
)
),
),
],
limit=5,
page_token=PageToken(offset=5), # Start from the 6th item
)
response = EndpointTraceItemTable().execute(message)
checks = list(
sorted(_UPTIME_CHECKS, key=itemgetter("scheduled_check_time_ms"))
)[
5:10
] # Get items 6-10

expected_response = TraceItemTableResponse(
column_values=[
TraceItemColumnValues(
attribute_name="region",
results=[AttributeValue(val_str=c["region"]) for c in checks],
),
TraceItemColumnValues(
attribute_name="trace_id",
results=[AttributeValue(val_str=c["trace_id"]) for c in checks],
),
TraceItemColumnValues(
attribute_name="scheduled_check_time",
results=[
AttributeValue(val_int=int(c["scheduled_check_time_ms"] / 1e3))
for c in checks
],
),
],
page_token=PageToken(offset=10),
meta=ResponseMeta(request_id="be3123b3-2e5d-4eb9-bb48-f38eaa9e8480"),
)
assert MessageToDict(response) == MessageToDict(expected_response)

0 comments on commit c06a580

Please sign in to comment.