TUN-813: Clean up cloudflared dependencies

This commit is contained in:
Areg Harutyunyan
2018-07-24 18:04:33 -05:00
parent d06fc520c7
commit 0468866626
3310 changed files with 993 additions and 1223303 deletions

View File

@@ -1,77 +0,0 @@
package pogs
import (
"encoding/hex"
"math/rand"
"testing"
"zombiezen.com/go/capnproto2"
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
)
type A struct {
Name string
BirthDay int64
Phone string
Siblings int32
Spouse bool
Money float64
}
func generateA(r *rand.Rand) *A {
return &A{
Name: randString(r, 16),
BirthDay: r.Int63(),
Phone: randString(r, 10),
Siblings: r.Int31n(5),
Spouse: r.Intn(2) == 1,
Money: r.Float64(),
}
}
func BenchmarkExtract(b *testing.B) {
r := rand.New(rand.NewSource(12345))
data := make([][]byte, 1000)
for i := range data {
a := generateA(r)
msg, seg, _ := capnp.NewMessage(capnp.SingleSegment(nil))
root, _ := air.NewRootBenchmarkA(seg)
Insert(air.BenchmarkA_TypeID, root.Struct, a)
data[i], _ = msg.Marshal()
}
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
msg, _ := capnp.Unmarshal(data[r.Intn(len(data))])
root, _ := msg.RootPtr()
var a A
Extract(&a, air.BenchmarkA_TypeID, root.Struct())
}
}
func BenchmarkInsert(b *testing.B) {
r := rand.New(rand.NewSource(12345))
data := make([]*A, 1000)
for i := range data {
data[i] = generateA(r)
}
arena := make([]byte, 0, 512)
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
a := data[r.Intn(len(data))]
msg, seg, _ := capnp.NewMessage(capnp.SingleSegment(arena[:0]))
root, _ := air.NewRootBenchmarkA(seg)
Insert(air.BenchmarkA_TypeID, root.Struct, a)
msg.Marshal()
}
}
func randString(r *rand.Rand, n int) string {
b := make([]byte, (n+1)/2)
// Go 1.6 adds a Rand.Read method, but since we want to be compatible with Go 1.4...
for i := range b {
b[i] = byte(r.Intn(255))
}
return hex.EncodeToString(b)[:n]
}

View File

