1
0
mirror of https://github.com/golang/go synced 2024-11-18 17:04:41 -07:00

internal/lsp: change annotation tests to json

This checks against the json form rather than the wire structs
This will allow the encoding method to change without the test changing.

Change-Id: Iefe84cc03bc6e82627acd031e0991c31b4fed315
Reviewed-on: https://go-review.googlesource.com/c/tools/+/206884
Run-TryBot: Ian Cottrell <iancottrell@google.com>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
This commit is contained in:
Ian Cottrell 2019-08-15 20:59:12 -04:00 committed by Ian Cottrell
parent 77e3bb0ad9
commit 023c5eeaf4

View File

@ -11,7 +11,6 @@ import (
"testing"
"golang.org/x/tools/internal/telemetry"
"golang.org/x/tools/internal/telemetry/export/ocagent/wire"
"golang.org/x/tools/internal/telemetry/tag"
)
@ -19,11 +18,11 @@ func TestConvert_annotation(t *testing.T) {
tests := []struct {
name string
event telemetry.Event
want *wire.Annotation
want string
}{
{
name: "no tags",
want: nil,
want: "null",
},
{
name: "description no error",
@ -33,14 +32,20 @@ func TestConvert_annotation(t *testing.T) {
tag.Of("db", "godb"),
},
},
want: &wire.Annotation{
Description: &wire.TruncatableString{Value: "cache miss"},
Attributes: &wire.Attributes{
AttributeMap: map[string]wire.Attribute{
"db": wire.StringAttribute{StringValue: &wire.TruncatableString{Value: "godb"}},
},
},
},
want: `{
"description": {
"value": "cache miss"
},
"attributes": {
"attributeMap": {
"db": {
"stringValue": {
"value": "godb"
}
}
}
}
}`,
},
{
@ -52,15 +57,25 @@ func TestConvert_annotation(t *testing.T) {
tag.Of("db", "godb"),
},
},
want: &wire.Annotation{
Description: &wire.TruncatableString{Value: "cache miss"},
Attributes: &wire.Attributes{
AttributeMap: map[string]wire.Attribute{
"Error": wire.StringAttribute{StringValue: &wire.TruncatableString{Value: "no network connectivity"}},
"db": wire.StringAttribute{StringValue: &wire.TruncatableString{Value: "godb"}},
},
},
},
want: `{
"description": {
"value": "cache miss"
},
"attributes": {
"attributeMap": {
"Error": {
"stringValue": {
"value": "no network connectivity"
}
},
"db": {
"stringValue": {
"value": "godb"
}
}
}
}
}`,
},
{
name: "no description, but error",
@ -70,14 +85,20 @@ func TestConvert_annotation(t *testing.T) {
tag.Of("db", "godb"),
},
},
want: &wire.Annotation{
Description: &wire.TruncatableString{Value: "no network connectivity"},
Attributes: &wire.Attributes{
AttributeMap: map[string]wire.Attribute{
"db": wire.StringAttribute{StringValue: &wire.TruncatableString{Value: "godb"}},
},
},
},
want: `{
"description": {
"value": "no network connectivity"
},
"attributes": {
"attributeMap": {
"db": {
"stringValue": {
"value": "godb"
}
}
}
}
}`,
},
{
name: "enumerate all attribute types",
@ -106,41 +127,71 @@ func TestConvert_annotation(t *testing.T) {
tag.Of("max_hops", uint64(0xffffff)),
},
},
want: &wire.Annotation{
Description: &wire.TruncatableString{Value: "cache miss"},
Attributes: &wire.Attributes{
AttributeMap: map[string]wire.Attribute{
"db": wire.StringAttribute{StringValue: &wire.TruncatableString{Value: "godb"}},
"age": wire.DoubleAttribute{DoubleValue: 0.456},
"ttl": wire.DoubleAttribute{DoubleValue: 5000.0},
"expiry_ms": wire.DoubleAttribute{DoubleValue: 1e3},
"retry": wire.BoolAttribute{BoolValue: false},
"stale": wire.BoolAttribute{BoolValue: true},
"max": wire.IntAttribute{IntValue: 0x7fff},
"opcode": wire.IntAttribute{IntValue: 0x7e},
"base": wire.IntAttribute{IntValue: 1 << 9},
"checksum": wire.IntAttribute{IntValue: 0x11f7e294},
"mode": wire.IntAttribute{IntValue: 0644},
"min": wire.IntAttribute{IntValue: 1},
"mix": wire.IntAttribute{IntValue: 44},
"port": wire.IntAttribute{IntValue: 55678},
"min_hops": wire.IntAttribute{IntValue: 1 << 9},
"max_hops": wire.IntAttribute{IntValue: 0xffffff},
},
},
},
want: `{
"description": {
"value": "cache miss"
},
"attributes": {
"attributeMap": {
"age": {
"doubleValue": 0.456
},
"base": {
"intValue": 512
},
"checksum": {
"intValue": 301458068
},
"db": {
"stringValue": {
"value": "godb"
}
},
"expiry_ms": {
"doubleValue": 1000
},
"max": {
"intValue": 32767
},
"max_hops": {
"intValue": 16777215
},
"min": {
"intValue": 1
},
"min_hops": {
"intValue": 512
},
"mix": {
"intValue": 44
},
"mode": {
"intValue": 420
},
"opcode": {
"intValue": 126
},
"port": {
"intValue": 55678
},
"retry": {},
"stale": {
"boolValue": true
},
"ttl": {
"doubleValue": 5000
}
}
}
}`,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := convertAnnotation(tt.event)
got := marshaled(convertAnnotation(tt.event))
if !reflect.DeepEqual(got, tt.want) {
t.Fatalf("Got:\n%s\nWant:\n%s", marshaled(got), marshaled(tt.want))
t.Fatalf("Got:\n%s\nWant:\n%s", got, tt.want)
}
})
}