Skip to content

Commit 7e27cca

Browse files
committed
fix existing tests
1 parent 6d63f5f commit 7e27cca

12 files changed

+851
-813
lines changed

wasp/benchspy/TO_DO.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
Known things to do:
22
- [ ] add logger
3-
- [ ] add tests
3+
- [ ] add unit tests for prometheus
4+
- [ ] add wasp test for prometheus only
5+
- [ ] add e2e OCRv2 test with CTFv2
46
- [ ] write documentation
57
- [ ] add report builder (?)
68
- [ ] add wrapper function for executing some code and then creating a report

wasp/benchspy/basic.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ func NewBasicData(commitOrTag string, generators ...*wasp.Generator) (*BasicData
5050
b.GeneratorConfigs[g.Cfg.GenName] = g.Cfg
5151
}
5252

53+
timeErr := b.FillStartEndTimes()
54+
if timeErr != nil {
55+
return nil, timeErr
56+
}
57+
5358
return b, nil
5459
}
5560

wasp/benchspy/generator.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,14 @@ func (g *GeneratorQueryExecutor) MarshalJSON() ([]byte, error) {
214214
}
215215

216216
func (g *GeneratorQueryExecutor) UnmarshalJSON(data []byte) error {
217-
// helper struct with QueryExecutors as json.RawMessage
217+
// helper struct with QueryExecutors as json.RawMessage and QueryResults as map[string]interface{}
218+
// and as actual types
218219
type Alias GeneratorQueryExecutor
219220
var raw struct {
220221
Alias
221-
GeneratorCfg wasp.Config `json:"generator_config"`
222-
Queries []json.RawMessage `json:"queries"`
222+
GeneratorCfg wasp.Config `json:"generator_config"`
223+
Queries []json.RawMessage `json:"queries"`
224+
QueryResults map[string]interface{} `json:"query_results"`
223225
}
224226

225227
// unmarshal into the helper struct to populate other fields automatically
@@ -239,8 +241,15 @@ func (g *GeneratorQueryExecutor) UnmarshalJSON(data []byte) error {
239241
queries[queryName] = nil
240242
}
241243

244+
// convert map[string]interface{} to map[string]actualType
245+
convertedTypes, conversionErr := convertQueryResults(raw.QueryResults)
246+
if conversionErr != nil {
247+
return conversionErr
248+
}
249+
242250
*g = GeneratorQueryExecutor(raw.Alias)
243251
g.Queries = queries
252+
g.QueryResults = convertedTypes
244253
g.Generator = &wasp.Generator{
245254
Cfg: &raw.GeneratorCfg,
246255
}

wasp/benchspy/generator_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,8 @@ func TestBenchSpy_GeneratorQueryExecutor_Execute(t *testing.T) {
235235
// 4 responses with ~150ms latency (150ms sleep + some execution overhead)
236236
// and 2-3 responses with ~200ms latency (200ms sleep + some execution overhead)
237237
// expected median latency: (150ms, 151ms>
238-
resultsAsStrings := ResultsAs("string", []QueryExecutor{executor}, StandardQueryExecutor_Generator, string(MedianLatency), string(Percentile95Latency), string(ErrorRate))
238+
resultsAsStrings, err := ResultsAs("string", []QueryExecutor{executor}, StandardQueryExecutor_Generator, string(MedianLatency), string(Percentile95Latency), string(ErrorRate))
239+
assert.NoError(t, err)
239240
require.Equal(t, 3, len(resultsAsStrings))
240241

241242
medianLatencyFloat, err := strconv.ParseFloat(resultsAsStrings[string(MedianLatency)], 64)
@@ -361,7 +362,7 @@ func TestBenchSpy_GeneratorQueryExecutor_MarshalJSON(t *testing.T) {
361362
err = json.Unmarshal(data, &recovered)
362363
assert.NoError(t, err)
363364

364-
assert.Equal(t, original.Kind, recovered.Kind)
365+
assert.Equal(t, original.KindName, recovered.KindName)
365366
assert.Equal(t, original.QueryResults, recovered.QueryResults)
366367
assert.Equal(t, len(original.Queries), len(recovered.Queries))
367368
})

wasp/benchspy/loki.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package benchspy
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
67
"net/url"
78
"reflect"
@@ -163,6 +164,30 @@ func (l *LokiQueryExecutor) TimeRange(start, end time.Time) {
163164
l.EndTime = end
164165
}
165166

167+
func (l *LokiQueryExecutor) UnmarshalJSON(data []byte) error {
168+
// helper struct with QueryResults map[string]interface{}
169+
type Alias LokiQueryExecutor
170+
var raw struct {
171+
Alias
172+
QueryResults map[string]interface{} `json:"query_results"`
173+
}
174+
175+
// unmarshal into the helper struct to populate other fields automatically
176+
if err := json.Unmarshal(data, &raw); err != nil {
177+
return err
178+
}
179+
180+
// convert map[string]interface{} to map[string]actualType
181+
convertedTypes, conversionErr := convertQueryResults(raw.QueryResults)
182+
if conversionErr != nil {
183+
return conversionErr
184+
}
185+
186+
*l = LokiQueryExecutor(raw.Alias)
187+
l.QueryResults = convertedTypes
188+
return nil
189+
}
190+
166191
func NewStandardMetricsLokiExecutor(lokiConfig *wasp.LokiConfig, testName, generatorName, branch, commit string, startTime, endTime time.Time) (*LokiQueryExecutor, error) {
167192
lq := &LokiQueryExecutor{
168193
KindName: string(StandardQueryExecutor_Loki),

wasp/benchspy/prometheus.go

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package benchspy
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
67
"reflect"
78
"time"
@@ -18,7 +19,7 @@ type PrometheusQueryExecutor struct {
1819
startTime, endTime time.Time `json:"-"`
1920
client *client.Prometheus `json:"-"`
2021
Queries map[string]string `json:"queries"`
21-
ResourceResults map[string]interface{} `json:"resources"`
22+
QueryResults map[string]interface{} `json:"query_results"`
2223
warnings map[string]v1.Warnings `json:"-"`
2324
}
2425

@@ -30,12 +31,12 @@ func NewPrometheusQueryExecutor(url string, startTime, endTime time.Time, querie
3031
}
3132

3233
return &PrometheusQueryExecutor{
33-
KindName: string(StandardQueryExecutor_Prometheus),
34-
client: c,
35-
Queries: queries,
36-
startTime: startTime,
37-
endTime: endTime,
38-
ResourceResults: make(map[string]interface{}),
34+
KindName: string(StandardQueryExecutor_Prometheus),
35+
client: c,
36+
Queries: queries,
37+
startTime: startTime,
38+
endTime: endTime,
39+
QueryResults: make(map[string]interface{}),
3940
}, nil
4041
}
4142

@@ -51,11 +52,11 @@ func NewStandardPrometheusQueryExecutor(url string, startTime, endTime time.Time
5152
}
5253

5354
return &PrometheusQueryExecutor{
54-
client: c,
55-
Queries: standardQueries,
56-
startTime: startTime,
57-
endTime: endTime,
58-
ResourceResults: make(map[string]interface{}),
55+
client: c,
56+
Queries: standardQueries,
57+
startTime: startTime,
58+
endTime: endTime,
59+
QueryResults: make(map[string]interface{}),
5960
}, nil
6061
}
6162

@@ -70,14 +71,14 @@ func (r *PrometheusQueryExecutor) Execute(ctx context.Context) error {
7071
r.warnings[name] = warnings
7172
}
7273

73-
r.ResourceResults[name] = result
74+
r.QueryResults[name] = result
7475
}
7576

