THRIFT-5591 Add uuid type to IDL and implement reference code (+ improved self-tests)
Client: compiler general, netstd, Delphi
Patch: Jens Geyer
diff --git a/test/ConstantsDemo.thrift b/test/ConstantsDemo.thrift
index 204e805..e03f053 100644
--- a/test/ConstantsDemo.thrift
+++ b/test/ConstantsDemo.thrift
@@ -65,6 +65,8 @@
const set<i32> GEN_SET = [ 235, 235, 53235 ]
+const uuid GEN_UUID = "00000000-4444-CCCC-ffff-0123456789ab"
+
exception Blah {
1: i32 bing }
diff --git a/test/DebugProtoTest.thrift b/test/DebugProtoTest.thrift
index 5d0face..3750d8d 100644
--- a/test/DebugProtoTest.thrift
+++ b/test/DebugProtoTest.thrift
@@ -48,6 +48,7 @@
12: list<i8> byte_list = [1, 2, 3],
13: list<i16> i16_list = [1,2,3],
14: list<i64> i64_list = [1,2,3]
+ 15: uuid rfc4122_uuid
}
struct Bonk {
diff --git a/test/ThriftTest.thrift b/test/ThriftTest.thrift
index 4a1045f..42607cc 100644
--- a/test/ThriftTest.thrift
+++ b/test/ThriftTest.thrift
@@ -112,6 +112,7 @@
// Do not insert line break as test/go/Makefile.am is removing this line with pattern match
3: required list<map<set<i32> (python.immutable = ""), map<i32,set<list<map<Insanity,string>(python.immutable = "")> (python.immutable = "")>>>> list_field,
4: binary binary_field
+ 5: uuid uuid_field
}
union SomeUnion {
@@ -196,6 +197,13 @@
binary testBinary(1: binary thing),
/**
+ * 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'
+ */
+ uuid testUuid(1: uuid thing),
+
+ /**
* 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'
diff --git a/test/netstd/Client/TestClient.cs b/test/netstd/Client/TestClient.cs
index 29c0d2e..4700de8 100644
--- a/test/netstd/Client/TestClient.cs
+++ b/test/netstd/Client/TestClient.cs
@@ -588,8 +588,28 @@
returnCode |= ErrorBaseTypes;
}
+ // testUuid()
+ var uuidOut = new Guid("{00112233-4455-6677-8899-AABBCCDDEEFF}");
+ Console.Write("testUuid({0})", uuidOut);
+ try
+ {
+ var uuidIn = await client.testUuid(uuidOut, MakeTimeoutToken());
+ Console.WriteLine(" = {0}", uuidIn);
+ if (!uuidIn.Equals(uuidOut))
+ {
+ Console.WriteLine("*** FAILED ***");
+ returnCode |= ErrorBaseTypes;
+ }
+ }
+ catch (Thrift.TApplicationException ex)
+ {
+ Console.WriteLine("*** FAILED ***");
+ returnCode |= ErrorBaseTypes;
+ Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
+ }
+
// testBinary()
- foreach(BinaryTestSize binTestCase in Enum.GetValues(typeof(BinaryTestSize)))
+ foreach (BinaryTestSize binTestCase in Enum.GetValues(typeof(BinaryTestSize)))
{
var binOut = PrepareTestData(true, binTestCase);
diff --git a/test/netstd/Server/Server.csproj b/test/netstd/Server/Server.csproj
index 8faad9d..0a78e88 100644
--- a/test/netstd/Server/Server.csproj
+++ b/test/netstd/Server/Server.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
<!--
Licensed to the Apache Software Foundation(ASF) under one
or more contributor license agreements.See the NOTICE file
diff --git a/test/netstd/Server/TestServer.cs b/test/netstd/Server/TestServer.cs
index 86072b0..71a2a30 100644
--- a/test/netstd/Server/TestServer.cs
+++ b/test/netstd/Server/TestServer.cs
@@ -271,6 +271,12 @@
return Task.FromResult(thing ?? Array.Empty<byte>());
}
+ public Task<Guid> testUuid(Guid thing, CancellationToken cancellationToken)
+ {
+ logger.Invoke("testUuid({0})", thing.ToString("B"));
+ return Task.FromResult(thing);
+ }
+
public Task<Xtruct> testStruct(Xtruct? thing, CancellationToken cancellationToken)
{
logger.Invoke("testStruct({{\"{0}\", {1}, {2}, {3}}})", thing?.String_thing ?? "<null>", thing?.Byte_thing ?? 0, thing?.I32_thing ?? 0, thing?.I64_thing ?? 0);