summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorYuxuan 'fishy' Wang <yuxuan.wang@reddit.com>2022-10-21 10:27:40 -0700
committerYuxuan 'fishy' Wang <fishywang@gmail.com>2022-10-26 14:40:10 -0700
commit2acfe0fc7a1747c327da66c8a693840ba0c5a016 (patch)
treef07b250964c0295a9d9908bb20e8e2028c9fed1f /test
parentcea5559ecf458ccbb251594dba571f01bf0a2402 (diff)
downloadthrift-2acfe0fc7a1747c327da66c8a693840ba0c5a016.tar.gz
THRIFT-5650: Implement UUID in Go compiler
Client: go
Diffstat (limited to 'test')
-rw-r--r--test/ConstantsDemo.thrift14
-rw-r--r--test/go/Makefile.am4
-rw-r--r--test/go/src/bin/testclient/main.go15
-rw-r--r--test/go/src/common/clientserver_test.go20
-rw-r--r--test/go/src/common/printing_handler.go101
-rw-r--r--test/go/src/common/simple_handler.go6
6 files changed, 116 insertions, 44 deletions
diff --git a/test/ConstantsDemo.thrift b/test/ConstantsDemo.thrift
index 2245657f6..8fac6db93 100644
--- a/test/ConstantsDemo.thrift
+++ b/test/ConstantsDemo.thrift
@@ -20,11 +20,16 @@
namespace cpp yozone
namespace erl consts_
namespace haxe constantsDemo
+namespace go constantsdemo
+
+typedef uuid myUUID
struct thing {
1: i32 hello,
2: i32 goodbye
3: uuid id
+ 4: myUUID my_id
+ 5: optional myUUID my_optional_id
}
enum enumconstants {
@@ -51,12 +56,15 @@ const double GEn_DU = 085.2355
const string GEN_STRING = "asldkjasfd"
const double e10 = 1e10 // fails with 0.9.3 and earlier
-const double e11 = -1e10
+const double e11 = -1e10
// uuids are accepted with or without curly braces
const uuid GEN_UUID = '00000000-4444-CCCC-ffff-0123456789ab'
const uuid GEN_GUID = '{00112233-4455-6677-8899-aaBBccDDeeFF}'
+const myUUID MY_UUID = '00000000-4444-CCCC-ffff-0123456789ab'
+const myUUID MY_GUID = '{00112233-4455-6677-8899-aaBBccDDeeFF}'
+
const map<i32,i32> GEN_MAP = { 35532 : 233, 43523 : 853 }
const list<i32> GEN_LIST = [ 235235, 23598352, 3253523 ]
@@ -64,9 +72,9 @@ const map<i32, map<i32, i32>> GEN_MAPMAP = { 235 : { 532 : 53255, 235:235}}
const map<string,i32> GEN_MAP2 = { "hello" : 233, "lkj98d" : 853, 'lkjsdf' : 098325 }
-const thing GEN_THING = { 'hello' : 325, 'goodbye' : 325352, 'id' : '{00112233-4455-6677-8899-aaBBccDDeeFF}' }
+const thing GEN_THING = { 'hello' : 325, 'goodbye' : 325352, 'id' : '{00112233-4455-6677-8899-aaBBccDDeeFF}', 'my_id': '00000000-4444-CCCC-ffff-0123456789ab', 'my_optional_id': '00000000-4444-CCCC-ffff-0123456789ab' }
-const map<i32,thing> GEN_WHAT = { 35 : { 'hello' : 325, 'goodbye' : 325352, 'id' : '00000000-4444-CCCC-ffff-0123456789ab' } }
+const map<i32,thing> GEN_WHAT = { 35 : { 'hello' : 325, 'goodbye' : 325352, 'id' : '00000000-4444-CCCC-ffff-0123456789ab', 'my_id': '00000000-4444-CCCC-ffff-0123456789ab', 'my_optional_id': '00000000-4444-CCCC-ffff-0123456789ab' } }
const set<i32> GEN_SET = [ 235, 235, 53235 ]
diff --git a/test/go/Makefile.am b/test/go/Makefile.am
index 32c2be0d9..abed92319 100644
--- a/test/go/Makefile.am
+++ b/test/go/Makefile.am
@@ -26,7 +26,7 @@ GOINSTALLEXTRA =
endif
THRIFTCMD = $(THRIFT) -out src/gen --gen go:thrift_import=github.com/apache/thrift/lib/go/thrift,package_prefix=github.com/apache/thrift/test/go/src/gen/$(COMPILER_EXTRAFLAG)
-THRIFTTEST = $(top_srcdir)/test/v0.16/ThriftTest.thrift
+THRIFTTEST = $(top_srcdir)/test/ThriftTest.thrift
precross: bin/testclient bin/testserver
@@ -40,6 +40,7 @@ gopath: $(THRIFT) ThriftTest.thrift
mkdir -p src/gen
$(THRIFTCMD) ThriftTest.thrift
$(THRIFTCMD) ../StressTest.thrift
+ $(THRIFTCMD) ../ConstantsDemo.thrift
touch gopath
bin/testclient: gopath
@@ -58,6 +59,7 @@ check_PROGRAMS: bin/testclient bin/testserver bin/stress
check: gopath genmock
$(GO) test -mod=mod -v ./src/common/...
+ $(GO) test -mod=mod -v ./src/gen/...
genmock: gopath
sh genmock.sh
diff --git a/test/go/src/bin/testclient/main.go b/test/go/src/bin/testclient/main.go
index b7119589e..95fcd47cc 100644
--- a/test/go/src/bin/testclient/main.go
+++ b/test/go/src/bin/testclient/main.go
@@ -140,6 +140,21 @@ func callEverything(client *thrifttest.ThriftTestClient) {
}
}
+ uout := thrift.Tuuid{
+ 0x00, 0x11, 0x22, 0x33,
+ 0x44, 0x55,
+ 0x66, 0x77,
+ 0x88, 0x99,
+ 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
+ }
+ u, err := client.TestUuid(defaultCtx, uout)
+ if err != nil {
+ t.Fatalf("TestUuid failed with %v", err)
+ }
+ if u != uout {
+ t.Fatalf("Unexpected TestUuid() result expected %v, got %v", uout, u)
+ }
+
xs := thrifttest.NewXtruct()
xs.StringThing = "thing"
xs.ByteThing = 42
diff --git a/test/go/src/common/clientserver_test.go b/test/go/src/common/clientserver_test.go
index 64b326a81..a39519d8a 100644
--- a/test/go/src/common/clientserver_test.go
+++ b/test/go/src/common/clientserver_test.go
@@ -102,6 +102,13 @@ var xcept = &thrifttest.Xception{ErrorCode: 1001, Message: "some"}
var defaultCtx = context.Background()
func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, handler *MockThriftTest) {
+ u := thrift.Tuuid{
+ 0x00, 0x11, 0x22, 0x33,
+ 0x44, 0x55,
+ 0x66, 0x77,
+ 0x88, 0x99,
+ 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
+ }
gomock.InOrder(
handler.EXPECT().TestVoid(gomock.Any()),
handler.EXPECT().TestString(gomock.Any(), "thing").Return("thing", nil),
@@ -111,6 +118,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h
handler.EXPECT().TestI32(gomock.Any(), int32(4242)).Return(int32(4242), nil),
handler.EXPECT().TestI64(gomock.Any(), int64(424242)).Return(int64(424242), nil),
// TODO: add TestBinary()
+ handler.EXPECT().TestUuid(gomock.Any(), u).Return(u, nil),
handler.EXPECT().TestDouble(gomock.Any(), float64(42.42)).Return(float64(42.42), nil),
handler.EXPECT().TestStruct(gomock.Any(), &thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}).Return(&thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}, nil),
handler.EXPECT().TestNest(gomock.Any(), &thrifttest.Xtruct2{StructThing: &thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}}).Return(&thrifttest.Xtruct2{StructThing: &thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}}, nil),
@@ -182,6 +190,16 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h
t.Errorf("Unexpected TestI64() result expected 424242, got %d ", i64)
}
+ // TODO: add TestBinary() call
+
+ uret, err := client.TestUuid(defaultCtx, u)
+ if err != nil {
+ t.Errorf("Unexpected error in TestUuid() call: %s", err)
+ }
+ if uret != u {
+ t.Errorf("Unexpected TestUuid() result expected %v, got %v ", uret, u)
+ }
+
d, err := client.TestDouble(defaultCtx, 42.42)
if err != nil {
t.Errorf("Unexpected error in TestDouble() call: %s", err)
@@ -190,8 +208,6 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h
t.Errorf("Unexpected TestDouble() result expected 42.42, got %f ", d)
}
- // TODO: add TestBinary() call
-
xs := thrifttest.NewXtruct()
xs.StringThing = "thing"
xs.ByteThing = 42
diff --git a/test/go/src/common/printing_handler.go b/test/go/src/common/printing_handler.go
index b726373fe..0939a0147 100644
--- a/test/go/src/common/printing_handler.go
+++ b/test/go/src/common/printing_handler.go
@@ -26,6 +26,8 @@ import (
"fmt"
"time"
+ "github.com/apache/thrift/lib/go/thrift"
+
//lint:ignore ST1001 allow dot import here
. "github.com/apache/thrift/test/go/src/gen/thrifttest"
)
@@ -45,7 +47,7 @@ func (p *printingHandler) TestVoid(ctx context.Context) (err error) {
// @return string - returns the string 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestString(ctx context.Context, thing string) (r string, err error) {
fmt.Printf("testString(\"%s\")\n", thing)
return thing, nil
@@ -56,7 +58,7 @@ func (p *printingHandler) TestString(ctx context.Context, thing string) (r strin
// @return bool - returns the bool 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestBool(ctx context.Context, thing bool) (r bool, err error) {
fmt.Printf("testBool(%t)\n", thing)
return thing, nil
@@ -67,7 +69,7 @@ func (p *printingHandler) TestBool(ctx context.Context, thing bool) (r bool, err
// @return byte - returns the byte 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestByte(ctx context.Context, thing int8) (r int8, err error) {
fmt.Printf("testByte(%d)\n", thing)
return thing, nil
@@ -78,7 +80,7 @@ func (p *printingHandler) TestByte(ctx context.Context, thing int8) (r int8, err
// @return i32 - returns the i32 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestI32(ctx context.Context, thing int32) (r int32, err error) {
fmt.Printf("testI32(%d)\n", thing)
return thing, nil
@@ -89,7 +91,7 @@ func (p *printingHandler) TestI32(ctx context.Context, thing int32) (r int32, er
// @return i64 - returns the i64 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestI64(ctx context.Context, thing int64) (r int64, err error) {
fmt.Printf("testI64(%d)\n", thing)
return thing, nil
@@ -100,7 +102,7 @@ func (p *printingHandler) TestI64(ctx context.Context, thing int64) (r int64, er
// @return double - returns the double 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestDouble(ctx context.Context, thing float64) (r float64, err error) {
fmt.Printf("testDouble(%f)\n", thing)
return thing, nil
@@ -111,18 +113,29 @@ func (p *printingHandler) TestDouble(ctx context.Context, thing float64) (r floa
// @return []byte - returns the binary 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestBinary(ctx context.Context, thing []byte) (r []byte, err error) {
fmt.Printf("testBinary(%s)\n", hex.EncodeToString(thing))
return thing, nil
}
+// Prints 'testUuid("%s")' where '%s' is the uuid given. Note that the uuid byte order should be correct.
+// @param uuid thing - the uuid to print
+// @return uuid - returns the uuid 'thing'
+//
+// Parameters:
+// - Thing
+func (p *printingHandler) TestUuid(ctx context.Context, thing thrift.Tuuid) (r thrift.Tuuid, err error) {
+ fmt.Printf("testUuid(%s)\n", thing.String())
+ return thing, nil
+}
+
// Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma separated values
// @param Xtruct thing - the Xtruct to print
// @return Xtruct - returns the Xtruct 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestStruct(ctx context.Context, thing *Xtruct) (r *Xtruct, err error) {
fmt.Printf("testStruct({\"%s\", %d, %d, %d})\n", thing.StringThing, thing.ByteThing, thing.I32Thing, thing.I64Thing)
return thing, err
@@ -133,7 +146,7 @@ func (p *printingHandler) TestStruct(ctx context.Context, thing *Xtruct) (r *Xtr
// @return Xtruct2 - returns the Xtruct2 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestNest(ctx context.Context, nest *Xtruct2) (r *Xtruct2, err error) {
thing := nest.StructThing
fmt.Printf("testNest({%d, {\"%s\", %d, %d, %d}, %d})\n", nest.ByteThing, thing.StringThing, thing.ByteThing, thing.I32Thing, thing.I64Thing, nest.I32Thing)
@@ -141,12 +154,14 @@ func (p *printingHandler) TestNest(ctx context.Context, nest *Xtruct2) (r *Xtruc
}
// Prints 'testMap("{%s")' where thing has been formatted into a string of 'key => value' pairs
-// separated by commas and new lines
+//
+// separated by commas and new lines
+//
// @param map<i32,i32> thing - the map<i32,i32> to print
// @return map<i32,i32> - returns the map<i32,i32> 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestMap(ctx context.Context, thing map[int32]int32) (r map[int32]int32, err error) {
fmt.Printf("testMap({")
first := true
@@ -163,12 +178,14 @@ func (p *printingHandler) TestMap(ctx context.Context, thing map[int32]int32) (r
}
// Prints 'testStringMap("{%s}")' where thing has been formatted into a string of 'key => value' pairs
-// separated by commas and new lines
+//
+// separated by commas and new lines
+//
// @param map<string,string> thing - the map<string,string> to print
// @return map<string,string> - returns the map<string,string> 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestStringMap(ctx context.Context, thing map[string]string) (r map[string]string, err error) {
fmt.Printf("testStringMap({")
first := true
@@ -185,12 +202,14 @@ func (p *printingHandler) TestStringMap(ctx context.Context, thing map[string]st
}
// Prints 'testSet("{%s}")' where thing has been formatted into a string of values
-// separated by commas and new lines
+//
+// separated by commas and new lines
+//
// @param set<i32> thing - the set<i32> to print
// @return set<i32> - returns the set<i32> 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestSet(ctx context.Context, thing []int32) (r []int32, err error) {
fmt.Printf("testSet({")
first := true
@@ -207,12 +226,14 @@ func (p *printingHandler) TestSet(ctx context.Context, thing []int32) (r []int32
}
// Prints 'testList("{%s}")' where thing has been formatted into a string of values
-// separated by commas and new lines
+//
+// separated by commas and new lines
+//
// @param list<i32> thing - the list<i32> to print
// @return list<i32> - returns the list<i32> 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestList(ctx context.Context, thing []int32) (r []int32, err error) {
fmt.Printf("testList({")
for i, v := range thing {
@@ -230,7 +251,7 @@ func (p *printingHandler) TestList(ctx context.Context, thing []int32) (r []int3
// @return Numberz - returns the Numberz 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestEnum(ctx context.Context, thing Numberz) (r Numberz, err error) {
fmt.Printf("testEnum(%d)\n", thing)
return thing, nil
@@ -241,7 +262,7 @@ func (p *printingHandler) TestEnum(ctx context.Context, thing Numberz) (r Number
// @return UserId - returns the UserId 'thing'
//
// Parameters:
-// - Thing
+// - Thing
func (p *printingHandler) TestTypedef(ctx context.Context, thing UserId) (r UserId, err error) {
fmt.Printf("testTypedef(%d)\n", thing)
return thing, nil
@@ -250,10 +271,11 @@ func (p *printingHandler) TestTypedef(ctx context.Context, thing UserId) (r User
// Prints 'testMapMap("%d")' with hello as '%d'
// @param i32 hello - the i32 to print
// @return map<i32,map<i32,i32>> - returns a dictionary with these values:
-// {-4 => {-4 => -4, -3 => -3, -2 => -2, -1 => -1, }, 4 => {1 => 1, 2 => 2, 3 => 3, 4 => 4, }, }
+//
+// {-4 => {-4 => -4, -3 => -3, -2 => -2, -1 => -1, }, 4 => {1 => 1, 2 => 2, 3 => 3, 4 => 4, }, }
//
// Parameters:
-// - Hello
+// - Hello
func (p *printingHandler) TestMapMap(ctx context.Context, hello int32) (r map[int32]map[int32]int32, err error) {
fmt.Printf("testMapMap(%d)\n", hello)
@@ -267,15 +289,17 @@ func (p *printingHandler) TestMapMap(ctx context.Context, hello int32) (r map[in
// So you think you've got this all worked, out eh?
//
// Creates a the returned map with these values and prints it out:
-// { 1 => { 2 => argument,
-// 3 => argument,
-// },
-// 2 => { 6 => <empty Insanity struct>, },
-// }
+//
+// { 1 => { 2 => argument,
+// 3 => argument,
+// },
+// 2 => { 6 => <empty Insanity struct>, },
+// }
+//
// @return map<UserId, map<Numberz,Insanity>> - a map with the above values
//
// Parameters:
-// - Argument
+// - Argument
func (p *printingHandler) TestInsanity(ctx context.Context, argument *Insanity) (r map[UserId]map[Numberz]*Insanity, err error) {
fmt.Printf("testInsanity()\n")
r = make(map[UserId]map[Numberz]*Insanity)
@@ -297,15 +321,16 @@ func (p *printingHandler) TestInsanity(ctx context.Context, argument *Insanity)
// @param Numberz arg4 -
// @param UserId arg5 -
// @return Xtruct - returns an Xtruct with StringThing = "Hello2, ByteThing = arg0, I32Thing = arg1
-// and I64Thing = arg2
+//
+// and I64Thing = arg2
//
// Parameters:
-// - Arg0
-// - Arg1
-// - Arg2
-// - Arg3
-// - Arg4
-// - Arg5
+// - Arg0
+// - Arg1
+// - Arg2
+// - Arg3
+// - Arg4
+// - Arg5
func (p *printingHandler) TestMulti(ctx context.Context, arg0 int8, arg1 int32, arg2 int64, arg3 map[int16]string, arg4 Numberz, arg5 UserId) (r *Xtruct, err error) {
fmt.Printf("testMulti()\n")
r = NewXtruct()
@@ -324,7 +349,7 @@ func (p *printingHandler) TestMulti(ctx context.Context, arg0 int8, arg1 int32,
// else do not throw anything
//
// Parameters:
-// - Arg
+// - Arg
func (p *printingHandler) TestException(ctx context.Context, arg string) (err error) {
fmt.Printf("testException(%s)\n", arg)
switch arg {
@@ -348,8 +373,8 @@ func (p *printingHandler) TestException(ctx context.Context, arg string) (err er
// @return Xtruct - an Xtruct with StringThing = arg1
//
// Parameters:
-// - Arg0
-// - Arg1
+// - Arg0
+// - Arg1
func (p *printingHandler) TestMultiException(ctx context.Context, arg0 string, arg1 string) (r *Xtruct, err error) {
fmt.Printf("testMultiException(%s, %s)\n", arg0, arg1)
switch arg0 {
@@ -378,7 +403,7 @@ func (p *printingHandler) TestMultiException(ctx context.Context, arg0 string, a
// @param i32 secondsToSleep - the number of seconds to sleep
//
// Parameters:
-// - SecondsToSleep
+// - SecondsToSleep
func (p *printingHandler) TestOneway(ctx context.Context, secondsToSleep int32) (err error) {
fmt.Printf("testOneway(%d): Sleeping...\n", secondsToSleep)
time.Sleep(time.Second * time.Duration(secondsToSleep))
diff --git a/test/go/src/common/simple_handler.go b/test/go/src/common/simple_handler.go
index fb9545799..be5bc8279 100644
--- a/test/go/src/common/simple_handler.go
+++ b/test/go/src/common/simple_handler.go
@@ -23,6 +23,8 @@ import (
"errors"
"time"
+ "github.com/apache/thrift/lib/go/thrift"
+
//lint:ignore ST1001 allow dot import here
. "github.com/apache/thrift/test/go/src/gen/thrifttest"
)
@@ -63,6 +65,10 @@ func (p *simpleHandler) TestBinary(thing []byte) (r []byte, err error) {
return thing, nil
}
+func (p *simpleHandler) TestUuid(thing thrift.Tuuid) (r thrift.Tuuid, err error) {
+ return thing, nil
+}
+
func (p *simpleHandler) TestStruct(thing *Xtruct) (r *Xtruct, err error) {
return r, err
}