2017-08-03 00:58:26 +00:00
package zipkin
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"testing"
"time"
"github.com/google/go-cmp/cmp"
"github.com/influxdata/telegraf/testutil"
)
func TestZipkinPlugin ( t * testing . T ) {
mockAcc := testutil . Accumulator { }
tests := [ ] struct {
2017-08-22 00:24:54 +00:00
name string
datafile string // data file which contains test data
contentType string
wantErr bool
want [ ] testutil . Metric
2017-08-03 00:58:26 +00:00
} {
{
2017-08-22 00:24:54 +00:00
name : "threespan" ,
datafile : "testdata/threespans.dat" ,
contentType : "application/x-thrift" ,
2017-08-03 00:58:26 +00:00
want : [ ] testutil . Metric {
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "7047c59776af8a1b" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
"service_name" : "trivial" ,
2017-11-20 22:19:32 +00:00
"name" : "child" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 53106 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851331000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "7047c59776af8a1b" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
2017-11-20 22:19:32 +00:00
"name" : "child" ,
2017-08-03 00:58:26 +00:00
"service_name" : "trivial" ,
"annotation" : "trivial" , //base64: dHJpdmlhbA==
"endpoint_host" : "127.0.0.1" ,
"annotation_key" : "lc" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 53106 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851331000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "17020eb55a8bfe5" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
"service_name" : "trivial" ,
2017-11-20 22:19:32 +00:00
"name" : "child" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 50410 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360904552000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "17020eb55a8bfe5" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
2017-11-20 22:19:32 +00:00
"name" : "child" ,
2017-08-03 00:58:26 +00:00
"service_name" : "trivial" ,
"annotation" : "trivial" , //base64: dHJpdmlhbA==
"endpoint_host" : "127.0.0.1" ,
"annotation_key" : "lc" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 50410 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360904552000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "5195e96239641e" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
"service_name" : "trivial" ,
2017-11-20 22:19:32 +00:00
"name" : "parent" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 103680 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851318000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"service_name" : "trivial" ,
"annotation" : "Starting child #0" ,
"endpoint_host" : "127.0.0.1" ,
2017-11-20 22:19:32 +00:00
"id" : "5195e96239641e" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
2017-11-20 22:19:32 +00:00
"name" : "parent" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 103680 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851318000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"service_name" : "trivial" ,
"annotation" : "Starting child #1" ,
"endpoint_host" : "127.0.0.1" ,
2017-11-20 22:19:32 +00:00
"id" : "5195e96239641e" ,
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
2017-11-20 22:19:32 +00:00
"name" : "parent" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 103680 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851318000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"parent_id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "22c4fc8ab3669045" ,
2017-11-20 22:19:32 +00:00
"name" : "parent" ,
2017-08-03 00:58:26 +00:00
"service_name" : "trivial" ,
"annotation" : "A Log" ,
"endpoint_host" : "127.0.0.1" ,
2017-11-20 22:19:32 +00:00
"id" : "5195e96239641e" ,
2017-08-03 00:58:26 +00:00
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 103680 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851318000 ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"trace_id" : "22c4fc8ab3669045" ,
"service_name" : "trivial" ,
"annotation" : "trivial" , //base64: dHJpdmlhbA==
"annotation_key" : "lc" ,
2017-11-20 22:19:32 +00:00
"id" : "5195e96239641e" ,
"parent_id" : "5195e96239641e" ,
"name" : "parent" ,
2017-08-03 00:58:26 +00:00
"endpoint_host" : "127.0.0.1" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 103680 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1498688360851318000 ) . UTC ( ) ,
} ,
} ,
wantErr : false ,
} ,
{
2017-08-22 00:24:54 +00:00
name : "distributed_trace_sample" ,
datafile : "testdata/distributed_trace_sample.dat" ,
contentType : "application/x-thrift" ,
2017-08-03 00:58:26 +00:00
want : [ ] testutil . Metric {
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "5e682bc21ce99c80" ,
"parent_id" : "5e682bc21ce99c80" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "5e682bc21ce99c80" ,
"service_name" : "go-zipkin-testclient" ,
"name" : "main.dud" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 1 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1433330263415871 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "cs" ,
"endpoint_host" : "0.0.0.0:9410" ,
2017-11-20 22:19:32 +00:00
"id" : "5e682bc21ce99c80" ,
"parent_id" : "5e682bc21ce99c80" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "5e682bc21ce99c80" ,
"name" : "main.dud" ,
"service_name" : "go-zipkin-testclient" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 1 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1433330263415871 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "cr" ,
"endpoint_host" : "0.0.0.0:9410" ,
2017-11-20 22:19:32 +00:00
"id" : "5e682bc21ce99c80" ,
"parent_id" : "5e682bc21ce99c80" ,
2017-08-03 00:58:26 +00:00
"trace_id" : "5e682bc21ce99c80" ,
"name" : "main.dud" ,
"service_name" : "go-zipkin-testclient" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : ( time . Duration ( 1 ) * time . Microsecond ) . Nanoseconds ( ) ,
} ,
Time : time . Unix ( 0 , 1433330263415871 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
} ,
} ,
2017-08-22 00:24:54 +00:00
{
name : "JSON rather than thrift" ,
datafile : "testdata/json/brave-tracer-example.json" ,
contentType : "application/json" ,
want : [ ] testutil . Metric {
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} , Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "sr" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "ss" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "Demo2Application" ,
"annotation_key" : "mvc.controller.class" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "hi2" ,
"annotation_key" : "mvc.controller.method" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "192.168.0.8:test:8010" ,
"annotation_key" : "spring.instance_id" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 3000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538791000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "cs" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "cr" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "localhost" ,
"annotation_key" : "http.host" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "GET" ,
"annotation_key" : "http.method" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "/hi2" ,
"annotation_key" : "http.path" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "http://localhost:8010/hi2" ,
"annotation_key" : "http.url" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "192.168.0.8:test:8010" ,
"annotation_key" : "spring.instance_id" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "b26412d1ac16767d" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi2" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 10000000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538786000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
{
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "sr" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "ss" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "Demo2Application" ,
"annotation_key" : "mvc.controller.class" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "hi" ,
"annotation_key" : "mvc.controller.method" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
testutil . Metric {
Measurement : "zipkin" ,
Tags : map [ string ] string {
"annotation" : "192.168.0.8:test:8010" ,
"annotation_key" : "spring.instance_id" ,
"endpoint_host" : "192.168.0.8:8010" ,
2017-11-20 22:19:32 +00:00
"id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"name" : "http:/hi" ,
2017-11-20 22:19:32 +00:00
"parent_id" : "7312f822d43d0fd8" ,
2017-08-22 00:24:54 +00:00
"service_name" : "test" ,
"trace_id" : "7312f822d43d0fd8" ,
} ,
Fields : map [ string ] interface { } {
"duration_ns" : int64 ( 23393000 ) ,
} ,
Time : time . Unix ( 0 , 1503031538778000 * int64 ( time . Microsecond ) ) . UTC ( ) ,
} ,
} ,
} ,
2017-08-03 00:58:26 +00:00
}
z := & Zipkin {
Path : "/api/v1/spans" ,
Port : 0 ,
}
err := z . Start ( & mockAcc )
if err != nil {
t . Fatal ( "Failed to start zipkin server" )
}
defer z . Stop ( )
for _ , tt := range tests {
t . Run ( tt . name , func ( t * testing . T ) {
mockAcc . ClearMetrics ( )
2017-08-22 00:24:54 +00:00
if err := postThriftData ( tt . datafile , z . address , tt . contentType ) ; err != nil {
2017-08-03 00:58:26 +00:00
t . Fatalf ( "Posting data to http endpoint /api/v1/spans failed. Error: %s\n" , err )
}
mockAcc . Wait ( len ( tt . want ) ) //Since the server is running concurrently, we need to wait for the number of data points we want to test to be added to the Accumulator.
if len ( mockAcc . Errors ) > 0 != tt . wantErr {
t . Fatalf ( "Got unexpected errors. want error = %v, errors = %v\n" , tt . wantErr , mockAcc . Errors )
}
var got [ ] testutil . Metric
for _ , m := range mockAcc . Metrics {
got = append ( got , * m )
}
if ! cmp . Equal ( tt . want , got ) {
t . Fatalf ( "Got != Want\n %s" , cmp . Diff ( tt . want , got ) )
}
} )
}
mockAcc . ClearMetrics ( )
z . Stop ( )
// Make sure there is no erroneous error on shutdown
if len ( mockAcc . Errors ) != 0 {
t . Fatal ( "Expected no errors on shutdown" )
}
}
2017-08-22 00:24:54 +00:00
func postThriftData ( datafile , address , contentType string ) error {
2017-08-03 00:58:26 +00:00
dat , err := ioutil . ReadFile ( datafile )
if err != nil {
return fmt . Errorf ( "could not read from data file %s" , datafile )
}
req , err := http . NewRequest ( "POST" , fmt . Sprintf ( "http://%s/api/v1/spans" , address ) , bytes . NewReader ( dat ) )
if err != nil {
return fmt . Errorf ( "HTTP request creation failed" )
}
2017-08-22 00:24:54 +00:00
req . Header . Set ( "Content-Type" , contentType )
2017-08-03 00:58:26 +00:00
client := & http . Client { }
_ , err = client . Do ( req )
if err != nil {
return fmt . Errorf ( "HTTP POST request to zipkin endpoint %s failed %v" , address , err )
}
return nil
}