212 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package thrift
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/google/go-cmp/cmp"
 | |
| 
 | |
| 	"github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore"
 | |
| )
 | |
| 
 | |
| func Test_endpointHost(t *testing.T) {
 | |
| 	type args struct {
 | |
| 		h *zipkincore.Endpoint
 | |
| 	}
 | |
| 	tests := []struct {
 | |
| 		name string
 | |
| 		args args
 | |
| 		want string
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "Host Found",
 | |
| 			args: args{
 | |
| 				h: &zipkincore.Endpoint{
 | |
| 					Ipv4: 1234,
 | |
| 					Port: 8888,
 | |
| 				},
 | |
| 			},
 | |
| 			want: "0.0.4.210:8888",
 | |
| 		},
 | |
| 		{
 | |
| 			name: "No Host",
 | |
| 			args: args{
 | |
| 				h: nil,
 | |
| 			},
 | |
| 			want: "0.0.0.0",
 | |
| 		},
 | |
| 		{
 | |
| 			name: "int overflow zipkin uses an int16 type as an unsigned int 16.",
 | |
| 			args: args{
 | |
| 				h: &zipkincore.Endpoint{
 | |
| 					Ipv4: 1234,
 | |
| 					Port: -1,
 | |
| 				},
 | |
| 			},
 | |
| 			want: "0.0.4.210:65535",
 | |
| 		},
 | |
| 	}
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			e := endpoint{tt.args.h}
 | |
| 			if got := e.Host(); got != tt.want {
 | |
| 				t.Errorf("host() = %v, want %v", got, tt.want)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func Test_endpointName(t *testing.T) {
 | |
| 	type args struct {
 | |
| 		h *zipkincore.Endpoint
 | |
| 	}
 | |
| 	tests := []struct {
 | |
| 		name string
 | |
| 		args args
 | |
| 		want string
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "Found ServiceName",
 | |
| 			args: args{
 | |
| 				h: &zipkincore.Endpoint{
 | |
| 					ServiceName: "zipkin",
 | |
| 				},
 | |
| 			},
 | |
| 			want: "zipkin",
 | |
| 		},
 | |
| 		{
 | |
| 			name: "No ServiceName",
 | |
| 			args: args{
 | |
| 				h: nil,
 | |
| 			},
 | |
| 			want: "unknown",
 | |
| 		},
 | |
| 	}
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			e := endpoint{tt.args.h}
 | |
| 			if got := e.Name(); got != tt.want {
 | |
| 				t.Errorf("serviceName() = %v, want %v", got, tt.want)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestUnmarshalThrift(t *testing.T) {
 | |
| 	addr := func(i int64) *int64 { return &i }
 | |
| 	tests := []struct {
 | |
| 		name     string
 | |
| 		filename string
 | |
| 		want     []*zipkincore.Span
 | |
| 		wantErr  bool
 | |
| 	}{
 | |
| 		{
 | |
| 			name:     "threespans",
 | |
| 			filename: "../../testdata/threespans.dat",
 | |
| 			want: []*zipkincore.Span{
 | |
| 				{
 | |
| 					TraceID:     2505404965370368069,
 | |
| 					Name:        "Child",
 | |
| 					ID:          8090652509916334619,
 | |
| 					ParentID:    addr(22964302721410078),
 | |
| 					Timestamp:   addr(1498688360851331),
 | |
| 					Duration:    addr(53106),
 | |
| 					Annotations: []*zipkincore.Annotation{},
 | |
| 					BinaryAnnotations: []*zipkincore.BinaryAnnotation{
 | |
| 						{
 | |
| 							Key:            "lc",
 | |
| 							AnnotationType: zipkincore.AnnotationType_STRING,
 | |
| 							Value:          []byte("trivial"),
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 				{
 | |
| 					TraceID:     2505404965370368069,
 | |
| 					Name:        "Child",
 | |
| 					ID:          103618986556047333,
 | |
| 					ParentID:    addr(22964302721410078),
 | |
| 					Timestamp:   addr(1498688360904552),
 | |
| 					Duration:    addr(50410),
 | |
| 					Annotations: []*zipkincore.Annotation{},
 | |
| 					BinaryAnnotations: []*zipkincore.BinaryAnnotation{
 | |
| 						{
 | |
| 							Key:            "lc",
 | |
| 							AnnotationType: zipkincore.AnnotationType_STRING,
 | |
| 							Value:          []byte("trivial"),
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 				{
 | |
| 					TraceID:   2505404965370368069,
 | |
| 					Name:      "Parent",
 | |
| 					ID:        22964302721410078,
 | |
| 					Timestamp: addr(1498688360851318),
 | |
| 					Duration:  addr(103680),
 | |
| 					Annotations: []*zipkincore.Annotation{
 | |
| 						{
 | |
| 							Timestamp: 1498688360851325,
 | |
| 							Value:     "Starting child #0",
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 						{
 | |
| 							Timestamp: 1498688360904545,
 | |
| 							Value:     "Starting child #1",
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 						{
 | |
| 							Timestamp: 1498688360954992,
 | |
| 							Value:     "A Log",
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 					BinaryAnnotations: []*zipkincore.BinaryAnnotation{
 | |
| 						{
 | |
| 							Key:            "lc",
 | |
| 							AnnotationType: zipkincore.AnnotationType_STRING,
 | |
| 							Value:          []byte("trivial"),
 | |
| 							Host: &zipkincore.Endpoint{
 | |
| 								Ipv4:        2130706433,
 | |
| 								ServiceName: "trivial",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			dat, err := ioutil.ReadFile(tt.filename)
 | |
| 			if err != nil {
 | |
| 				t.Fatalf("Could not find file %s\n", tt.filename)
 | |
| 			}
 | |
| 
 | |
| 			got, err := UnmarshalThrift(dat)
 | |
| 			if (err != nil) != tt.wantErr {
 | |
| 				t.Errorf("UnmarshalThrift() error = %v, wantErr %v", err, tt.wantErr)
 | |
| 				return
 | |
| 			}
 | |
| 			if !cmp.Equal(tt.want, got) {
 | |
| 				t.Errorf("UnmarshalThrift() got(-)/want(+): %s", cmp.Diff(tt.want, got))
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 |