136 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| package zipkin
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"io/ioutil"
 | |
| 	"net/http"
 | |
| 	"net/http/httptest"
 | |
| 	"strconv"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/google/go-cmp/cmp"
 | |
| 	"github.com/influxdata/telegraf/plugins/inputs/zipkin/trace"
 | |
| )
 | |
| 
 | |
| type MockRecorder struct {
 | |
| 	Data trace.Trace
 | |
| 	Err  error
 | |
| }
 | |
| 
 | |
| func (m *MockRecorder) Record(t trace.Trace) error {
 | |
| 	m.Data = t
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (m *MockRecorder) Error(err error) {
 | |
| 	m.Err = err
 | |
| }
 | |
| 
 | |
| func TestSpanHandler(t *testing.T) {
 | |
| 	dat, err := ioutil.ReadFile("testdata/threespans.dat")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Could not find file %s\n", "testdata/threespans.dat")
 | |
| 	}
 | |
| 
 | |
| 	w := httptest.NewRecorder()
 | |
| 	r := httptest.NewRequest(
 | |
| 		"POST",
 | |
| 		"http://server.local/api/v1/spans",
 | |
| 		ioutil.NopCloser(
 | |
| 			bytes.NewReader(dat)))
 | |
| 
 | |
| 	r.Header.Set("Content-Type", "application/x-thrift")
 | |
| 	handler := NewSpanHandler("/api/v1/spans")
 | |
| 	mockRecorder := &MockRecorder{}
 | |
| 	handler.recorder = mockRecorder
 | |
| 
 | |
| 	handler.Spans(w, r)
 | |
| 	if w.Code != http.StatusNoContent {
 | |
| 		t.Errorf("MainHandler did not return StatusNoContent %d", w.Code)
 | |
| 	}
 | |
| 
 | |
| 	got := mockRecorder.Data
 | |
| 
 | |
| 	parentID := strconv.FormatInt(22964302721410078, 16)
 | |
| 	want := trace.Trace{
 | |
| 		{
 | |
| 			Name:        "Child",
 | |
| 			ID:          "7047c59776af8a1b",
 | |
| 			TraceID:     "22c4fc8ab3669045",
 | |
| 			ParentID:    parentID,
 | |
| 			Timestamp:   time.Unix(0, 1498688360851331*int64(time.Microsecond)).UTC(),
 | |
| 			Duration:    time.Duration(53106) * time.Microsecond,
 | |
| 			ServiceName: "trivial",
 | |
| 			Annotations: []trace.Annotation{},
 | |
| 			BinaryAnnotations: []trace.BinaryAnnotation{
 | |
| 				{
 | |
| 					Key:         "lc",
 | |
| 					Value:       "trivial",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			Name:        "Child",
 | |
| 			ID:          "17020eb55a8bfe5",
 | |
| 			TraceID:     "22c4fc8ab3669045",
 | |
| 			ParentID:    parentID,
 | |
| 			Timestamp:   time.Unix(0, 1498688360904552*int64(time.Microsecond)).UTC(),
 | |
| 			Duration:    time.Duration(50410) * time.Microsecond,
 | |
| 			ServiceName: "trivial",
 | |
| 			Annotations: []trace.Annotation{},
 | |
| 			BinaryAnnotations: []trace.BinaryAnnotation{
 | |
| 				{
 | |
| 					Key:         "lc",
 | |
| 					Value:       "trivial",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			Name:        "Parent",
 | |
| 			ID:          "5195e96239641e",
 | |
| 			TraceID:     "22c4fc8ab3669045",
 | |
| 			ParentID:    parentID,
 | |
| 			Timestamp:   time.Unix(0, 1498688360851318*int64(time.Microsecond)).UTC(),
 | |
| 			Duration:    time.Duration(103680) * time.Microsecond,
 | |
| 			ServiceName: "trivial",
 | |
| 			Annotations: []trace.Annotation{
 | |
| 				{
 | |
| 					Timestamp:   time.Unix(0, 1498688360851325*int64(time.Microsecond)).UTC(),
 | |
| 					Value:       "Starting child #0",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 				{
 | |
| 					Timestamp:   time.Unix(0, 1498688360904545*int64(time.Microsecond)).UTC(),
 | |
| 					Value:       "Starting child #1",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 				{
 | |
| 					Timestamp:   time.Unix(0, 1498688360954992*int64(time.Microsecond)).UTC(),
 | |
| 					Value:       "A Log",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 			},
 | |
| 			BinaryAnnotations: []trace.BinaryAnnotation{
 | |
| 				{
 | |
| 					Key:         "lc",
 | |
| 					Value:       "trivial",
 | |
| 					Host:        "127.0.0.1",
 | |
| 					ServiceName: "trivial",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	if !cmp.Equal(got, want) {
 | |
| 		t.Fatalf("Got != Want\n %s", cmp.Diff(got, want))
 | |
| 	}
 | |
| }
 |