@@ -1,360 +0,0 @@
package pogs
import (
"reflect"
"testing"
"zombiezen.com/go/capnproto2"
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
)
type VerVal struct {
Val int16
}
type VerOneData struct {
VerVal
}
type VerTwoData struct {
*VerVal
Duo int64
}
type F16 struct {
PlaneBase `capnp:"base"`
}
func TestExtract_Embed(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v1, err := air.NewRootVerOneData(seg)
if err != nil {
t.Fatalf("NewRootVerOneData: %v", err)
}
v1.SetVal(123)
out := new(VerOneData)
if err := Extract(out, air.VerOneData_TypeID, v1.Struct); err != nil {
t.Errorf("Extract error: %v", err)
}
if out.Val != 123 {
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerOneData{VerVal{123}}))
}
}
func TestExtract_EmbedPtr(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v2, err := air.NewRootVerTwoData(seg)
if err != nil {
t.Fatalf("NewRootVerTwoData: %v", err)
}
v2.SetVal(123)
v2.SetDuo(456)
out := new(VerTwoData)
if err := Extract(out, air.VerTwoData_TypeID, v2.Struct); err != nil {
t.Errorf("Extract error: %v", err)
}
if out.VerVal == nil || out.Val != 123 || out.Duo != 456 {
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerTwoData{&VerVal{123}, 456}))
}
}
func TestExtract_EmbedOmit(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v2, err := air.NewRootVerTwoData(seg)
if err != nil {
t.Fatalf("NewRootVerTwoData: %v", err)
}
v2.SetVal(123)
v2.SetDuo(456)
out := new(VerTwoDataOmit)
if err := Extract(out, air.VerTwoData_TypeID, v2.Struct); err != nil {
t.Errorf("Extract error: %v", err)
}
if out.Val != 0 || out.Duo != 456 {
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerTwoDataOmit{VerVal{}, 456}))
}
}
func TestExtract_EmbedName(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
f16, err := air.NewRootF16(seg)
if err != nil {
t.Fatalf("NewRootF16: %v", err)
}
base, err := f16.NewBase()
if err != nil {
t.Fatalf("F16.NewBase: %v", err)
}
if err := base.SetName("ALL YOUR BASE"); err != nil {
t.Fatalf("Planebase.SetName: %v", err)
}
base.SetRating(5)
base.SetCanFly(true)
out := new(F16)
if err := Extract(out, air.F16_TypeID, f16.Struct); err != nil {
t.Errorf("Extract error: %v", err)
}
if out.Name != "ALL YOUR BASE" || out.Rating != 5 || !out.CanFly {
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&F16{PlaneBase{Name: "ALL YOUR BASE", Rating: 5, CanFly: true}}))
}
}
func TestInsert_Embed(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v1, err := air.NewRootVerOneData(seg)
if err != nil {
t.Fatalf("NewRootVerOneData: %v", err)
}
gv1 := &VerOneData{VerVal{123}}
err = Insert(air.VerOneData_TypeID, v1.Struct, gv1)
if err != nil {
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv1), err)
}
if v1.Val() != 123 {
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv1), v1)
}
}
func TestInsert_EmbedPtr(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v2, err := air.NewRootVerTwoData(seg)
if err != nil {
t.Fatalf("NewRootVerTwoData: %v", err)
}
gv2 := &VerTwoData{&VerVal{123}, 456}
err = Insert(air.VerTwoData_TypeID, v2.Struct, gv2)
if err != nil {
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv2), err)
}
if v2.Val() != 123 || v2.Duo() != 456 {
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv2), v2)
}
}
func TestInsert_EmbedNilPtr(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v2, err := air.NewRootVerTwoData(seg)
if err != nil {
t.Fatalf("NewRootVerTwoData: %v", err)
}
gv2 := &VerTwoData{nil, 456}
err = Insert(air.VerTwoData_TypeID, v2.Struct, gv2)
if err != nil {
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv2), err)
}
if v2.Val() != 0 || v2.Duo() != 456 {
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv2), v2)
}
}
func TestInsert_EmbedOmit(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v2, err := air.NewRootVerTwoData(seg)
if err != nil {
t.Fatalf("NewRootVerTwoData: %v", err)
}
in := &VerTwoDataOmit{VerVal{123}, 456}
err = Insert(air.VerTwoData_TypeID, v2.Struct, in)
if err != nil {
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(in), err)
}
if v2.Val() != 0 || v2.Duo() != 456 {
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(in), v2)
}
}
func TestInsert_EmbedNamed(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
f16, err := air.NewRootF16(seg)
if err != nil {
t.Fatalf("NewRootF16: %v", err)
}
in := &F16{PlaneBase{Name: "ALL YOUR BASE", Rating: 5, CanFly: true}}
err = Insert(air.F16_TypeID, f16.Struct, in)
if err != nil {
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(in), err)
}
base, err := f16.Base()
if err != nil {
t.Errorf("f16.base: %v", err)
}
name, err := base.Name()
if err != nil {
t.Errorf("f16.base.name: %v", err)
}
if name != "ALL YOUR BASE" || base.Rating() != 5 || !base.CanFly() {
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(in), f16)
}
}
type VerValNoTag struct {
Val int16
}
type VerValTag1 struct {
Val int16 `capnp:"val"`
}
type VerValTag2 struct {
Val int16 `capnp:"val"`
}
type VerValTag3 struct {
Val int16 `capnp:"val"`
}
type VerTwoDataOmit struct {
VerVal `capnp:"-"`
Duo int64
}
type VerOneDataTop struct {
Val int16
VerVal
}
type VerOneDataTopWithLowerCollision struct {
Val int16
VerVal
VerValNoTag
}
type VerOneDataNoTags struct {
VerVal
VerValNoTag
}
type VerOneData1Tag struct {
VerVal
VerValTag1
}
type VerOneData1TagWithUntagged struct {
VerVal
VerValTag1
VerValNoTag
}
type VerOneData2Tags struct {
VerValTag1
VerValTag2
}
type VerOneData3Tags struct {
VerValTag1
VerValTag2
VerValTag3
}
func TestExtract_EmbedCollide(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Fatalf("NewMessage: %v", err)
}
v1, err := air.NewRootVerOneData(seg)
if err != nil {
t.Fatalf("NewRootVerOneData: %v", err)
}
v1.SetVal(123)
tests := []struct {
name string
want interface{}
}{
{"top", &VerOneDataTop{Val: 123}},
{"no tags", &VerOneDataNoTags{}},
{"1 tag", &VerOneData1Tag{VerValTag1: VerValTag1{123}}},
{"1 tag with untagged", &VerOneData1TagWithUntagged{VerValTag1: VerValTag1{123}}},
{"2 tags", &VerOneData2Tags{}},
{"3 tags", &VerOneData3Tags{}},
{"top with lower collision", &VerOneDataTopWithLowerCollision{Val: 123}},
}
for _, test := range tests {
out := reflect.New(reflect.TypeOf(test.want).Elem()).Interface()
if err := Extract(out, air.VerOneData_TypeID, v1.Struct); err != nil {
t.Errorf("%s: Extract error: %v", test.name, err)
}
if !reflect.DeepEqual(out, test.want) {
t.Errorf("%s: Extract produced %s; want %s", test.name, zpretty.Sprint(out), zpretty.Sprint(test.want))
}
}
}
func TestInsert_EmbedCollide(t *testing.T) {
tests := []struct {
name string
in interface{}
val int16
}{
{"top", &VerOneDataTop{Val: 123, VerVal: VerVal{456}}, 123},
{"no tags", &VerOneDataNoTags{VerVal: VerVal{123}, VerValNoTag: VerValNoTag{456}}, 0},
{"1 tag", &VerOneData1Tag{VerVal: VerVal{123}, VerValTag1: VerValTag1{456}}, 456},
{
"1 tag with untagged",
&VerOneData1TagWithUntagged{
VerVal: VerVal{123},
VerValTag1: VerValTag1{456},
VerValNoTag: VerValNoTag{789},
},
456,
},
{"2 tags", &VerOneData2Tags{VerValTag1: VerValTag1{123}, VerValTag2: VerValTag2{456}}, 0},
{"3 tags", &VerOneData3Tags{VerValTag1: VerValTag1{123}, VerValTag2: VerValTag2{456}, VerValTag3: VerValTag3{789}}, 0},
{
"top with lower collision",
&VerOneDataTopWithLowerCollision{
Val: 123,
VerVal: VerVal{456},
VerValNoTag: VerValNoTag{789},
},
123,
},
}
for _, test := range tests {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
t.Errorf("%s: NewMessage: %v", test.name, err)
continue
}
v1, err := air.NewRootVerOneData(seg)
if err != nil {
t.Errorf("%s: NewRootVerOneData: %v", test.name, err)
continue
}
err = Insert(air.VerOneData_TypeID, v1.Struct, test.in)
if err != nil {
t.Errorf("%s: Insert(..., %s): %v", test.name, zpretty.Sprint(test.in), err)
}
if v1.Val() != test.val {
t.Errorf("%s: Insert(..., %s) produced %v; want (val = %d)", test.name, zpretty.Sprint(test.in), v1, test.val)
}
}
}

