Skip to content

Commit

Permalink
feat: refactor metric samples to be it's own endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
trevorwhitney committed May 31, 2024
1 parent 2587657 commit 6dd77ae
Show file tree
Hide file tree
Showing 35 changed files with 2,583 additions and 1,474 deletions.
18 changes: 4 additions & 14 deletions pkg/logproto/extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,7 @@ func (r *QueryPatternsResponse) UnmarshalJSON(data []byte) error {
var v struct {
Status string `json:"status"`
Data []struct {
Pattern string `json:"pattern,omitempty"`
Labels string `json:"labels,omitempty"`
Pattern string `json:"pattern"`
Samples [][]int64 `json:"samples"`
} `json:"data"`
}
Expand All @@ -175,12 +174,7 @@ func (r *QueryPatternsResponse) UnmarshalJSON(data []byte) error {
for _, s := range d.Samples {
samples = append(samples, &PatternSample{Timestamp: model.TimeFromUnix(s[0]), Value: s[1]})
}

if pattern := d.Pattern; pattern != "" {
r.Series = append(r.Series, NewPatternSeriesWithPattern(pattern, samples))
} else if labels := d.Labels; labels != "" {
r.Series = append(r.Series, NewPatternSeriesWithLabels(labels, samples))
}
r.Series = append(r.Series, &PatternSeries{Pattern: d.Pattern, Samples: samples})
}
return nil
}
Expand All @@ -195,10 +189,6 @@ func (m *ShardsResponse) Merge(other *ShardsResponse) {
m.Statistics.Merge(other.Statistics)
}

func NewPatternSeriesWithPattern(pattern string, samples []*PatternSample) *PatternSeries {
return &PatternSeries{Identifier: &PatternSeries_Pattern{pattern}, Samples: samples}
}

func NewPatternSeriesWithLabels(labels string, samples []*PatternSample) *PatternSeries {
return &PatternSeries{Identifier: &PatternSeries_Labels{labels}, Samples: samples}
func NewPatternSeries(pattern string, samples []*PatternSample) *PatternSeries {
return &PatternSeries{Pattern: pattern, Samples: samples}
}
65 changes: 15 additions & 50 deletions pkg/logproto/extensions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ func TestShard_SpaceFor(t *testing.T) {
}

func TestQueryPatternsResponse_UnmarshalJSON(t *testing.T) {
t.Run("unmarshals patterns", func(t *testing.T) {
mockData := []byte(`{
mockData := []byte(`{
"status": "success",
"data": [
{
Expand All @@ -58,54 +57,20 @@ func TestQueryPatternsResponse_UnmarshalJSON(t *testing.T) {
]
}`)

expectedSeries := []*PatternSeries{
NewPatternSeriesWithPattern("foo <*> bar", []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 10},
{Timestamp: model.TimeFromUnix(1609545600), Value: 15},
}),
NewPatternSeriesWithPattern("foo <*> buzz", []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 20},
{Timestamp: model.TimeFromUnix(1609545600), Value: 25},
}),
}

r := &QueryPatternsResponse{}
err := r.UnmarshalJSON(mockData)

require.Nil(t, err)
require.Equal(t, expectedSeries, r.Series)
})

t.Run("unmarshals labels", func(t *testing.T) {
mockData := []byte(`{
"status": "success",
"data": [
{
"labels": "{foo=\"bar\"}",
"samples": [[1609459200, 10], [1609545600, 15]]
},
{
"labels": "{foo=\"buzz\"}",
"samples": [[1609459200, 20], [1609545600, 25]]
}
]
}`)

expectedSeries := []*PatternSeries{
NewPatternSeriesWithLabels(`{foo="bar"}`, []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 10},
{Timestamp: model.TimeFromUnix(1609545600), Value: 15},
}),
NewPatternSeriesWithLabels(`{foo="buzz"}`, []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 20},
{Timestamp: model.TimeFromUnix(1609545600), Value: 25},
}),
}
expectedSeries := []*PatternSeries{
NewPatternSeries("foo <*> bar", []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 10},
{Timestamp: model.TimeFromUnix(1609545600), Value: 15},
}),
NewPatternSeries("foo <*> buzz", []*PatternSample{
{Timestamp: model.TimeFromUnix(1609459200), Value: 20},
{Timestamp: model.TimeFromUnix(1609545600), Value: 25},
}),
}

r := &QueryPatternsResponse{}
err := r.UnmarshalJSON(mockData)
r := &QueryPatternsResponse{}
err := r.UnmarshalJSON(mockData)

require.Nil(t, err)
require.Equal(t, expectedSeries, r.Series)
})
require.Nil(t, err)
require.Equal(t, expectedSeries, r.Series)
}
Loading

0 comments on commit 6dd77ae

Please sign in to comment.