Switch from glide to govendor
This commit is contained in:
		
							
								
								
									
										3
									
								
								vendor/github.com/kr/logfmt/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/kr/logfmt/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,3 +0,0 @@
 | 
			
		||||
*.test
 | 
			
		||||
*.swp
 | 
			
		||||
*.prof
 | 
			
		||||
							
								
								
									
										59
									
								
								vendor/github.com/kr/logfmt/bench_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/github.com/kr/logfmt/bench_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,59 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func BenchmarkScanner(b *testing.B) {
 | 
			
		||||
	b.StopTimer()
 | 
			
		||||
	data := []byte("measure.test=1 measure.foo=bar measure.time=2h measure=\"foo\"")
 | 
			
		||||
	h := new(nopHandler)
 | 
			
		||||
	b.SetBytes(int64(len(data)))
 | 
			
		||||
	b.StartTimer()
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		if err := gotoScanner(data, h); err != nil {
 | 
			
		||||
			panic(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type nopHandler struct {
 | 
			
		||||
	called bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (h *nopHandler) HandleLogfmt(key, val []byte) error {
 | 
			
		||||
	h.called = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkDecodeCustom(b *testing.B) {
 | 
			
		||||
	data := []byte(`a=foo b=10ms c=cat E="123" d foo= emp=`)
 | 
			
		||||
 | 
			
		||||
	h := new(nopHandler)
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		if err := Unmarshal(data, h); err != nil {
 | 
			
		||||
			panic(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if !h.called {
 | 
			
		||||
		panic("handler not called")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkDecodeDefault(b *testing.B) {
 | 
			
		||||
	data := []byte(`a=foo b=10ms c=cat E="123" d foo= emp=`)
 | 
			
		||||
	var g struct {
 | 
			
		||||
		A string
 | 
			
		||||
		B time.Duration
 | 
			
		||||
		C *string
 | 
			
		||||
		E string
 | 
			
		||||
		D bool
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		if err := Unmarshal(data, &g); err != nil {
 | 
			
		||||
			panic(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										110
									
								
								vendor/github.com/kr/logfmt/decode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										110
									
								
								vendor/github.com/kr/logfmt/decode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,110 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type pair struct {
 | 
			
		||||
	k, v string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type coll struct {
 | 
			
		||||
	a []pair
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *coll) HandleLogfmt(key, val []byte) error {
 | 
			
		||||
	c.a = append(c.a, pair{string(key), string(val)})
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDecodeCustom(t *testing.T) {
 | 
			
		||||
	data := []byte(`a=foo b=10ms c=cat E="123" d foo= emp=`)
 | 
			
		||||
 | 
			
		||||
	g := new(coll)
 | 
			
		||||
	if err := Unmarshal(data, g); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w := []pair{
 | 
			
		||||
		{"a", "foo"},
 | 
			
		||||
		{"b", "10ms"},
 | 
			
		||||
		{"c", "cat"},
 | 
			
		||||
		{"E", "123"},
 | 
			
		||||
		{"d", ""},
 | 
			
		||||
		{"foo", ""},
 | 
			
		||||
		{"emp", ""},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !reflect.DeepEqual(w, g.a) {
 | 
			
		||||
		t.Errorf("\nwant %v\n got %v", w, g)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDecodeDefault(t *testing.T) {
 | 
			
		||||
	var g struct {
 | 
			
		||||
		Float  float64
 | 
			
		||||
		NFloat *float64
 | 
			
		||||
		String string
 | 
			
		||||
		Int    int
 | 
			
		||||
		D      time.Duration
 | 
			
		||||
		NB     *[]byte
 | 
			
		||||
		Here   bool
 | 
			
		||||
		This   int `logfmt:"that"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	em, err := NewStructHandler(&g)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tests = []struct {
 | 
			
		||||
		name string
 | 
			
		||||
		val  string
 | 
			
		||||
		want interface{}
 | 
			
		||||
	}{
 | 
			
		||||
		{"float", "3.14", 3.14},
 | 
			
		||||
		{"nfloat", "123", float64(123)},
 | 
			
		||||
		{"string", "foobar", "foobar"},
 | 
			
		||||
		{"inT", "10", 10},
 | 
			
		||||
		{"d", "1h", 1 * time.Hour},
 | 
			
		||||
		{"nb", "bytes!", []byte("bytes!")},
 | 
			
		||||
		{"here", "", true},
 | 
			
		||||
		{"that", "5", 5},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rv := reflect.Indirect(reflect.ValueOf(&g))
 | 
			
		||||
	for i, test := range tests {
 | 
			
		||||
		err = em.HandleLogfmt([]byte(test.name), []byte(test.val))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.Error(err)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fv := reflect.Indirect(rv.Field(i))
 | 
			
		||||
		if !fv.IsValid() {
 | 
			
		||||
			ft := rv.Type().Field(i)
 | 
			
		||||
			t.Errorf("%s is invalid", ft.Name)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		gv := fv.Interface()
 | 
			
		||||
		if !reflect.DeepEqual(gv, test.want) {
 | 
			
		||||
			t.Errorf("want %T %#v, got %T %#v", test.want, test.want, gv, gv)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if g.Float != 3.14 {
 | 
			
		||||
		t.Errorf("want %v, got %v", 3.14, g.Float)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = em.HandleLogfmt([]byte("nfloat"), []byte("123"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if g.NFloat == nil || *g.NFloat != 123 {
 | 
			
		||||
		t.Errorf("want %v, got %v", 123, *g.NFloat)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								vendor/github.com/kr/logfmt/example_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/github.com/kr/logfmt/example_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,59 +0,0 @@
 | 
			
		||||
package logfmt_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/kr/logfmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Measurement struct {
 | 
			
		||||
	Key  string
 | 
			
		||||
	Val  float64
 | 
			
		||||
	Unit string // (e.g. ms, MB, etc)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Measurements []*Measurement
 | 
			
		||||
 | 
			
		||||
var measurePrefix = []byte("measure.")
 | 
			
		||||
 | 
			
		||||
func (mm *Measurements) HandleLogfmt(key, val []byte) error {
 | 
			
		||||
	if !bytes.HasPrefix(key, measurePrefix) {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	i := bytes.LastIndexFunc(val, isDigit)
 | 
			
		||||
	v, err := strconv.ParseFloat(string(val[:i+1]), 10)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	m := &Measurement{
 | 
			
		||||
		Key:  string(key[len(measurePrefix):]),
 | 
			
		||||
		Val:  v,
 | 
			
		||||
		Unit: string(val[i+1:]),
 | 
			
		||||
	}
 | 
			
		||||
	*mm = append(*mm, m)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// return true if r is an ASCII digit only, as opposed to unicode.IsDigit.
 | 
			
		||||
func isDigit(r rune) bool {
 | 
			
		||||
	return '0' <= r && r <= '9'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Example_customHandler() {
 | 
			
		||||
	var data = []byte("measure.a=1ms measure.b=10 measure.c=100MB measure.d=1s garbage")
 | 
			
		||||
 | 
			
		||||
	mm := make(Measurements, 0)
 | 
			
		||||
	if err := logfmt.Unmarshal(data, &mm); err != nil {
 | 
			
		||||
		log.Fatalf("err=%q", err)
 | 
			
		||||
	}
 | 
			
		||||
	for _, m := range mm {
 | 
			
		||||
		fmt.Printf("%v\n", *m)
 | 
			
		||||
	}
 | 
			
		||||
	// Output:
 | 
			
		||||
	// {a 1 ms}
 | 
			
		||||
	// {b 10 }
 | 
			
		||||
	// {c 100 MB}
 | 
			
		||||
	// {d 1 s}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										67
									
								
								vendor/github.com/kr/logfmt/scanner_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								vendor/github.com/kr/logfmt/scanner_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,67 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestScannerSimple(t *testing.T) {
 | 
			
		||||
	type T struct {
 | 
			
		||||
		k string
 | 
			
		||||
		v string
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		data string
 | 
			
		||||
		want []T
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			`a=1 b="bar" ƒ=2h3s r="esc\t" d x=sf   `,
 | 
			
		||||
			[]T{
 | 
			
		||||
				{"a", "1"},
 | 
			
		||||
				{"b", "bar"},
 | 
			
		||||
				{"ƒ", "2h3s"},
 | 
			
		||||
				{"r", "esc\t"},
 | 
			
		||||
				{"d", ""},
 | 
			
		||||
				{"x", "sf"},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{`x= `, []T{{"x", ""}}},
 | 
			
		||||
		{`y=`, []T{{"y", ""}}},
 | 
			
		||||
		{`y`, []T{{"y", ""}}},
 | 
			
		||||
		{`y=f`, []T{{"y", "f"}}},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		var got []T
 | 
			
		||||
		h := func(key, val []byte) error {
 | 
			
		||||
			got = append(got, T{string(key), string(val)})
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
		gotoScanner([]byte(test.data), HandlerFunc(h))
 | 
			
		||||
		if !reflect.DeepEqual(test.want, got) {
 | 
			
		||||
			t.Errorf("want %q, got %q", test.want, got)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var called bool
 | 
			
		||||
	h := func(key, val []byte) error { called = true; return nil }
 | 
			
		||||
	err := gotoScanner([]byte(`foo="b`), HandlerFunc(h))
 | 
			
		||||
	if err != ErrUnterminatedString {
 | 
			
		||||
		t.Errorf("want %v, got %v", ErrUnterminatedString, err)
 | 
			
		||||
	}
 | 
			
		||||
	if called {
 | 
			
		||||
		t.Error("did not expect call to handler")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestScannerAllocs(t *testing.T) {
 | 
			
		||||
	data := []byte(`a=1 b="bar" ƒ=2h3s r="esc\t" d x=sf   `)
 | 
			
		||||
	h := func(key, val []byte) error { return nil }
 | 
			
		||||
	allocs := testing.AllocsPerRun(1000, func() {
 | 
			
		||||
		gotoScanner(data, HandlerFunc(h))
 | 
			
		||||
	})
 | 
			
		||||
	if allocs > 1 {
 | 
			
		||||
		t.Errorf("got %f, want <=1", allocs)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user