View File

@@ -1,87 +0,0 @@
package pogs_test
import (
"fmt"
"zombiezen.com/go/capnproto2"
"zombiezen.com/go/capnproto2/internal/demo/books"
"zombiezen.com/go/capnproto2/pogs"
)
var bookData = []byte{
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
0xa0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
0x57, 0x61, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20,
0x50, 0x65, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
}
func ExampleExtract() {
// books.capnp:
// struct Book {
// title @0 :Text;
// pageCount @1 :Int32;
// }
type Book struct {
Title string
PageCount int32
}
// Read the message from bytes.
msg, err := capnp.Unmarshal(bookData)
if err != nil {
panic(err)
}
root, err := msg.RootPtr()
if err != nil {
panic(err)
}
// Extract the book from the root struct.
b := new(Book)
if err := pogs.Extract(b, books.Book_TypeID, root.Struct()); err != nil {
panic(err)
}
fmt.Printf("%q has %d pages\n", b.Title, b.PageCount)
// Output:
// "War and Peace" has 1440 pages
}
func ExampleInsert() {
// books.capnp:
// struct Book {
// title @0 :Text;
// pageCount @1 :Int32;
// }
type Book struct {
Title string
PageCount int32
}
// Allocate a new Cap'n Proto Book struct.
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
if err != nil {
panic(err)
}
root, err := books.NewRootBook(seg)
if err != nil {
panic(err)
}
// Insert the book struct into the Cap'n Proto struct.
b := &Book{
Title: "War and Peace",
PageCount: 1440,
}
if err := pogs.Insert(books.Book_TypeID, root.Struct, b); err != nil {
panic(err)
}
fmt.Println(root)
// Output:
// (title = "War and Peace", pageCount = 1440)
}

View File

