Skip to content

Commit

Permalink
Add test for sample tags
Browse files Browse the repository at this point in the history
  • Loading branch information
cchamplin committed Jun 19, 2024
1 parent 9fab84e commit fa8e9e2
Showing 1 changed file with 105 additions and 0 deletions.
105 changes: 105 additions & 0 deletions js/modules/k6/grpc/stream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"go.k6.io/k6/lib/testutils/grpcservice"
"go.k6.io/k6/lib/testutils/httpmultibin/grpc_wrappers_testing"
"go.k6.io/k6/metrics"

"github.com/dop251/goja"
"github.com/golang/protobuf/ptypes/wrappers"
Expand Down Expand Up @@ -363,3 +364,107 @@ func TestStream_Wrappers(t *testing.T) {
},
)
}

// TestStream_MetricsTagsMetadata tests that the metrics tags are correctly
// added to samples.
func TestStream_MetricsTagsMetadata(t *testing.T) {
t.Parallel()

ts := newTestState(t)

stub := &featureExplorerStub{}

savedFeatures := []*grpcservice.Feature{
{
Name: "foo",
Location: &grpcservice.Point{
Latitude: 1,
Longitude: 2,
},
},
{
Name: "bar",
Location: &grpcservice.Point{
Latitude: 3,
Longitude: 4,
},
},
}

stub.listFeatures = func(_ *grpcservice.Rectangle, stream grpcservice.FeatureExplorer_ListFeaturesServer) error {
for _, feature := range savedFeatures {
// adding a delay to make server response "slower"
time.Sleep(200 * time.Millisecond)

if err := stream.Send(feature); err != nil {
return err
}
}

return nil
}

grpcservice.RegisterFeatureExplorerServer(ts.httpBin.ServerGRPC, stub)

initString := codeBlock{
code: `
var client = new grpc.Client();
client.load([], "../../../../lib/testutils/grpcservice/route_guide.proto");`,
}
vuString := codeBlock{
code: `
client.connect("GRPCBIN_ADDR");
let params = {
tags: { "tag1": "value1" },
};
let stream = new grpc.Stream(client, "main.FeatureExplorer/ListFeatures", params)
stream.on('data', function (data) {
call('Feature:' + data.name);
});
stream.on('end', function () {
call('End called');
});
stream.write({
lo: {
latitude: 1,
longitude: 2,
},
hi: {
latitude: 1,
longitude: 2,
},
});
stream.end();
`,
}

val, err := ts.Run(initString.code)
assertResponse(t, initString, err, val, ts)

ts.ToVUContext()

val, err = ts.RunOnEventLoop(vuString.code)

assertResponse(t, vuString, err, val, ts)

expTags := map[string]string{"tag1": "value1"}

samplesBuf := metrics.GetBufferedSamples(ts.samples)

assert.Len(t, samplesBuf, 5)
samples := samplesBuf[0].GetSamples()
for _, sample := range samples {
assertTags(t, sample, expTags)
}
}

func assertTags(t *testing.T, sample metrics.Sample, tags map[string]string) {
for k, v := range tags {
tag, ok := sample.Tags.Get(k)
assert.True(t, ok)
assert.Equal(t, tag, v)
}
}

0 comments on commit fa8e9e2

Please sign in to comment.