7677
return nil
7778
}
7879

7980
func (r *PrometheusQueryExecutor) Results() map[string]interface{} {
80-
return r.ResourceResults
81+
return r.QueryResults
8182
}
8283

8384
func (l *PrometheusQueryExecutor) Kind() string {
@@ -138,12 +139,12 @@ func (r *PrometheusQueryExecutor) Warnings() map[string]v1.Warnings {
138139
return r.warnings
139140
}
140141

141-
func (r *PrometheusQueryExecutor) MustResourcesAsValue() map[string]model.Value {
142-
resources := make(map[string]model.Value)
143-
for name, resource := range r.ResourceResults {
144-
resources[name] = resource.(model.Value)
142+
func (r *PrometheusQueryExecutor) MustResultsAsValue() map[string]model.Value {
143+
results := make(map[string]model.Value)
144+
for name, result := range r.QueryResults {
145+
results[name] = result.(model.Value)
145146
}
146-
return resources
147+
return results
147148
}
148149

149150
func (r *PrometheusQueryExecutor) TimeRange(startTime, endTime time.Time) {
@@ -184,3 +185,27 @@ func (r *PrometheusQueryExecutor) generateStandardQueries(nameRegexPattern strin
184185

185186
return standardQueries, nil
186187
}
188+
189+
func (r *PrometheusQueryExecutor) UnmarshalJSON(data []byte) error {
190+
// helper struct with QueryResults map[string]interface{}
191+
type Alias PrometheusQueryExecutor
192+
var raw struct {
193+
Alias
194+
QueryResults map[string]interface{} `json:"query_results"`
195+
}
196+
197+
// unmarshal into the helper struct to populate other fields automatically
198+
if err := json.Unmarshal(data, &raw); err != nil {
199+
return err
200+
}
201+
202+
// convert map[string]interface{} to map[string]actualType
203+
convertedTypes, conversionErr := convertQueryResults(raw.QueryResults)
204+
if conversionErr != nil {
205+
return conversionErr
206+
}
207+
208+
*r = PrometheusQueryExecutor(raw.Alias)
209+
r.QueryResults = convertedTypes
210+
return nil
211+
}

0 commit comments

Comments
 (0)