@@ -1,172 +0,0 @@
package pogs
import (
"testing"
"golang.org/x/net/context"
"zombiezen.com/go/capnproto2"
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
)
type simpleEcho struct{}
func checkFatal(t *testing.T, name string, err error) {
if err != nil {
t.Fatalf("%s for TestInsertIFace: %v", name, err)
}
}
func (s simpleEcho) Echo(p air.Echo_echo) error {
text, err := p.Params.In()
if err != nil {
return err
}
p.Results.SetOut(text)
return nil
}
type EchoBase struct {
Echo air.Echo
}
type EchoBases struct {
Bases []EchoBase
}
type Hoth struct {
Base EchoBase
}
func TestInsertIFace(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
checkFatal(t, "NewMessage", err)
h, err := air.NewRootHoth(seg)
checkFatal(t, "NewRootHoth", err)
err = Insert(air.Hoth_TypeID, h.Struct, Hoth{
Base: EchoBase{Echo: air.Echo_ServerToClient(simpleEcho{})},
})
checkFatal(t, "Insert", err)
base, err := h.Base()
checkFatal(t, "h.Base", err)
echo := base.Echo()
testEcho(t, echo)
}
func TestInsertListIFace(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
checkFatal(t, "NewMessage", err)
wrapper, err := air.NewEchoBases(seg)
checkFatal(t, "NewEchoBases", err)
err = Insert(air.EchoBases_TypeID, wrapper.Struct, EchoBases{
Bases: []EchoBase{
{Echo: air.Echo_ServerToClient(simpleEcho{})},
{Echo: air.Echo_ServerToClient(simpleEcho{})},
},
})
checkFatal(t, "Insert", err)
bases, err := wrapper.Bases()
checkFatal(t, "Bases", err)
for i := 0; i < bases.Len(); i++ {
testEcho(t, bases.At(i).Echo())
}
}
func TestInsertNilInterface(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
checkFatal(t, "NewMessage", err)
h, err := air.NewRootHoth(seg)
checkFatal(t, "NewRootHoth", err)
err = Insert(air.Hoth_TypeID, h.Struct, Hoth{
Base: EchoBase{Echo: air.Echo{Client: nil}},
})
checkFatal(t, "Insert", err)
base, err := h.Base()
checkFatal(t, "h.Base", err)
echo := base.Echo()
if echo.Client != nil {
t.Fatalf("Expected nil client, but got %v", echo.Client)
}
}
func TestExtractIFace(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
checkFatal(t, "NewMessage", err)
h, err := air.NewRootHoth(seg)
checkFatal(t, "NewRootHoth", err)
base, err := air.NewEchoBase(seg)
checkFatal(t, "NewEchoBase", err)
h.SetBase(base)
base.SetEcho(air.Echo_ServerToClient(simpleEcho{}))
extractedHoth := Hoth{}
err = Extract(&extractedHoth, air.Hoth_TypeID, h.Struct)
checkFatal(t, "Extract", err)
testEcho(t, extractedHoth.Base.Echo)
}
func TestExtractListIFace(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
checkFatal(t, "NewMessage", err)
wrapper, err := air.NewEchoBases(seg)
checkFatal(t, "NewEchoBases", err)
length := 2
list, err := air.NewEchoBase_List(seg, int32(length))
checkFatal(t, "NewEchoBase_List", err)
for i := 0; i < length; i++ {
base, err := air.NewEchoBase(seg)
base.SetEcho(air.Echo_ServerToClient(simpleEcho{}))
checkFatal(t, "NewEchoBase", err)
list.Set(i, base)
}
wrapper.SetBases(list)
extractedBases := EchoBases{}
err = Extract(&extractedBases, air.EchoBases_TypeID, wrapper.Struct)
checkFatal(t, "Extract", err)
if extractedBases.Bases == nil {
t.Fatal("Bases is nil")
}
if len(extractedBases.Bases) != length {
t.Fatalf("Bases has Wrong length: got %d but wanted %d.",
len(extractedBases.Bases), length)
}
for _, v := range extractedBases.Bases {
testEcho(t, v.Echo)
}
}
// Make sure extract correctly handles missing interfaces.
func TestExtractMissingIFace(t *testing.T) {
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
base, err := air.NewRootEchoBase(seg)
checkFatal(t, "NewRootEchoBase", err)
// Fill the client in, so we know that after extracting, if
// it's nil it's because it was *set*, not just left over:
extractedBase := EchoBase{Echo: air.Echo_ServerToClient(simpleEcho{})}
err = Extract(&extractedBase, air.EchoBase_TypeID, base.Struct)
checkFatal(t, "Extract", err)
if extractedBase.Echo.Client != nil {
t.Fatalf("Expected nil client but got %v", extractedBase.Echo.Client)
}
}
func testEcho(t *testing.T, echo air.Echo) {
expected := "Hello!"
result, err := echo.Echo(context.TODO(), func(p air.Echo_echo_Params) error {
p.SetIn(expected)
return nil
}).Struct()
checkFatal(t, "Echo", err)
actual, err := result.Out()
checkFatal(t, "result.Out", err)
if actual != expected {
t.Fatal("Echo result did not match input; "+
"wanted %q but got %q.", expected, actual)
}
}

File diff suppressed because it is too large Load Diff