Skip to content

Commit f00ace5

Browse files
jpinsonneauronensc
andauthored
Fix mocks (#230)
* makefile missing mock argument * fix metrics calibrateRange for mocks * comment Co-authored-by: Ronen Schaffer <[email protected]> Co-authored-by: Ronen Schaffer <[email protected]>
1 parent 84afd14 commit f00ace5

File tree

7 files changed

+21
-10
lines changed

7 files changed

+21
-10
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ start-standalone: build-backend install-frontend
154154
start-standalone-mock: build-backend install-frontend
155155
@echo "### Starting backend on http://localhost:9002 using mock"
156156
bash -c "trap 'fuser -k 9002/tcp' EXIT; \
157-
./plugin-backend -port 9002 $(CMDLINE_ARGS) & cd web && npm run start:standalone"
157+
./plugin-backend -port 9002 --loki-mock $(CMDLINE_ARGS) & cd web && npm run start:standalone"
158158

159159
.PHONY: bridge
160160
bridge:

pkg/handler/topology.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ func getTopologyFlows(cfg *loki.Config, client httpclient.Caller, params url.Val
110110
}
111111

112112
qr := merger.Get()
113+
qr.IsMock = cfg.UseMocks
113114
hlog.Tracef("GetTopology response: %v", qr)
114115
return qr, http.StatusOK, nil
115116
}

pkg/model/loki.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type AggregatedQueryResponse struct {
2020
ResultType ResultType `json:"resultType"`
2121
Result ResultValue `json:"result"`
2222
Stats AggregatedStats `json:"stats"`
23+
IsMock bool `json:"isMock"`
2324
}
2425

2526
// AggregatedStats represents the stats to one or more logQL queries

pkg/model/loki_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ func TestAggregatedQueryResponseMarshal(t *testing.T) {
4444

4545
js, err := json.Marshal(qr)
4646
require.NoError(t, err)
47-
assert.Equal(t, `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null}}`, string(js))
47+
assert.Equal(t, `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null},"isMock":false}`, string(js))
4848
}
4949

5050
func TestAggregatedQueryResponseUnmarshal(t *testing.T) {
51-
js := `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null}}`
51+
js := `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null},"isMock":false}`
5252
var qr AggregatedQueryResponse
5353
err := json.Unmarshal([]byte(js), &qr)
5454
require.NoError(t, err)
@@ -95,11 +95,11 @@ func TestAggregatedQueryResponseMatrixMarshal(t *testing.T) {
9595

9696
js, err := json.Marshal(qr)
9797
require.NoError(t, err)
98-
assert.Equal(t, `{"resultType":"matrix","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null}}`, string(js))
98+
assert.Equal(t, `{"resultType":"matrix","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null},"isMock":false}`, string(js))
9999
}
100100

101101
func TestAggregatedQueryResponseMatrixUnmarshal(t *testing.T) {
102-
js := `{"resultType":"matrix","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null}}`
102+
js := `{"resultType":"matrix","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":null},"isMock":false}`
103103
var qr AggregatedQueryResponse
104104
err := json.Unmarshal([]byte(js), &qr)
105105
require.NoError(t, err)
@@ -126,5 +126,5 @@ func TestReencodeStats(t *testing.T) {
126126
}
127127
reencoded, err := json.Marshal(agg)
128128
require.NoError(t, err)
129-
assert.Equal(t, `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":[{"ingester":{"foo":"bar"}}]}}`, string(reencoded))
129+
assert.Equal(t, `{"resultType":"streams","result":[],"stats":{"numQueries":1,"limitReached":false,"queriesStats":[{"ingester":{"foo":"bar"}}]},"isMock":false}`, string(reencoded))
130130
}

web/src/api/loki.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export interface AggregatedQueryResponse {
66
resultType: string;
77
result: StreamResult[] | RawTopologyMetrics[];
88
stats: Stats;
9+
isMock: boolean;
910
}
1011

1112
export interface Stats {

web/src/api/routes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export const getTopology = (params: FlowQuery, range: number | TimeRange): Promi
5959
throw new Error(`${r.statusText} [code=${r.status}]`);
6060
}
6161
const aggQR: AggregatedQueryResponse = r.data;
62-
const metrics = parseMetrics(aggQR.result as RawTopologyMetrics[], range, params.scope!);
62+
const metrics = parseMetrics(aggQR.result as RawTopologyMetrics[], range, params.scope!, aggQR.isMock);
6363
return { metrics: metrics, stats: aggQR.stats };
6464
});
6565
};

web/src/utils/metrics.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ const shortKindMap: { [k: string]: string } = {
2121
export const parseMetrics = (
2222
raw: RawTopologyMetrics[],
2323
range: number | TimeRange,
24-
scope: MetricScope
24+
scope: MetricScope,
25+
isMock?: boolean
2526
): TopologyMetrics[] => {
2627
const { start, end, step } = calibrateRange(
2728
raw.map(r => r.values),
28-
range
29+
range,
30+
isMock
2931
);
3032
const metrics = raw.map(r => parseMetric(r, start, end, step, scope));
3133

@@ -116,7 +118,8 @@ const parseMetric = (
116118

117119
export const calibrateRange = (
118120
raw: [number, unknown][][],
119-
range: number | TimeRange
121+
range: number | TimeRange,
122+
isMock?: boolean
120123
): { start: number; end: number; step: number } => {
121124
// Extract some info based on range, and apply a tolerance about end range when it is close to "now"
122125
const info = computeStepInterval(range);
@@ -143,6 +146,11 @@ export const calibrateRange = (
143146
}
144147
}
145148

149+
// End time needs to be overridden to avoid huge range since mock is outdated compared to current date
150+
if (isMock) {
151+
endWithTolerance = Math.max(...raw.filter(dp => dp.length > 0).map(dp => dp[dp.length - 1][0]));
152+
}
153+
146154
return {
147155
start: firstTimestamp,
148156
end: endWithTolerance,

0 commit comments

Comments
 (0)