From 5ea197a99743aaf6cbfa7f95161d8201450a5515 Mon Sep 17 00:00:00 2001 From: Yash Chauhan Date: Tue, 5 Sep 2023 13:37:01 +0530 Subject: [PATCH 01/14] Added Enum Streaming test --- .../Tests/enum-streaming/Impl/Run Service.vi | Bin 0 -> 23923 bytes .../Tests/enum-streaming/Impl/Start Sync.vi | Bin 0 -> 58714 bytes .../Python_client/Getfeature_client.py | 40 ++++++ .../Python_client/ListFeatures_client.py | 51 +++++++ .../Python_client/RecordRoute_client.py | 38 +++++ .../Python_client/RouteChat_client.py | 57 ++++++++ .../Tests/enum-streaming/enum-streaming.proto | 48 +++++++ .../enum-streaming/testcases/GetFeature.json | 30 ++++ .../testcases/ListFeatures.json | 134 ++++++++++++++++++ .../enum-streaming/testcases/RecordRoute.json | 64 +++++++++ .../enum-streaming/testcases/RouteChat.json | 64 +++++++++ .../oneof-streaming/oneof-streaming.proto | 27 ++++ 12 files changed, 553 insertions(+) create mode 100644 tests/New_ATS/Tests/enum-streaming/Impl/Run Service.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Impl/Start Sync.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/Getfeature_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/ListFeatures_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/RecordRoute_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/RouteChat_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/enum-streaming.proto create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/GetFeature.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/ListFeatures.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/RecordRoute.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/RouteChat.json create mode 100644 tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto diff --git a/tests/New_ATS/Tests/enum-streaming/Impl/Run Service.vi b/tests/New_ATS/Tests/enum-streaming/Impl/Run Service.vi new file mode 100644 index 0000000000000000000000000000000000000000..72bccd53612a8dba7ea6ce8739351239dd6c68db GIT binary patch literal 23923 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 p8vGM%{77pKY796692}4Ge*i?Ud$j-n literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Impl/Start Sync.vi b/tests/New_ATS/Tests/enum-streaming/Impl/Start Sync.vi new file mode 100644 index 0000000000000000000000000000000000000000..fb65b3a069237449a95a26c131805a6009e69307 GIT binary patch literal 58714 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 b)hj?T|4z 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 W#&M7sp*Hew1I*gs9|ri`Z2uoN{vOi+ literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Python_client/Getfeature_client.py b/tests/New_ATS/Tests/enum-streaming/Python_client/Getfeature_client.py new file mode 100644 index 00000000..6ddcf6e2 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/Python_client/Getfeature_client.py @@ -0,0 +1,40 @@ +import grpc +import routeguide_pb2 +import routeguide_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +GetFeature_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/GetFeature.json' + +def get_GetFeature_output(test_input): + latitude = test_input['latitude'] + longitude = test_input['longitude'] + + with grpc.insecure_channel('localhost:50051') as channel: + stub = routeguide_pb2_grpc.RouteGuideStub(channel) + point = routeguide_pb2.Point(latitude=latitude, longitude=longitude) + response = stub.GetFeature(point) + + return { + "name": response.name, + "location": { + "latitude": response.location.latitude, + "longitude": response.location.longitude + } + } + +@pytest.mark.parametrize('testcase', read_json(GetFeature_json_file_path)) +def test_GetFeature(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_GetFeature_output(test_input) == expected + +if __name__ == "__main__": + res = get_GetFeature_output({'latitude': 1, 'longitude': 2}) + print(res) diff --git a/tests/New_ATS/Tests/enum-streaming/Python_client/ListFeatures_client.py b/tests/New_ATS/Tests/enum-streaming/Python_client/ListFeatures_client.py new file mode 100644 index 00000000..2e3bae34 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/Python_client/ListFeatures_client.py @@ -0,0 +1,51 @@ +import grpc +import routeguide_pb2 +import routeguide_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +ListFeatures_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/ListFeatures.json' + +def get_ListFeatures_output(test_input): + lo = test_input['lo'] + hi = test_input['hi'] + + output = [] + with grpc.insecure_channel('localhost:50051') as channel: + stub = routeguide_pb2_grpc.RouteGuideStub(channel) + rectangle = routeguide_pb2.Rectangle( + lo=routeguide_pb2.Point(latitude=lo['latitude'], longitude=lo['longitude']), + hi=routeguide_pb2.Point(latitude=hi['latitude'], longitude=hi['longitude']) + ) + response = stub.ListFeatures(rectangle) + stub.ListFeatures + + for feature in response: + output.append({ + "name": feature.name, + "location": { + "latitude": feature.location.latitude, + "longitude": feature.location.longitude + } + }) + return output + + +@pytest.mark.parametrize('testcase', read_json(ListFeatures_json_file_path)) +def test_ListFeatures(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_ListFeatures_output(test_input) == expected + +if __name__ == "__main__": + res = get_ListFeatures_output({ + "lo": { "latitude": 1, "longitude": 2 }, + "hi": { "latitude": 3, "longitude": 4 } + }) + print(res) diff --git a/tests/New_ATS/Tests/enum-streaming/Python_client/RecordRoute_client.py b/tests/New_ATS/Tests/enum-streaming/Python_client/RecordRoute_client.py new file mode 100644 index 00000000..7602d5fd --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/Python_client/RecordRoute_client.py @@ -0,0 +1,38 @@ +import grpc +import routeguide_pb2 +import routeguide_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +RecordRoute_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/RecordRoute.json' + +def get_RecordRoute_output(test_input): + points = [routeguide_pb2.Point(latitude=point['latitude'], longitude=point['longitude']) for point in test_input] + + ans = None + with grpc.insecure_channel('localhost:50051') as channel: + stub = routeguide_pb2_grpc.RouteGuideStub(channel) + response = stub.RecordRoute(iter(points)) + ans = { + "point_count": response.point_count, + "feature_count": response.feature_count, + "distance": response.distance, + "elapsed_time": response.elapsed_time + } + return ans; + +@pytest.mark.parametrize('testcase', read_json(RecordRoute_json_file_path)) +def test_RecordRoute(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_RecordRoute_output(test_input) == expected + +if __name__ == "__main__": + res = get_RecordRoute_output([{"latitude": 1, "longitude": 5}, {"latitude": 12, "longitude": 10}, {"latitude": 20, "longitude": 25}]) + print(res) diff --git a/tests/New_ATS/Tests/enum-streaming/Python_client/RouteChat_client.py b/tests/New_ATS/Tests/enum-streaming/Python_client/RouteChat_client.py new file mode 100644 index 00000000..a2a44960 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/Python_client/RouteChat_client.py @@ -0,0 +1,57 @@ +import grpc +import routeguide_pb2 +import routeguide_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +RouteChat_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/RouteChat.json' + +def get_RouteChat_output(test_input): + output = [] + + with grpc.insecure_channel('localhost:50051') as channel: + stub = routeguide_pb2_grpc.RouteGuideStub(channel) + + def generate_notes(): + for point in test_input: + yield routeguide_pb2.RouteNote( + location=routeguide_pb2.Point( + latitude=point['location']['latitude'], + longitude=point['location']['longitude'] + ), + message=point['message'] + ) + + response = stub.RouteChat(generate_notes()) + + for note in response: + output.append({ + "location": { + "latitude": note.location.latitude, + "longitude": note.location.longitude + }, + "message": note.message + }) + + return output + +@pytest.mark.parametrize('testcase', read_json(RouteChat_json_file_path)) +def test_RouteChat(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_RouteChat_output(test_input) == expected + +if __name__ == "__main__": + res = get_RouteChat_output([ + { "location": { "latitude": 1, "longitude": 4 }, "message": "Point 1" }, + { "location": { "latitude": 2, "longitude": 3 }, "message": "Point 2" }, + { "location": { "latitude": 3, "longitude": 2 }, "message": "Point 3" }, + { "location": { "latitude": 4, "longitude": 1 }, "message": "Point 4" } + ]) + print(res) diff --git a/tests/New_ATS/Tests/enum-streaming/enum-streaming.proto b/tests/New_ATS/Tests/enum-streaming/enum-streaming.proto new file mode 100644 index 00000000..7839b136 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/enum-streaming.proto @@ -0,0 +1,48 @@ +syntax = "proto3"; + +package routeguide; + +enum Color { + RED = 0; + GREEN = 1; + BLUE = 2; +} + +service RouteGuide{ + rpc GetFeature(Point) returns (Feature) {} + rpc ListFeatures(Rectangle) returns (stream Feature) {} + rpc RecordRoute(stream Point) returns (RouteSummary) {} + rpc RouteChat(stream RouteNote) returns (stream RouteNote) {} +} + +message Point { + int32 latitude = 1; + int32 longitude = 2; + Color clr = 3; +} + +message Rectangle { + Point lo = 1; + Point hi = 2; + Color clr = 3; +} + +message Feature { + string name = 1; + Point location = 2; + Color clr = 3; +} + +message RouteNote { + Point location = 1; + string message = 2; + Color clr = 3; +} + +message RouteSummary { + int32 point_count = 1; + int32 feature_count = 2; + int32 distance = 3; + int32 elapsed_time = 4; + Color clr = 5; +} \ No newline at end of file diff --git a/tests/New_ATS/Tests/enum-streaming/testcases/GetFeature.json b/tests/New_ATS/Tests/enum-streaming/testcases/GetFeature.json new file mode 100644 index 00000000..cbae17a5 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/testcases/GetFeature.json @@ -0,0 +1,30 @@ +[ + { + "input": { "latitude": 1, "longitude": 2 }, + "output": { + "name": "1 x 2", + "location": { "latitude": 1, "longitude": 2 } + } + }, + { + "input": { "latitude": 10, "longitude": 20 }, + "output": { + "name": "10 x 20", + "location": { "latitude": 10, "longitude": 20 } + } + }, + { + "input": { "latitude": 49, "longitude": 25 }, + "output": { + "name": "49 x 25", + "location": { "latitude": 49, "longitude": 25 } + } + }, + { + "input": { "latitude": 19, "longitude": 9 }, + "output": { + "name": "19 x 9", + "location": { "latitude": 19, "longitude": 9 } + } + } +] diff --git a/tests/New_ATS/Tests/enum-streaming/testcases/ListFeatures.json b/tests/New_ATS/Tests/enum-streaming/testcases/ListFeatures.json new file mode 100644 index 00000000..57f99dc3 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/testcases/ListFeatures.json @@ -0,0 +1,134 @@ +[ + { + "input": { + "lo": { "latitude": 1, "longitude": 2 }, + "hi": { "latitude": 3, "longitude": 4 } + }, + "output": [ + { + "name": "1 x 2", + "location": { "latitude": 1, "longitude": 2 } + }, + { + "name": "1 x 3", + "location": { "latitude": 1, "longitude": 3 } + }, + { + "name": "1 x 4", + "location": { "latitude": 1, "longitude": 4 } + }, + { + "name": "2 x 2", + "location": { "latitude": 2, "longitude": 2 } + }, + { + "name": "2 x 3", + "location": { "latitude": 2, "longitude": 3 } + }, + { + "name": "2 x 4", + "location": { "latitude": 2, "longitude": 4 } + }, + { + "name": "3 x 2", + "location": { "latitude": 3, "longitude": 2 } + }, + { + "name": "3 x 3", + "location": { "latitude": 3, "longitude": 3 } + }, + { + "name": "3 x 4", + "location": { "latitude": 3, "longitude": 4 } + } + ] + }, + { + "input": { + "lo": { "latitude": 4, "longitude": 5 }, + "hi": { "latitude": 7, "longitude": 9 } + }, + "output": [ + { + "name": "4 x 5", + "location": { "latitude": 4, "longitude": 5 } + }, + { + "name": "4 x 6", + "location": { "latitude": 4, "longitude": 6 } + }, + { + "name": "4 x 7", + "location": { "latitude": 4, "longitude": 7 } + }, + { + "name": "4 x 8", + "location": { "latitude": 4, "longitude": 8 } + }, + { + "name": "4 x 9", + "location": { "latitude": 4, "longitude": 9 } + }, + { + "name": "5 x 5", + "location": { "latitude": 5, "longitude": 5 } + }, + { + "name": "5 x 6", + "location": { "latitude": 5, "longitude": 6 } + }, + { + "name": "5 x 7", + "location": { "latitude": 5, "longitude": 7 } + }, + { + "name": "5 x 8", + "location": { "latitude": 5, "longitude": 8 } + }, + { + "name": "5 x 9", + "location": { "latitude": 5, "longitude": 9 } + }, + { + "name": "6 x 5", + "location": { "latitude": 6, "longitude": 5 } + }, + { + "name": "6 x 6", + "location": { "latitude": 6, "longitude": 6 } + }, + { + "name": "6 x 7", + "location": { "latitude": 6, "longitude": 7 } + }, + { + "name": "6 x 8", + "location": { "latitude": 6, "longitude": 8 } + }, + { + "name": "6 x 9", + "location": { "latitude": 6, "longitude": 9 } + }, + { + "name": "7 x 5", + "location": { "latitude": 7, "longitude": 5 } + }, + { + "name": "7 x 6", + "location": { "latitude": 7, "longitude": 6 } + }, + { + "name": "7 x 7", + "location": { "latitude": 7, "longitude": 7 } + }, + { + "name": "7 x 8", + "location": { "latitude": 7, "longitude": 8 } + }, + { + "name": "7 x 9", + "location": { "latitude": 7, "longitude": 9 } + } + ] + } +] diff --git a/tests/New_ATS/Tests/enum-streaming/testcases/RecordRoute.json b/tests/New_ATS/Tests/enum-streaming/testcases/RecordRoute.json new file mode 100644 index 00000000..8fd594e6 --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/testcases/RecordRoute.json @@ -0,0 +1,64 @@ +[ + { + "input": [ + { + "latitude": 1, + "longitude": 2 + }, + { + "latitude": 3, + "longitude": 4 + }, + { + "latitude": 5, + "longitude": 6 + } + ], + "output": { + "point_count": 3, + "feature_count": 3, + "distance": 0, + "elapsed_time": 1 + } + }, + { + "input": [ + { + "latitude": 2, + "longitude": 10 + }, + { + "latitude": 22, + "longitude": 26 + }, + { + "latitude": 99, + "longitude": 46 + }, + { + "latitude": 9, + "longitude": 6 + } + ], + "output": { + "point_count": 4, + "feature_count": 4, + "distance": 0, + "elapsed_time": 1 + } + }, + { + "input": [ + { + "latitude": 5, + "longitude": 2 + } + ], + "output": { + "point_count": 1, + "feature_count": 1, + "distance": 0, + "elapsed_time": 1 + } + } +] diff --git a/tests/New_ATS/Tests/enum-streaming/testcases/RouteChat.json b/tests/New_ATS/Tests/enum-streaming/testcases/RouteChat.json new file mode 100644 index 00000000..047ffdde --- /dev/null +++ b/tests/New_ATS/Tests/enum-streaming/testcases/RouteChat.json @@ -0,0 +1,64 @@ +[ + { + "input": [ + { "location": { "latitude": 1, "longitude": 4 }, "message": "Point 1" }, + { "location": { "latitude": 2, "longitude": 3 }, "message": "Point 2" }, + { "location": { "latitude": 3, "longitude": 2 }, "message": "Point 3" }, + { "location": { "latitude": 4, "longitude": 1 }, "message": "Point 4" } + ], + "output": [ + { "location": { "latitude": 1, "longitude": 4 }, "message": "Point 1" }, + { "location": { "latitude": 2, "longitude": 3 }, "message": "Point 2" }, + { "location": { "latitude": 3, "longitude": 2 }, "message": "Point 3" }, + { "location": { "latitude": 4, "longitude": 1 }, "message": "Point 4" } + ] + }, + { + "input": [ + { "location": { "latitude": 5, "longitude": 8 }, "message": "Point 5" }, + { "location": { "latitude": 6, "longitude": 7 }, "message": "Point 6" }, + { "location": { "latitude": 7, "longitude": 6 }, "message": "Point 7" } + ], + "output": [ + { "location": { "latitude": 5, "longitude": 8 }, "message": "Point 5" }, + { "location": { "latitude": 6, "longitude": 7 }, "message": "Point 6" }, + { "location": { "latitude": 7, "longitude": 6 }, "message": "Point 7" } + ] + }, + { + "input": [ + { "location": { "latitude": 12, "longitude": 45 }, "message": "Point 8" }, + { "location": { "latitude": 30, "longitude": 72 }, "message": "Point 9" }, + { "location": { "latitude": 81, "longitude": 19 }, "message": "Point 10" } + ], + "output": [ + { "location": { "latitude": 12, "longitude": 45 }, "message": "Point 8" }, + { "location": { "latitude": 30, "longitude": 72 }, "message": "Point 9" }, + { "location": { "latitude": 81, "longitude": 19 }, "message": "Point 10" } + ] + }, + { + "input": [ + { + "location": { "latitude": 50, "longitude": 30 }, + "message": "Point 11" + }, + { + "location": { "latitude": 18, "longitude": 88 }, + "message": "Point 12" + }, + { "location": { "latitude": 92, "longitude": 7 }, "message": "Point 13" } + ], + "output": [ + { + "location": { "latitude": 50, "longitude": 30 }, + "message": "Point 11" + }, + { + "location": { "latitude": 18, "longitude": 88 }, + "message": "Point 12" + }, + { "location": { "latitude": 92, "longitude": 7 }, "message": "Point 13" } + ] + } +] diff --git a/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto new file mode 100644 index 00000000..d0fa8c6a --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; + +message Request { + int age = 1; + oneof request_oneof { + string message = 2; + int req_id = 3; + } +} + +message Response { + int new_age = 1; + oneof response_oneof { + string result = 2; + int res_id = 3; + } +} + +service StreamingService { + rpc UnaryMethod(Request) returns (Response); + + rpc ServerStreamingMethod(Request) returns (stream Response); + + rpc ClientStreamingMethod(stream Request) returns (Response); + + rpc BidirectionalStreamingMethod(stream Request) returns (stream Response); +} From d9003fd70ac2e981cdaf66d0a72f1efa3d6f2929 Mon Sep 17 00:00:00 2001 From: Yash Chauhan Date: Wed, 6 Sep 2023 06:15:46 +0530 Subject: [PATCH 02/14] Added oneof streaming test --- .../Tests/oneof-streaming/Impl/Run Service.vi | Bin 0 -> 24031 bytes .../Tests/oneof-streaming/Impl/Start Sync.vi | Bin 0 -> 43930 bytes .../BidirectionalStreamingMethod_client.py | 52 ++ .../ClientStreamingMethod_client.py | 64 ++ .../ServerStreamingMethod_client.py | 51 ++ .../Python_client/UnaryMethod_client.py | 50 ++ .../Python_client/python_server.py | 50 ++ .../oneof-streaming/oneof-streaming.proto | 34 +- .../BidirectionalStreamingMethod.json | 656 ++++++++++++++++++ .../testcases/ClientStreamingMethod.json | 364 ++++++++++ .../testcases/ServerStreamingMethod.json | 364 ++++++++++ .../testcases/UnaryMethod.json | 128 ++++ 12 files changed, 1798 insertions(+), 15 deletions(-) create mode 100644 tests/New_ATS/Tests/oneof-streaming/Impl/Run Service.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Impl/Start Sync.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/BidirectionalStreamingMethod_client.py create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/ClientStreamingMethod_client.py create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/ServerStreamingMethod_client.py create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py create mode 100644 tests/New_ATS/Tests/oneof-streaming/testcases/BidirectionalStreamingMethod.json create mode 100644 tests/New_ATS/Tests/oneof-streaming/testcases/ClientStreamingMethod.json create mode 100644 tests/New_ATS/Tests/oneof-streaming/testcases/ServerStreamingMethod.json create mode 100644 tests/New_ATS/Tests/oneof-streaming/testcases/UnaryMethod.json diff --git a/tests/New_ATS/Tests/oneof-streaming/Impl/Run Service.vi b/tests/New_ATS/Tests/oneof-streaming/Impl/Run Service.vi new file mode 100644 index 0000000000000000000000000000000000000000..0d20f460990554f266f8694d37c46ef84b12612d GIT binary patch literal 24031 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 literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/oneof-streaming/Impl/Start Sync.vi b/tests/New_ATS/Tests/oneof-streaming/Impl/Start Sync.vi new file mode 100644 index 0000000000000000000000000000000000000000..81aea962e6189b183a2835f51cd25585d9094510 GIT binary patch literal 43930 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 literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/BidirectionalStreamingMethod_client.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/BidirectionalStreamingMethod_client.py new file mode 100644 index 00000000..97755300 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/BidirectionalStreamingMethod_client.py @@ -0,0 +1,52 @@ +import grpc +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +BidirectionalStreamingMethod_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/BidirectionalStreamingMethod.json' + +def get_BidirectionalStreamingMethod_output(test_input): + output = [] + + with grpc.insecure_channel('localhost:50051') as channel: + stub = oneof_streaming_pb2_grpc.GreeterServiceStub(channel) + + def generate_requests(): + for request_data in test_input: + yield oneof_streaming_pb2.Request( + age=request_data['age'], + message=request_data['request_oneof'].get('message'), + request_id=request_data['request_oneof'].get('request_id') + ) + + responses = stub.BidirectionalStreamingMethod(generate_requests()) + + for response in responses: + output.append({ + "new_age": response.new_age, + "response_oneof": { + "result": response.result + } + }) + + return output + +@pytest.mark.parametrize('testcase', read_json(BidirectionalStreamingMethod_json_file_path)) +def test_BidirectionalStreamingMethod(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_BidirectionalStreamingMethod_output(test_input) == expected + +if __name__ == "__main__": + res = get_BidirectionalStreamingMethod_output([ + { "age": 2, "request_oneof": { "message": "Hello, World!" } }, + { "age": 2, "request_oneof": { "message": "Hello, World!" } } + ]) + print(res) diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/ClientStreamingMethod_client.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/ClientStreamingMethod_client.py new file mode 100644 index 00000000..d77d1076 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/ClientStreamingMethod_client.py @@ -0,0 +1,64 @@ +import grpc +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc +import json +import pytest +import os + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +ClientStreamingMethod_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/ClientStreamingMethod.json' + +def get_ClientStreamingMethod_output(test_input): + response_dict = None + request_list = [] + for request in test_input: + request_list.append(oneof_streaming_pb2.Request( + age=request['age'], + message=request['request_oneof'].get('message'), + request_id=request['request_oneof'].get('request_id') + ) + ) + + with grpc.insecure_channel('localhost:50051') as channel: + + stub = oneof_streaming_pb2_grpc.GreeterServiceStub(channel) + + response = stub.ClientStreamingMethod(iter(request_list)) + + response_dict = { + "new_age":response.new_age, + "response_oneof":{} + } + if response.HasField('result'): + response_dict['response_oneof']['result'] = response.result + if response.HasField('response_id'): + response_dict['response_oneof']['response_id'] = response.response_id + + return response_dict + +@pytest.mark.parametrize('testcase', read_json(ClientStreamingMethod_json_file_path)) +def test_ClientStreamingMethod(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_ClientStreamingMethod_output(test_input) == expected + +if __name__ == "__main__": + res = get_ClientStreamingMethod_output([ + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + }, + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + } + ]) + print(res) diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/ServerStreamingMethod_client.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/ServerStreamingMethod_client.py new file mode 100644 index 00000000..d327485f --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/ServerStreamingMethod_client.py @@ -0,0 +1,51 @@ +import grpc +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc +import json +import pytest +import os + +def get_ServerStreamingMethod_output(test_input): + age = test_input['age'] + message = test_input['request_oneof'].get('message') + + response_list = [] + with grpc.insecure_channel('localhost:50051') as channel: + stub = oneof_streaming_pb2_grpc.GreeterServiceStub(channel) + request = oneof_streaming_pb2.Request(age=age, message=message) + response_stream = stub.ServerStreamingMethod(request) + + for response in response_stream: + response_dict = { + 'new_age': response.new_age, + 'response_oneof': {} + } + if response.HasField('result'): + response_dict['response_oneof']['result'] = response.result + if response.HasField('response_id'): + response_dict['response_oneof']['response_id'] = response.response_id + response_list.append(response_dict) + + return response_list + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +ServerStreamingMethod_json_file_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'testcases', 'ServerStreamingMethod.json') + +@pytest.mark.parametrize('testcase', read_json(ServerStreamingMethod_json_file_path)) +def test_ServerStreamingMethod(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_ServerStreamingMethod_output(test_input) == expected + +if __name__ == "__main__": + res = get_ServerStreamingMethod_output({ + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + }) + print(res) diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py new file mode 100644 index 00000000..2585f85d --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py @@ -0,0 +1,50 @@ +import grpc +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc +import json +import pytest +import os + +def get_UnaryMethod_output(test_input): + age = test_input['age'] + message = test_input['request_oneof'].get('message') + request_id = test_input['request_oneof'].get('request_id') + + with grpc.insecure_channel('localhost:50051') as channel: + stub = oneof_streaming_pb2_grpc.GreeterServiceStub(channel) + request = oneof_streaming_pb2.Request(age=age, message=message, request_id=request_id) + response = stub.UnaryMethod(request) + + response_dict = { + 'new_age': response.new_age, + 'response_oneof': {} + } + + if response.HasField('result'): + response_dict['response_oneof']['result'] = response.result + if response.HasField('response_id'): + response_dict['response_oneof']['response_id'] = response.response_id + + return response_dict + +def read_json(filepath): + with open(filepath, 'r') as file: + test_data = json.load(file) + return test_data + +UnaryMethod_json_file_path = f'{os.path.dirname(os.path.dirname(os.path.abspath(__file__)))}/testcases/UnaryMethod.json' + +@pytest.mark.parametrize('testcase', read_json(UnaryMethod_json_file_path)) +def test_UnaryMethod(testcase): + test_input = testcase['input'] + expected = testcase['output'] + assert get_UnaryMethod_output(test_input) == expected + +if __name__ == "__main__": + res = get_UnaryMethod_output({ + "age": 25, + "request_oneof": { + "message": "Hello, World!" + } + }) + print(res) diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py new file mode 100644 index 00000000..b519fd48 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py @@ -0,0 +1,50 @@ +import grpc +from concurrent import futures +import time +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc + +class GreeterService(oneof_streaming_pb2_grpc.GreeterServiceServicer): + def UnaryMethod(self, request, context): + age = request.age + message = request.request_oneof.message + request_id = request.request_oneof.request_id + new_age = age + 1 + result = f"{message}_response" if message else None + response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=request_id) + return response + + # def UnaryMethod(self, request, context): + # return super().UnaryMethod(request, context) + + # def ServerStreamingMethod(self, request, context): + # age = request.age + # message = request.request_oneof.message + + # for _ in range(age): + # new_age = age + 1 + # result = f"{message}_response" if message else None + # response_id = request_id+1 if request_id else None + # request_id = request.request_oneof.request_id + # response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=response_id) + # yield response # Corrected here + + def ServerStreamingMethod(self, request, context): + return super().ServerStreamingMethod(request, context) + + def ClientStreamingMethod(self, request_iterator, context): + return super().ClientStreamingMethod(request_iterator, context) + + def BidirectionalStreamingMethod(self, request_iterator, context): + return super().BidirectionalStreamingMethod(request_iterator, context) + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=2)) + oneof_streaming_pb2_grpc.add_GreeterServiceServicer_to_server(GreeterService(), server) + server.add_insecure_port('[::]:50051') + print("Server started on port 50051") + server.start() + server.wait_for_termination() + +if __name__ == '__main__': + serve() diff --git a/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto index d0fa8c6a..07528293 100644 --- a/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto +++ b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto @@ -1,27 +1,31 @@ syntax = "proto3"; +service GreeterService { + // operation - increments and request_id by 1, appends _response to message + rpc UnaryMethod(Request) returns (Response); + + // streams 'age' number of Response messages and does the same operation + rpc ServerStreamingMethod(Request) returns (stream Response); + + // counts the number of request messages and supplies them in the age variable, rest same operation + rpc ClientStreamingMethod(stream Request) returns (Response); + + // does same operation on each Request message and returns corresponding Response Message + rpc BidirectionalStreamingMethod(stream Request) returns (stream Response); +} + message Request { - int age = 1; + int32 age = 1; oneof request_oneof { string message = 2; - int req_id = 3; + int32 request_id = 3; } } message Response { - int new_age = 1; + int32 new_age = 1; oneof response_oneof { string result = 2; - int res_id = 3; + int32 response_id = 3; } -} - -service StreamingService { - rpc UnaryMethod(Request) returns (Response); - - rpc ServerStreamingMethod(Request) returns (stream Response); - - rpc ClientStreamingMethod(stream Request) returns (Response); - - rpc BidirectionalStreamingMethod(stream Request) returns (stream Response); -} +} \ No newline at end of file diff --git a/tests/New_ATS/Tests/oneof-streaming/testcases/BidirectionalStreamingMethod.json b/tests/New_ATS/Tests/oneof-streaming/testcases/BidirectionalStreamingMethod.json new file mode 100644 index 00000000..170498e3 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/testcases/BidirectionalStreamingMethod.json @@ -0,0 +1,656 @@ +[ + { + "input": [ + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + }, + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + } + ], + "output": [ + { + "new_age": 3, + "response_oneof": { + "result": "Hello, World!_response" + } + }, + { + "new_age": 3, + "response_oneof": { + "result": "Hello, World!_response" + } + } + ] + }, + { + "input": [ + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + } + ], + "output": [ + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + } + ] + }, + { + "input": [ + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + } + ], + "output": [ + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + } + ] + }, + { + "input": [ + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + } + ], + "output": [ + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + } + ] + }, + { + "input": [ + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + } + ], + "output": [ + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + } + ] + } +] diff --git a/tests/New_ATS/Tests/oneof-streaming/testcases/ClientStreamingMethod.json b/tests/New_ATS/Tests/oneof-streaming/testcases/ClientStreamingMethod.json new file mode 100644 index 00000000..5bfa40e1 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/testcases/ClientStreamingMethod.json @@ -0,0 +1,364 @@ +[ + { + "input": [ + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + }, + { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + } + ], + "output": { + "new_age": 4, + "response_oneof": { + "result": "Hello, World!_response" + } + } + }, + { + "input": [ + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + } + ], + "output": { + "new_age": 25, + "response_oneof": { + "result": "Good morning_response" + } + } + }, + { + "input": [ + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + } + ], + "output": { + "new_age": 100, + "response_oneof": { + "result": "Hi there_response" + } + } + }, + { + "input": [ + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + } + ], + "output": { + "new_age": 225, + "response_oneof": { + "result": "How are you?_response" + } + } + }, + { + "input": [ + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + } + ], + "output": { + "new_age": 400, + "response_oneof": { + "result": "Greetings!_response" + } + } + } +] diff --git a/tests/New_ATS/Tests/oneof-streaming/testcases/ServerStreamingMethod.json b/tests/New_ATS/Tests/oneof-streaming/testcases/ServerStreamingMethod.json new file mode 100644 index 00000000..7f0f2759 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/testcases/ServerStreamingMethod.json @@ -0,0 +1,364 @@ +[ + { + "input": { + "age": 2, + "request_oneof": { + "message": "Hello, World!" + } + }, + "output": [ + { + "new_age": 3, + "response_oneof": { + "result": "Hello, World!_response" + } + }, + { + "new_age": 3, + "response_oneof": { + "result": "Hello, World!_response" + } + } + ] + }, + { + "input": { + "age": 5, + "request_oneof": { + "message": "Good morning" + } + }, + "output": [ + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + }, + { + "new_age": 6, + "response_oneof": { + "result": "Good morning_response" + } + } + ] + }, + { + "input": { + "age": 10, + "request_oneof": { + "message": "Hi there" + } + }, + "output": [ + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + }, + { + "new_age": 11, + "response_oneof": { + "result": "Hi there_response" + } + } + ] + }, + { + "input": { + "age": 15, + "request_oneof": { + "message": "How are you?" + } + }, + "output": [ + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + }, + { + "new_age": 16, + "response_oneof": { + "result": "How are you?_response" + } + } + ] + }, + { + "input": { + "age": 20, + "request_oneof": { + "message": "Greetings!" + } + }, + "output": [ + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + }, + { + "new_age": 21, + "response_oneof": { + "result": "Greetings!_response" + } + } + ] + } +] diff --git a/tests/New_ATS/Tests/oneof-streaming/testcases/UnaryMethod.json b/tests/New_ATS/Tests/oneof-streaming/testcases/UnaryMethod.json new file mode 100644 index 00000000..57921ccf --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/testcases/UnaryMethod.json @@ -0,0 +1,128 @@ +[ + { + "input": { + "age": 25, + "request_oneof": { + "message": "Hello, World!" + } + }, + "output": { + "new_age": 26, + "response_oneof": { + "result": "Hello, World!_response" + } + } + }, + { + "input": { + "age": 18, + "request_oneof": { + "message": "Good morning" + } + }, + "output": { + "new_age": 19, + "response_oneof": { + "result": "Good morning_response" + } + } + }, + { + "input": { + "age": 40, + "request_oneof": { + "request_id": 123 + } + }, + "output": { + "new_age": 41, + "response_oneof": { + "response_id": 124 + } + } + }, + { + "input": { + "age": 60, + "request_oneof": { + "request_id": 456 + } + }, + "output": { + "new_age": 61, + "response_oneof": { + "response_id": 457 + } + } + }, + { + "input": { + "age": 30, + "request_oneof": { + "message": "Testing" + } + }, + "output": { + "new_age": 31, + "response_oneof": { + "result": "Testing_response" + } + } + }, + { + "input": { + "age": 22, + "request_oneof": { + "request_id": 789 + } + }, + "output": { + "new_age": 23, + "response_oneof": { + "response_id": 790 + } + } + }, + { + "input": { + "age": 35, + "request_oneof": { + "message": "Greetings" + } + }, + "output": { + "new_age": 36, + "response_oneof": { + "result": "Greetings_response" + } + } + }, + { + "input": { + "age": 50, + "request_oneof": { + "request_id": 1000 + } + }, + "output": { + "new_age": 51, + "response_oneof": { + "response_id": 1001 + } + } + }, + { + "input": { + "age": 28, + "request_oneof": { + "message": "How are you?" + } + }, + "output": { + "new_age": 29, + "response_oneof": { + "result": "How are you?_response" + } + } + } +] From 31384dff5f702d60dc6cbb128c9f52da56cb4995 Mon Sep 17 00:00:00 2001 From: Yash Chauhan Date: Wed, 6 Sep 2023 12:29:26 +0530 Subject: [PATCH 03/14] Added python server for oneof-streaming --- .../Python_client/oneof-streaming_server.py | 80 +++++++++++++++++++ .../Python_client/python_server.py | 50 ------------ .../oneof-streaming/oneof-streaming.proto | 2 +- 3 files changed, 81 insertions(+), 51 deletions(-) create mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/oneof-streaming_server.py delete mode 100644 tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/oneof-streaming_server.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/oneof-streaming_server.py new file mode 100644 index 00000000..00309c40 --- /dev/null +++ b/tests/New_ATS/Tests/oneof-streaming/Python_client/oneof-streaming_server.py @@ -0,0 +1,80 @@ +import grpc +from concurrent import futures +import time +import oneof_streaming_pb2 +import oneof_streaming_pb2_grpc + +class GreeterService(oneof_streaming_pb2_grpc.GreeterServiceServicer): + def UnaryMethod(self, request, context): + age = request.age + message = request_id = None + if request.HasField("message"): + message = request.message + if request.HasField("request_id"): + request_id = request.request_id + new_age = age + 1 + result = f"{message}_response" if message else None + response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=request_id) + return response + + def ServerStreamingMethod(self, request, context): + age = request.age + message = request_id = None + if request.HasField("message"): + message = request.message + if request.HasField("request_id"): + request_id = request.request_id + + for _ in range(age): + new_age = age + 1 + result = f"{message}_response" if message else None + response_id = request_id+1 if request_id else None + response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=response_id) + yield response + + def ClientStreamingMethod(self, request_iterator, context): + age_sum = 0 + last_message = None + + for request in request_iterator: + age_sum += request.age + last_message = request + + new_age=age_sum + message = request_id = None + if last_message.HasField("message"): + message = last_message.message + if last_message.HasField("request_id"): + request_id = last_message.request_id + + result = f"{message}_response" if message else None + response_id = request_id+1 if request_id else None + + response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=response_id) + return response + + def BidirectionalStreamingMethod(self, request_iterator, context): + for request in request_iterator: + new_age = request.age + 1 + message = request_id = None + if request.HasField("message"): + message = request.message + if request.HasField("request_id"): + request_id = request.request_id + + result = f"{message}_response" if message else None + response_id = request_id+1 if request_id else None + + response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=response_id) + yield response + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=2)) + oneof_streaming_pb2_grpc.add_GreeterServiceServicer_to_server(GreeterService(), server) + server.add_insecure_port('[::]:50051') + print("Server started on port 50051") + server.start() + server.wait_for_termination() + +if __name__ == '__main__': + serve() diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py b/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py deleted file mode 100644 index b519fd48..00000000 --- a/tests/New_ATS/Tests/oneof-streaming/Python_client/python_server.py +++ /dev/null @@ -1,50 +0,0 @@ -import grpc -from concurrent import futures -import time -import oneof_streaming_pb2 -import oneof_streaming_pb2_grpc - -class GreeterService(oneof_streaming_pb2_grpc.GreeterServiceServicer): - def UnaryMethod(self, request, context): - age = request.age - message = request.request_oneof.message - request_id = request.request_oneof.request_id - new_age = age + 1 - result = f"{message}_response" if message else None - response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=request_id) - return response - - # def UnaryMethod(self, request, context): - # return super().UnaryMethod(request, context) - - # def ServerStreamingMethod(self, request, context): - # age = request.age - # message = request.request_oneof.message - - # for _ in range(age): - # new_age = age + 1 - # result = f"{message}_response" if message else None - # response_id = request_id+1 if request_id else None - # request_id = request.request_oneof.request_id - # response = oneof_streaming_pb2.Response(new_age=new_age, result=result, response_id=response_id) - # yield response # Corrected here - - def ServerStreamingMethod(self, request, context): - return super().ServerStreamingMethod(request, context) - - def ClientStreamingMethod(self, request_iterator, context): - return super().ClientStreamingMethod(request_iterator, context) - - def BidirectionalStreamingMethod(self, request_iterator, context): - return super().BidirectionalStreamingMethod(request_iterator, context) - -def serve(): - server = grpc.server(futures.ThreadPoolExecutor(max_workers=2)) - oneof_streaming_pb2_grpc.add_GreeterServiceServicer_to_server(GreeterService(), server) - server.add_insecure_port('[::]:50051') - print("Server started on port 50051") - server.start() - server.wait_for_termination() - -if __name__ == '__main__': - serve() diff --git a/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto index 07528293..2e2ad121 100644 --- a/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto +++ b/tests/New_ATS/Tests/oneof-streaming/oneof-streaming.proto @@ -7,7 +7,7 @@ service GreeterService { // streams 'age' number of Response messages and does the same operation rpc ServerStreamingMethod(Request) returns (stream Response); - // counts the number of request messages and supplies them in the age variable, rest same operation + // sums all the age variables and supplies them in the new_age variable and does same operation on the last message of the input stream rpc ClientStreamingMethod(stream Request) returns (Response); // does same operation on each Request message and returns corresponding Response Message From d0e56775df8e091cebf66b54c7c35e34c59a6d42 Mon Sep 17 00:00:00 2001 From: Yash Chauhan Date: Wed, 6 Sep 2023 12:50:23 +0530 Subject: [PATCH 04/14] Added python server detection functionality --- .../UnaryMethod_client.py | 0 tests/New_ATS/pylib/run_tests.py | 25 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) rename tests/New_ATS/Tests/oneof-streaming/{Python_client => Python_server}/UnaryMethod_client.py (100%) diff --git a/tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py b/tests/New_ATS/Tests/oneof-streaming/Python_server/UnaryMethod_client.py similarity index 100% rename from tests/New_ATS/Tests/oneof-streaming/Python_client/UnaryMethod_client.py rename to tests/New_ATS/Tests/oneof-streaming/Python_server/UnaryMethod_client.py diff --git a/tests/New_ATS/pylib/run_tests.py b/tests/New_ATS/pylib/run_tests.py index 8ccfce22..20e7c489 100644 --- a/tests/New_ATS/pylib/run_tests.py +++ b/tests/New_ATS/pylib/run_tests.py @@ -106,17 +106,19 @@ def run_test(test_config): ]) run_command(CLI_command) - # 8. Generate python grpc classes - generate_command = ' '.join([ - f"{test_config['python_path']} -m grpc_tools.protoc", - f"--proto_path={test_config['test_folder']}", - f"--python_out={test_config['python_client_folder']}", - f"--pyi_out={test_config['python_client_folder']}", - f"--grpc_python_out={test_config['python_client_folder']}", - f"{test_config['test_name']}.proto" - ]) - print ("Compiling proto file") - run_command(generate_command) + # 8. Generate python client and server grpc classes + for path in ['python_client_folder', 'python_server_folder']: + if os.path.exists(test_config[f'{path}']): + generate_command = ' '.join([ + f"{test_config['python_path']} -m grpc_tools.protoc", + f"--proto_path={test_config['test_folder']}", + f"--python_out={test_config[f'{path}']}", + f"--pyi_out={test_config[f'{path}']}", + f"--grpc_python_out={test_config[f'{path}']}", + f"{test_config['test_name']}.proto" + ]) + print ("Compiling proto file for "+path.split('_')[1]) + run_command(generate_command) # 9. Call the TestServer() from test_folder/test_name_client.py and get the return value print(f"Running tests for all rpc's in {test_config['test_name']}") @@ -180,6 +182,7 @@ def main(): test_config['impl'] = test_config['test_folder'] / 'Impl' test_config['gen_type'] = gen_type test_config['python_client_folder'] = test_config['test_folder'] / 'Python_client' + test_config['python_server_folder'] = test_config['test_folder'] / 'Python_server' run_test(test_config) if FAILED: raise Exception(f"{FAILED} test cases have failed. Please review the above results") From 61f2e7557364897980df284fee3abf57498984dc Mon Sep 17 00:00:00 2001 From: Yash Chauhan Date: Thu, 7 Sep 2023 18:46:43 +0530 Subject: [PATCH 05/14] Added enum-streaming test --- tests/New_ATS/.gitignore | 1 - .../Generated Descriptors.vi | Bin 0 -> 8997 bytes .../Generated_server/Generated_server.lvlib | 52 +++ .../FlatToRichrouteguide_request.vi | Bin 0 -> 13288 bytes .../FlatToRichrouteguide_response.vi | Bin 0 -> 13373 bytes .../Get Value for routeguide_Color.vi | Bin 0 -> 23086 bytes .../Get Value for routeguide_Color_Flat.vi | Bin 0 -> 23099 bytes .../Get routeguide_Color for Value.vi | Bin 0 -> 23094 bytes .../RPC Messages/Get routeguide_Color.vi | Bin 0 -> 45004 bytes .../Get routeguide_Color_Flat for Value.vi | Bin 0 -> 23107 bytes .../RPC Messages/Get routeguide_request.vi | Bin 0 -> 49294 bytes .../RPC Messages/Get routeguide_response.vi | Bin 0 -> 49435 bytes .../RPC Messages/MessageConverterProxy.vim | Bin 0 -> 14142 bytes .../RPC Messages/Register Descriptors.vi | Bin 0 -> 15960 bytes .../RPC Messages/Register gRPC Messages.vi | Bin 0 -> 20478 bytes .../RichToFlatrouteguide_request.vi | Bin 0 -> 13288 bytes .../RichToFlatrouteguide_response.vi | Bin 0 -> 13373 bytes .../RPC Messages/Set routeguide_Color.vi | Bin 0 -> 45316 bytes .../RPC Messages/Set routeguide_request.vi | Bin 0 -> 49530 bytes .../RPC Messages/Set routeguide_response.vi | Bin 0 -> 49623 bytes .../RPC Messages/routeguide_Color.ctl | Bin 0 -> 4401 bytes .../RPC Messages/routeguide_Color_Flat.ctl | Bin 0 -> 4414 bytes .../RPC Messages/routeguide_request.ctl | Bin 0 -> 5851 bytes .../RPC Messages/routeguide_request_Flat.ctl | Bin 0 -> 5864 bytes .../RPC Messages/routeguide_response.ctl | Bin 0 -> 5888 bytes .../RPC Messages/routeguide_response_Flat.ctl | Bin 0 -> 5901 bytes .../Accessor/Read Server Internal UEs.vi | Bin 0 -> 16420 bytes .../Accessor/Read Server RPC Methods.vi | Bin 0 -> 16611 bytes .../Accessor/Write Server Internal UEs.vi | Bin 0 -> 18021 bytes .../Accessor/Write Server RPC Methods.vi | Bin 0 -> 18224 bytes ...RouteGuide BidirectionalStreamingMethod.vi | Bin 0 -> 54460 bytes ...nd RPC RouteGuide ClientStreamingMethod.vi | Bin 0 -> 54409 bytes ...nd RPC RouteGuide ServerStreamingMethod.vi | Bin 0 -> 54405 bytes .../Bind RPC RouteGuide UnaryMethod.vi | Bin 0 -> 54371 bytes ...de BidirectionalStreamingMethod Request.vi | Bin 0 -> 16975 bytes ...outeGuide ClientStreamingMethod Request.vi | Bin 0 -> 16968 bytes ...outeGuide ServerStreamingMethod Request.vi | Bin 0 -> 16968 bytes .../Get RouteGuide UnaryMethod Request.vi | Bin 0 -> 16958 bytes ...RouteGuide BidirectionalStreamingMethod.vi | Bin 0 -> 21218 bytes ...Method RouteGuide ClientStreamingMethod.vi | Bin 0 -> 21211 bytes ...Method RouteGuide ServerStreamingMethod.vi | Bin 0 -> 21211 bytes .../RPC Method RouteGuide UnaryMethod.vi | Bin 0 -> 21201 bytes ...e BidirectionalStreamingMethod Response.vi | Bin 0 -> 17212 bytes ...uteGuide ClientStreamingMethod Response.vi | Bin 0 -> 17205 bytes ...uteGuide ServerStreamingMethod Response.vi | Bin 0 -> 17205 bytes .../Set RouteGuide UnaryMethod Response.vi | Bin 0 -> 17195 bytes .../RPC Service/RouteGuide/RouteGuide.lvclass | 322 ++++++++++++++ .../RouteGuide/Server API/Destroy.vi | Bin 0 -> 18123 bytes .../Server API/Register gRPC Methods.vi | Bin 0 -> 24069 bytes .../RouteGuide/Server API/Start Async.vi | Bin 0 -> 18223 bytes .../RouteGuide/Server API/Start Sync.vi | Bin 0 -> 33418 bytes .../typeDefs/Server Internal Message UE.ctl | Bin 0 -> 13751 bytes .../typeDefs/Server Internal Message.ctl | Bin 0 -> 13656 bytes .../typeDefs/Server Internal UEs.ctl | Bin 0 -> 14904 bytes .../RouteGuide/typeDefs/Server gRPC UEs.ctl | Bin 0 -> 15216 bytes .../Generated_server/Run Service.vi | Bin 0 -> 23971 bytes .../Tests/enum-streaming/Impl/Run Service.vi | Bin 23923 -> 23971 bytes .../Tests/enum-streaming/Impl/Start Sync.vi | Bin 58714 -> 33418 bytes .../BidirectionalStreamingMethod_client.py | 76 ++++ .../ClientStreamingMethod_client.py | 73 ++++ .../Python_client/Getfeature_client.py | 40 -- .../Python_client/ListFeatures_client.py | 51 --- .../Python_client/RecordRoute_client.py | 38 -- .../Python_client/RouteChat_client.py | 57 --- .../ServerStreamingMethod_client.py | 68 +++ .../Python_client/UnaryMethod_client.py | 65 +++ .../Tests/enum-streaming/enum-streaming.proto | 44 +- .../BidirectionalStreamingMethod.json | 218 ++++++++++ .../testcases/ClientStreamingMethod.json | 178 ++++++++ .../enum-streaming/testcases/GetFeature.json | 30 -- .../testcases/ListFeatures.json | 134 ------ .../enum-streaming/testcases/RecordRoute.json | 64 --- .../enum-streaming/testcases/RouteChat.json | 64 --- .../testcases/ServerStreamingMethod.json | 402 ++++++++++++++++++ .../enum-streaming/testcases/UnaryMethod.json | 122 ++++++ .../Generated Descriptors.vi | Bin 0 -> 8865 bytes .../Generated_server/Generated_server.lvlib | 40 ++ .../FlatToRichhelloworld_HelloReply.vi | Bin 0 -> 11935 bytes .../FlatToRichhelloworld_HelloRequest.vi | Bin 0 -> 11941 bytes .../RPC Messages/Get helloworld_HelloReply.vi | Bin 0 -> 47121 bytes .../Get helloworld_HelloRequest.vi | Bin 0 -> 47171 bytes .../RPC Messages/MessageConverterProxy.vim | Bin 0 -> 14138 bytes .../RPC Messages/Register Descriptors.vi | Bin 0 -> 15960 bytes .../RPC Messages/Register gRPC Messages.vi | Bin 0 -> 20398 bytes .../RichToFlathelloworld_HelloReply.vi | Bin 0 -> 11935 bytes .../RichToFlathelloworld_HelloRequest.vi | Bin 0 -> 11941 bytes .../RPC Messages/Set helloworld_HelloReply.vi | Bin 0 -> 47653 bytes .../Set helloworld_HelloRequest.vi | Bin 0 -> 47707 bytes .../RPC Messages/helloworld_HelloReply.ctl | Bin 0 -> 4678 bytes .../helloworld_HelloReply_Flat.ctl | Bin 0 -> 4695 bytes .../RPC Messages/helloworld_HelloRequest.ctl | Bin 0 -> 4672 bytes .../helloworld_HelloRequest_Flat.ctl | Bin 0 -> 4693 bytes .../Accessor/Read Server Internal UEs.vi | Bin 0 -> 15264 bytes .../Accessor/Read Server RPC Methods.vi | Bin 0 -> 15531 bytes .../Accessor/Write Server Internal UEs.vi | Bin 0 -> 16853 bytes .../Accessor/Write Server RPC Methods.vi | Bin 0 -> 17136 bytes .../GreeterService/GreeterService.lvclass | 196 +++++++++ .../Bind RPC GreeterService SayHello.vi | Bin 0 -> 54052 bytes .../Get GreeterService SayHello Request.vi | Bin 0 -> 16063 bytes .../RPC Method GreeterService SayHello.vi | Bin 0 -> 20826 bytes .../Set GreeterService SayHello Response.vi | Bin 0 -> 16252 bytes .../GreeterService/Server API/Destroy.vi | Bin 0 -> 17735 bytes .../Server API/Register gRPC Methods.vi | Bin 0 -> 20397 bytes .../GreeterService/Server API/Start Async.vi | Bin 0 -> 16295 bytes .../GreeterService/Server API/Start Sync.vi | Bin 0 -> 22398 bytes .../typeDefs/Server Internal Message UE.ctl | Bin 0 -> 13427 bytes .../typeDefs/Server Internal Message.ctl | Bin 0 -> 13332 bytes .../typeDefs/Server Internal UEs.ctl | Bin 0 -> 13660 bytes .../typeDefs/Server gRPC UEs.ctl | Bin 0 -> 14072 bytes .../Generated_server/Run Service.vi | Bin 0 -> 23991 bytes .../{ => Python_server}/helloworld_server.py | 0 .../Generated Descriptors.vi | Bin 0 -> 8961 bytes .../Generated_server/Generated_server.lvlib | 42 ++ .../RPC Messages/FlatToRichRequest.vi | Bin 0 -> 18117 bytes .../RPC Messages/FlatToRichResponse.vi | Bin 0 -> 18254 bytes .../RPC Messages/Get Request.vi | Bin 0 -> 51007 bytes .../RPC Messages/Get Response.vi | Bin 0 -> 51172 bytes .../RPC Messages/MessageConverterProxy.vim | Bin 0 -> 14142 bytes .../RPC Messages/Register Descriptors.vi | Bin 0 -> 15960 bytes .../RPC Messages/Register gRPC Messages.vi | Bin 0 -> 20466 bytes .../Generated_server/RPC Messages/Request.ctl | Bin 0 -> 5716 bytes .../RPC Messages/Request_Flat.ctl | Bin 0 -> 5461 bytes .../Request_request_oneof/FlatToRich.vim | Bin 0 -> 11283 bytes .../GetActiveFieldIndex.vi | Bin 0 -> 13383 bytes .../GetFieldFromProtobufIndex.vi | Bin 0 -> 12533 bytes ...dFromProtobufIndexRequest_request_oneof.vi | Bin 0 -> 12626 bytes .../Request_request_oneof/GetTemplate.vi | Bin 0 -> 13227 bytes .../Request_request_oneof/Getmessage.vi | Bin 0 -> 13286 bytes .../Request_request_oneof/Getrequest_id.vi | Bin 0 -> 13349 bytes .../Request_request_oneof/HasTemplate.vi | Bin 0 -> 13411 bytes .../Request_request_oneof/Hasmessage.vi | Bin 0 -> 13538 bytes .../Request_request_oneof/Hasrequest_id.vi | Bin 0 -> 13541 bytes .../Request_request_oneof.lvclass | 102 +++++ .../Request_request_oneof/RichToFlat.vim | Bin 0 -> 11783 bytes .../Request_request_oneof/SetTemplate.vi | Bin 0 -> 15471 bytes .../Request_request_oneof/Setmessage.vi | Bin 0 -> 15570 bytes .../Request_request_oneof/Setrequest_id.vi | Bin 0 -> 15629 bytes .../RPC Messages/Response.ctl | Bin 0 -> 5765 bytes .../RPC Messages/Response_Flat.ctl | Bin 0 -> 5490 bytes .../Response_response_oneof/FlatToRich.vim | Bin 0 -> 11283 bytes .../GetActiveFieldIndex.vi | Bin 0 -> 13403 bytes .../GetFieldFromProtobufIndex.vi | Bin 0 -> 12533 bytes ...romProtobufIndexResponse_response_oneof.vi | Bin 0 -> 12628 bytes .../Response_response_oneof/GetTemplate.vi | Bin 0 -> 13247 bytes .../Response_response_oneof/Getresponse_id.vi | Bin 0 -> 13370 bytes .../Response_response_oneof/Getresult.vi | Bin 0 -> 13309 bytes .../Response_response_oneof/HasTemplate.vi | Bin 0 -> 13431 bytes .../Response_response_oneof/Hasresponse_id.vi | Bin 0 -> 13558 bytes .../Response_response_oneof/Hasresult.vi | Bin 0 -> 13553 bytes .../Response_response_oneof.lvclass | 102 +++++ .../Response_response_oneof/RichToFlat.vim | Bin 0 -> 11783 bytes .../Response_response_oneof/SetTemplate.vi | Bin 0 -> 15499 bytes .../Response_response_oneof/Setresponse_id.vi | Bin 0 -> 15654 bytes .../Response_response_oneof/Setresult.vi | Bin 0 -> 15593 bytes .../RPC Messages/RichToFlatRequest.vi | Bin 0 -> 16297 bytes .../RPC Messages/RichToFlatResponse.vi | Bin 0 -> 16402 bytes .../RPC Messages/Set Request.vi | Bin 0 -> 50335 bytes .../RPC Messages/Set Response.vi | Bin 0 -> 50432 bytes .../Accessor/Read Server Internal UEs.vi | Bin 0 -> 16496 bytes .../Accessor/Read Server RPC Methods.vi | Bin 0 -> 16691 bytes .../Accessor/Write Server Internal UEs.vi | Bin 0 -> 18101 bytes .../Accessor/Write Server RPC Methods.vi | Bin 0 -> 18300 bytes .../GreeterService/GreeterService.lvclass | 322 ++++++++++++++ ...terService BidirectionalStreamingMethod.vi | Bin 0 -> 54496 bytes ...PC GreeterService ClientStreamingMethod.vi | Bin 0 -> 54457 bytes ...PC GreeterService ServerStreamingMethod.vi | Bin 0 -> 54449 bytes .../Bind RPC GreeterService UnaryMethod.vi | Bin 0 -> 54415 bytes ...ce BidirectionalStreamingMethod Request.vi | Bin 0 -> 16927 bytes ...erService ClientStreamingMethod Request.vi | Bin 0 -> 16920 bytes ...erService ServerStreamingMethod Request.vi | Bin 0 -> 16920 bytes .../Get GreeterService UnaryMethod Request.vi | Bin 0 -> 16910 bytes ...terService BidirectionalStreamingMethod.vi | Bin 0 -> 21306 bytes ...od GreeterService ClientStreamingMethod.vi | Bin 0 -> 21299 bytes ...od GreeterService ServerStreamingMethod.vi | Bin 0 -> 21299 bytes .../RPC Method GreeterService UnaryMethod.vi | Bin 0 -> 21285 bytes ...e BidirectionalStreamingMethod Response.vi | Bin 0 -> 17192 bytes ...rService ClientStreamingMethod Response.vi | Bin 0 -> 17181 bytes ...rService ServerStreamingMethod Response.vi | Bin 0 -> 17185 bytes ...Set GreeterService UnaryMethod Response.vi | Bin 0 -> 17175 bytes .../GreeterService/Server API/Destroy.vi | Bin 0 -> 18195 bytes .../Server API/Register gRPC Methods.vi | Bin 0 -> 24221 bytes .../GreeterService/Server API/Start Async.vi | Bin 0 -> 18363 bytes .../GreeterService/Server API/Start Sync.vi | Bin 0 -> 43930 bytes .../typeDefs/Server Internal Message UE.ctl | Bin 0 -> 13807 bytes .../typeDefs/Server Internal Message.ctl | Bin 0 -> 13712 bytes .../typeDefs/Server Internal UEs.ctl | Bin 0 -> 14968 bytes .../typeDefs/Server gRPC UEs.ctl | Bin 0 -> 15276 bytes .../Generated_server/Run Service.vi | Bin 0 -> 24031 bytes .../UnaryMethod_client.py | 0 .../oneof-streaming_server.py | 0 .../Generated Descriptors.vi | Bin 0 -> 8897 bytes .../Generated_server/Generated_server.lvlib | 42 ++ .../RPC Messages/FlatToRichGreeter_req.vi | Bin 0 -> 18181 bytes .../RPC Messages/FlatToRichGreeter_res.vi | Bin 0 -> 18161 bytes .../RPC Messages/Get Greeter_req.vi | Bin 0 -> 51219 bytes .../RPC Messages/Get Greeter_res.vi | Bin 0 -> 51195 bytes .../RPC Messages/Greeter_req.ctl | Bin 0 -> 5752 bytes .../RPC Messages/Greeter_req_Flat.ctl | Bin 0 -> 5497 bytes .../Greeter_req_req_oneof/FlatToRich.vim | Bin 0 -> 11283 bytes .../GetActiveFieldIndex.vi | Bin 0 -> 13383 bytes .../GetFieldFromProtobufIndex.vi | Bin 0 -> 12529 bytes ...dFromProtobufIndexGreeter_req_req_oneof.vi | Bin 0 -> 12602 bytes .../Greeter_req_req_oneof/GetTemplate.vi | Bin 0 -> 13227 bytes .../Greeter_req_req_oneof/Getreq_name.vi | Bin 0 -> 13291 bytes .../Greeter_req_req_oneof/Getreq_num.vi | Bin 0 -> 13346 bytes .../Greeter_req_req_oneof.lvclass | 102 +++++ .../Greeter_req_req_oneof/HasTemplate.vi | Bin 0 -> 13411 bytes .../Greeter_req_req_oneof/Hasreq_name.vi | Bin 0 -> 13535 bytes .../Greeter_req_req_oneof/Hasreq_num.vi | Bin 0 -> 13534 bytes .../Greeter_req_req_oneof/RichToFlat.vim | Bin 0 -> 11783 bytes .../Greeter_req_req_oneof/SetTemplate.vi | Bin 0 -> 15471 bytes .../Greeter_req_req_oneof/Setreq_name.vi | Bin 0 -> 15571 bytes .../Greeter_req_req_oneof/Setreq_num.vi | Bin 0 -> 15622 bytes .../RPC Messages/Greeter_res.ctl | Bin 0 -> 5748 bytes .../RPC Messages/Greeter_res_Flat.ctl | Bin 0 -> 5481 bytes .../Greeter_res_res_oneof/FlatToRich.vim | Bin 0 -> 11283 bytes .../GetActiveFieldIndex.vi | Bin 0 -> 13383 bytes .../GetFieldFromProtobufIndex.vi | Bin 0 -> 12529 bytes ...dFromProtobufIndexGreeter_res_res_oneof.vi | Bin 0 -> 12602 bytes .../Greeter_res_res_oneof/GetTemplate.vi | Bin 0 -> 13227 bytes .../Greeter_res_res_oneof/Getres_name.vi | Bin 0 -> 13291 bytes .../Greeter_res_res_oneof/Getres_num.vi | Bin 0 -> 13346 bytes .../Greeter_res_res_oneof.lvclass | 102 +++++ .../Greeter_res_res_oneof/HasTemplate.vi | Bin 0 -> 13411 bytes .../Greeter_res_res_oneof/Hasres_name.vi | Bin 0 -> 13535 bytes .../Greeter_res_res_oneof/Hasres_num.vi | Bin 0 -> 13534 bytes .../Greeter_res_res_oneof/RichToFlat.vim | Bin 0 -> 11783 bytes .../Greeter_res_res_oneof/SetTemplate.vi | Bin 0 -> 15471 bytes .../Greeter_res_res_oneof/Setres_name.vi | Bin 0 -> 15571 bytes .../Greeter_res_res_oneof/Setres_num.vi | Bin 0 -> 15622 bytes .../RPC Messages/MessageConverterProxy.vim | Bin 0 -> 14138 bytes .../RPC Messages/Register Descriptors.vi | Bin 0 -> 15960 bytes .../RPC Messages/Register gRPC Messages.vi | Bin 0 -> 20466 bytes .../RPC Messages/RichToFlatGreeter_req.vi | Bin 0 -> 16349 bytes .../RPC Messages/RichToFlatGreeter_res.vi | Bin 0 -> 16337 bytes .../RPC Messages/Set Greeter_req.vi | Bin 0 -> 50503 bytes .../RPC Messages/Set Greeter_res.vi | Bin 0 -> 50479 bytes .../Accessor/Read Server Internal UEs.vi | Bin 0 -> 15268 bytes .../Accessor/Read Server RPC Methods.vi | Bin 0 -> 15535 bytes .../Accessor/Write Server Internal UEs.vi | Bin 0 -> 16861 bytes .../Accessor/Write Server RPC Methods.vi | Bin 0 -> 17140 bytes .../GreeterService/GreeterService.lvclass | 196 +++++++++ .../Bind RPC GreeterService GetFeature.vi | Bin 0 -> 54038 bytes .../Get GreeterService GetFeature Request.vi | Bin 0 -> 16585 bytes .../RPC Method GreeterService GetFeature.vi | Bin 0 -> 20832 bytes .../Set GreeterService GetFeature Response.vi | Bin 0 -> 16798 bytes .../GreeterService/Server API/Destroy.vi | Bin 0 -> 17739 bytes .../Server API/Register gRPC Methods.vi | Bin 0 -> 20405 bytes .../GreeterService/Server API/Start Async.vi | Bin 0 -> 16307 bytes .../GreeterService/Server API/Start Sync.vi | Bin 0 -> 28858 bytes .../typeDefs/Server Internal Message UE.ctl | Bin 0 -> 13431 bytes .../typeDefs/Server Internal Message.ctl | Bin 0 -> 13336 bytes .../typeDefs/Server Internal UEs.ctl | Bin 0 -> 13664 bytes .../typeDefs/Server gRPC UEs.ctl | Bin 0 -> 14076 bytes .../Generated_server/Run Service.vi | Bin 0 -> 21951 bytes 255 files changed, 2834 insertions(+), 511 deletions(-) create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/Generated Descriptors/Generated Descriptors.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/Generated_server.lvlib create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/FlatToRichrouteguide_request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/FlatToRichrouteguide_response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color_Flat.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color for Value.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color_Flat for Value.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/MessageConverterProxy.vim create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Register Descriptors.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Register gRPC Messages.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/RichToFlatrouteguide_request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/RichToFlatrouteguide_response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Set routeguide_Color.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Set routeguide_request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Set routeguide_response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_Color.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_Color_Flat.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_request.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_request_Flat.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_response.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/routeguide_response_Flat.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Accessor/Read Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Accessor/Read Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Accessor/Write Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Accessor/Write Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Bind RPC RouteGuide BidirectionalStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Bind RPC RouteGuide ClientStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Bind RPC RouteGuide ServerStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Bind RPC RouteGuide UnaryMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Get RouteGuide BidirectionalStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Get RouteGuide ClientStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Get RouteGuide ServerStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Get RouteGuide UnaryMethod Request.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/RPC Method RouteGuide BidirectionalStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/RPC Method RouteGuide ClientStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/RPC Method RouteGuide ServerStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/RPC Method RouteGuide UnaryMethod.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Set RouteGuide BidirectionalStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Set RouteGuide ClientStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Set RouteGuide ServerStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RPC Methods/Set RouteGuide UnaryMethod Response.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/RouteGuide.lvclass create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Server API/Destroy.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Server API/Register gRPC Methods.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Server API/Start Async.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/Server API/Start Sync.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/typeDefs/Server Internal Message UE.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/typeDefs/Server Internal Message.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/typeDefs/Server Internal UEs.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Service/RouteGuide/typeDefs/Server gRPC UEs.ctl create mode 100644 tests/New_ATS/Tests/enum-streaming/Generated_server/Run Service.vi create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/BidirectionalStreamingMethod_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/ClientStreamingMethod_client.py delete mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/Getfeature_client.py delete mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/ListFeatures_client.py delete mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/RecordRoute_client.py delete mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/RouteChat_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/ServerStreamingMethod_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/Python_client/UnaryMethod_client.py create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/BidirectionalStreamingMethod.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/ClientStreamingMethod.json delete mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/GetFeature.json delete mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/ListFeatures.json delete mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/RecordRoute.json delete mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/RouteChat.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/ServerStreamingMethod.json create mode 100644 tests/New_ATS/Tests/enum-streaming/testcases/UnaryMethod.json create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/Generated Descriptors/Generated Descriptors.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/Generated_server.lvlib create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/FlatToRichhelloworld_HelloReply.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/FlatToRichhelloworld_HelloRequest.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Get helloworld_HelloReply.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Get helloworld_HelloRequest.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/MessageConverterProxy.vim create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Register Descriptors.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Register gRPC Messages.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/RichToFlathelloworld_HelloReply.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/RichToFlathelloworld_HelloRequest.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Set helloworld_HelloReply.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/Set helloworld_HelloRequest.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/helloworld_HelloReply.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/helloworld_HelloReply_Flat.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/helloworld_HelloRequest.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Messages/helloworld_HelloRequest_Flat.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Accessor/Read Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Accessor/Read Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Accessor/Write Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Accessor/Write Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/GreeterService.lvclass create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService SayHello.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService SayHello Request.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService SayHello.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService SayHello Response.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Server API/Destroy.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Server API/Register gRPC Methods.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Server API/Start Async.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/Server API/Start Sync.vi create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message UE.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal UEs.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/RPC Service/GreeterService/typeDefs/Server gRPC UEs.ctl create mode 100644 tests/New_ATS/Tests/helloworld/Generated_server/Run Service.vi rename tests/New_ATS/Tests/helloworld/{ => Python_server}/helloworld_server.py (100%) create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/Generated Descriptors/Generated Descriptors.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/Generated_server.lvlib create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/FlatToRichRequest.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/FlatToRichResponse.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Get Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Get Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/MessageConverterProxy.vim create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Register Descriptors.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Register gRPC Messages.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_Flat.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/FlatToRich.vim create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/GetActiveFieldIndex.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/GetFieldFromProtobufIndex.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/GetFieldFromProtobufIndexRequest_request_oneof.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/GetTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Getmessage.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Getrequest_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/HasTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Hasmessage.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Hasrequest_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Request_request_oneof.lvclass create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/RichToFlat.vim create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/SetTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Setmessage.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Request_request_oneof/Setrequest_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_Flat.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/FlatToRich.vim create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/GetActiveFieldIndex.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/GetFieldFromProtobufIndex.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/GetFieldFromProtobufIndexResponse_response_oneof.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/GetTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Getresponse_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Getresult.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/HasTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Hasresponse_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Hasresult.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Response_response_oneof.lvclass create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/RichToFlat.vim create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/SetTemplate.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Setresponse_id.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Response_response_oneof/Setresult.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/RichToFlatRequest.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/RichToFlatResponse.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Set Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Messages/Set Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Accessor/Read Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Accessor/Read Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Accessor/Write Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Accessor/Write Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/GreeterService.lvclass create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService BidirectionalStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService ClientStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService ServerStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService UnaryMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService BidirectionalStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService ClientStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService ServerStreamingMethod Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService UnaryMethod Request.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService BidirectionalStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService ClientStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService ServerStreamingMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService UnaryMethod.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService BidirectionalStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService ClientStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService ServerStreamingMethod Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService UnaryMethod Response.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Server API/Destroy.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Server API/Register gRPC Methods.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Server API/Start Async.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/Server API/Start Sync.vi create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message UE.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal UEs.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/RPC Service/GreeterService/typeDefs/Server gRPC UEs.ctl create mode 100644 tests/New_ATS/Tests/oneof-streaming/Generated_server/Run Service.vi rename tests/New_ATS/Tests/oneof-streaming/{Python_server => Python_client}/UnaryMethod_client.py (100%) rename tests/New_ATS/Tests/oneof-streaming/{Python_client => Python_server}/oneof-streaming_server.py (100%) create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/Generated Descriptors/Generated Descriptors.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/Generated_server.lvlib create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/FlatToRichGreeter_req.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/FlatToRichGreeter_res.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Get Greeter_req.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Get Greeter_res.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_Flat.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/FlatToRich.vim create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/GetActiveFieldIndex.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/GetFieldFromProtobufIndex.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/GetFieldFromProtobufIndexGreeter_req_req_oneof.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/GetTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Getreq_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Getreq_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Greeter_req_req_oneof.lvclass create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/HasTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Hasreq_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Hasreq_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/RichToFlat.vim create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/SetTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Setreq_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_req_req_oneof/Setreq_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_Flat.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/FlatToRich.vim create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/GetActiveFieldIndex.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/GetFieldFromProtobufIndex.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/GetFieldFromProtobufIndexGreeter_res_res_oneof.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/GetTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Getres_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Getres_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Greeter_res_res_oneof.lvclass create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/HasTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Hasres_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Hasres_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/RichToFlat.vim create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/SetTemplate.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Setres_name.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Greeter_res_res_oneof/Setres_num.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/MessageConverterProxy.vim create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Register Descriptors.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Register gRPC Messages.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/RichToFlatGreeter_req.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/RichToFlatGreeter_res.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Set Greeter_req.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Messages/Set Greeter_res.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Accessor/Read Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Accessor/Read Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Accessor/Write Server Internal UEs.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Accessor/Write Server RPC Methods.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/GreeterService.lvclass create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/RPC Methods/Bind RPC GreeterService GetFeature.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/RPC Methods/Get GreeterService GetFeature Request.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/RPC Methods/RPC Method GreeterService GetFeature.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/RPC Methods/Set GreeterService GetFeature Response.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Server API/Destroy.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Server API/Register gRPC Methods.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Server API/Start Async.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/Server API/Start Sync.vi create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message UE.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal Message.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/typeDefs/Server Internal UEs.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/RPC Service/GreeterService/typeDefs/Server gRPC UEs.ctl create mode 100644 tests/New_ATS/Tests/simple-oneof/Generated_server/Run Service.vi diff --git a/tests/New_ATS/.gitignore b/tests/New_ATS/.gitignore index a474825b..dfc667cf 100644 --- a/tests/New_ATS/.gitignore +++ b/tests/New_ATS/.gitignore @@ -8,6 +8,5 @@ venv *.aliases *.lvproj *.lvlps -Generated_server Generated_client logs diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/Generated Descriptors/Generated Descriptors.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/Generated Descriptors/Generated Descriptors.vi new file mode 100644 index 0000000000000000000000000000000000000000..f9ff2fb23e835f3d37483a06bd6454facc3ee1cf GIT binary patch literal 8997 zcmeI2c~}%zy2cMJn=B%V3RjHSVsHthwH(F71))XImL1$8Akd{fw1O=n8WfC}v;h|| zDn+6KqZ2`+s3fC66a*Kvj6^YmQAjXIByM<#h7g4Np6Uj@(u4EI+~>~o3}1Qbob!HX z`So{-s`FIo=kMocZbEv=f;_!su0eAN8Cpq5FJD549m@I02P5eXoGD)}S1pc_M}(}D zt77FUCuOWs5e65@v>}Pa1qC}|NbCBf7nzKFs7s=V*7b0R+F`WPVPBVg{_tVjG1r_G zb<5t4vpomh45=^mTYP`7?o+kWC2R2*%YpyhEUO%na&sFwuHTT@JN-ek>w0Z7lKQ-S zvMBRi)US((%Cv94Hq{Q_7gm(`t={Nmh z?3kj9Z6CM)Zg8mPK&U*+iiVA{cWYVQT6=r9?kvHN@lnvEEMzY#f?pVdo{$7DEodqo z{ZXY(;Y8bXR5X4~x6Up?;idkXZgl?6CNC;-yrywQRAzVz|9a+o1PEYf@Sb_J1>5cG4-O{MLJ0 z$7lH1T+!c@_m$Zh|NDJNTlmlYe;=E%t30?aRd#SQd;7@WZyY{c6BV#~k3rC&&r%<6 zx1D&TWv|KVYrQ{M(lD@~z}4PJ8X4<+t*y5FX1h!;E#7Hoh$j z-5YM#8u`BC-P_})C^9l~#`eo118(romZcWig>(13>kw+?xbn>$_Lhx%n04i;1r^`M zpYlHV*eb?q!6A7>lK9c{)*Yk1N@PO9PgYkiDyz-7a3#a%bM}4xqm9lj>VPf#&lrj# ze#(e$+_`DB`L}OL78>-oywZ28e!*tjl8wIoTW*+T{ds8GvbbW$JgIt<)GSPV(O{Rc z@4{UrszU>qWAUmtGcF~v;iX5Hu2p@ncHH03-QQkbc84h+UT!mC@yLuED|5&D_kADl z3*23JFePQe!-`9-E5?64*oO69oTjr)J)~y@DMX&n3Vu07PG}|BY zYfsEN{$F!4(mk0)@`R}u{6E-tt^In8Ty8LDh2x(FteX+#?il4=n1r!Q3YQ-5dgBHR2;&6z2W9ph`#9qYfW zQY~t1Xc(Jt>y4)QW9s9hH!ry|HSFwc=f&zN3r2+hW;>+NZAA6@M*Sb{jN1I`k9@c% znEmp%)JI1oS+g(472Z&8IXBv8je~PuY zoi{d?wH<8;tXp~O_?(1b_1?V?o1Q7BIxKg$Et{XKf7F^Fy#(&rc_jXd|v|L`@(z?5?iTPzHpRw~80mEW&v z@{Z3s@@s|ag2g3+oT=G^C&mo-Gj3w?l6v25*puAwq_U|ozwcf1oMR3Hx7f7AjNYa8 z{$|S1Md`Ag$8slqw1tTnTz~di{heB)?Asp&#$Qfa`^DVfr=L~_&i6F^wDp)p{GM&= zn6;adUH8RXSUkCESi3jxZ%?k*I{b9LcvxV|%+nvV=B}^bacjF_(u9(xiPp~6v*_)R z-V?`Yb6Uqe(^cB_o=G0jja=Mk;h~|;!|h6b-In#}?Or>I=i0foyxr@>WrdO9^l9gR zFiR1qr6ky-IX~C$voTJT=3;O>!KSLjB)`@*%;is`KIg1$rL7w-_1}6=CAl4*wm9xW z#Bhnl$SY5G51Vv1-}x^)F0Iqs?WJd!+1mb_nca4~ip$O0MxC9}_85QByW-t5eUc5; zR+aMB3&rW##TCUrX5Tw|EnC#DuJUgBg<<76=HrH%1l+XtKb&rzKFNMkA5#?>QdV64 zZFWgxdwar8vHRAeGmos0+#4&A%so*v=}zgB_Cck7=Qr~E7CK4vnOQk}+Rxhw*}GqA zLqj3N#*~nLH7L_3in*6(h-Y}z@);3|m?#w-pU_P^Oph27iSY0dHoyJi#!iw*oFx*8 z39Zvdj|sZU6k)2xsx`C&%$Sb<+NW7}TQzL{{+Z1j<`6cTG^bn57ZstuFa$kycxgdX z(Tp#2qs|xowH1w@Hh!s#(D$YOnr@Uq@Ms6pR%pL&jLz7dz21-6yEDyF^qhMl@c$VB z+$3<3BJoHZ5{twjLFb|K(0S-QbRIenorBIn=b&@YIp`d87CH-^h0a1}p|j8#=nQlQ zIs=`7&OjFq=ma`}PM{+eJSOKc5syK648Wr?Pza9`4;~&oJa~BUph|e~@ZjOW!-Izh z51J4jJUn=K@bKW_!Gmsu2M-S(9y~mFc<^8-LP?KM0}lrt6bT0&4m=!qIPh@bftzsP;lRUzhXW4>9&{0+ zLP?|*tg_1zU0UbOHco^_7;90jOO(W6JCy1JSa78a7+++3no ztI6ust4UyBAdyO?L@X8)OG{y9Iy)PKSV|gGjcFJ=HbP#j zmW9c&5fV&*)|US-GHjTLH4@EVO}4L0s0*4l`FCeD3i7n0J524*!O#3B_K2_i_E)Me zE#500O|{3bGc28APkcH7&mNIJ-FxGG^UT8M#ndj za7ZJO@Xky4WI}ga-5K3xHwo_sL&HNChlcizmNZ-FD@#Vq;MO#lnVIzIW0qoPY3M#| zcjcYBZ2p6^RZdi_DIl8-~=)U^5-K zMB6tF-O2Xx0}l!aaxl}+!xYSeSO|O;{67L}dY>u6m2_-c&U5o|8>cOo$voL;ZMn+bXGWa1 z`~Y9Q!Zc+Oarg0`p)Fel`AD^MiAKsi!y>f$WLIfNUy%>q{&w_@aFurUjSKP&@Yl9a zkp^hr5ED`6oIp>hR?qkF^bgRMF9x{Pzj)w3_}) zT9uA=_jG8&oK%0&R}br@v6r-^T{Q!x4lPE9mZU>V>8hEe>(DZFXqu}Xju(6;Cv~(d z?y8yQ>(Gk2YHwuf&~(iEMxKs#x3ya03%;QqRI~2 + + '1#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!)B!!!*Q(C=\>3^E2J"%-8R*Z5-O73A)I78!CG11K?!+Z-5WBS8&%CB5S!&5FD^>[YZE)R$RKFURMX?=/S<LR_T5SP.]FX[JO6:'7_7PWJ@:\H6M9S(G`'3D*?07_P^:NQ\,?.R`(A90]<P1]9@YZ@<R\X^@P-?P_`.^C>&H_7T`.`S]_EB`?>H^IP7&R'VK%E.KL5ON22ZE2>ZE2>ZE3>ZEC>ZEC>ZEA>ZE!>ZE!>ZE*P=Z#9XO=F.0C^SE9N=Z*#+R9O&CEG,#9L/5&2]&*\#5XA+$\=K0)7H]"3?QE-8&:\#5XA+4_&BG!J0Y3E]B;@Q-.75V,T)]21?JF@C34S**`%E(J:5YEE!S7,*R-EE-*1U*F]34_**0(R6YEE]C3@R*"[;F8A34_**0)G()8.8=GL7CRQ0USDQ"*\!%XA#$V-L]!3?Q".Y!A`,+@!%HA!2,"B-$E("I+"$=".Y!A``&(A#4_!*0)'(JPG%9O\-KFEP=DT'9TT'9TT'QR1S(O-R(O-R(K;6]2C0]2C0]<#5D->YD->!T+)M,T/:'7A[G="Y_*OHR@-JZ:2Y8F)@8P7B6"]W^3&3(Q\V1V=`406$5G__?F06G[8?"0705[06'05C[M&L2VXZP&$0V"0V3$V1^^1>>5P>L%0@O?0V?N8F=N(Z@.<J>.,R?.4B=."_P^>ON^.WO^6GMXF^$@TA?HUB@)4XUI=Q@.8DP/T2,_92('5!!!!! + 419463168 + 1.0.0.0 + true + 3 + 49 57 48 48 56 48 48 57 13 0 0 0 0 1 23 21 76 111 97 100 32 38 32 85 110 108 111 97 100 46 108 118 99 108 97 115 115 0 0 1 0 0 0 0 0 9 0 0 25 254 1 100 1 100 80 84 72 48 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 15 13 76 97 121 101 114 46 108 118 99 108 97 115 115 0 0 1 0 0 0 0 0 7 0 0 12 182 0 0 0 0 0 0 0 0 0 0 12 158 0 40 0 0 12 152 0 0 12 0 0 0 0 0 0 32 0 32 0 24 0 0 0 0 0 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 72 159 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 127 255 255 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 70 105 108 108 100 1 0 2 0 0 0 1 15 13 76 97 121 101 114 46 108 118 99 108 97 115 115 0 0 1 0 0 0 0 0 7 0 0 12 182 0 0 0 0 0 0 0 0 0 0 12 158 0 40 0 0 12 152 0 0 12 0 0 0 0 0 0 32 0 32 0 24 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 255 200 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 70 105 108 108 100 1 0 2 0 0 0 6 115 101 114 118 101 114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 83 109 97 108 108 32 70 111 110 116 115 0 1 9 1 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/FlatToRichrouteguide_request.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/FlatToRichrouteguide_request.vi new file mode 100644 index 0000000000000000000000000000000000000000..b4cedf4d970ce5b909b2347b84b9d6df72b72131 GIT binary patch literal 13288 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 QpQn+tozqHxDdO+^Kb$jKbpQYW literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color.vi new file mode 100644 index 0000000000000000000000000000000000000000..98c540c7559eed44868f7cacf2ed10ad993a9b90 GIT binary patch literal 23086 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 B!fF5j literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color_Flat.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get Value for routeguide_Color_Flat.vi new file mode 100644 index 0000000000000000000000000000000000000000..29cc803d9e473dac50e226bca6ff3d9fb7a28274 GIT binary patch literal 23099 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 RJ=WgIObuK$7+hxde*j;lom2n- literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color for Value.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color for Value.vi new file mode 100644 index 0000000000000000000000000000000000000000..e407819c8d196f4188297379396165657a197c0f GIT binary patch literal 23094 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 XWQVj=MWfK3FneG#wnq7Y3)}u57lUfP literal 0 HcmV?d00001 diff --git a/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color.vi b/tests/New_ATS/Tests/enum-streaming/Generated_server/RPC Messages/Get routeguide_Color.vi new file mode 100644 index 0000000000000000000000000000000000000000..ac0e39c76c7e2114f7ac01a1b34fd20511c33d9e GIT binary patch literal 45004 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�LLWH!%OY$#(`!wM7FnZPos)2eNP3emF$GFh5QTeo+I5?^oGI$woa;26(tJ z+nUV=JtorkZq?!kJ;oQ1Z^-$B9#CxI|2_BS{%a-uFm8zdgM5wo5A~Sc1`7vLuNH}| z0qYNP0J)|I#-H@7ertMcj8!MF6pa5?@iDY(`-);cewWS@8JeB% zFZrTQaWd4!y>a0C1l1^|5pB(>QFf_qcT{D0BU#>hm&KM~KjCNjGf_Gh&G>ze z+{L&z#N9qo!!k+xK-|=#|GU}BFT+!BXQ$W#hvd2?yQoJSaQg@+Y!D0< zctVsd{!8C#ykY~?5S8I@75Hbz_Nxw`z23wMr&aY@ZwPn2~iJ zW3r~(?@n!>jc|&2FYZWUX-vWy4)+fw@w#0)MLWaWEpW?|35J_e z8d%Frxs}KUoR6u^*p+Iz?A9vCR!a(rncs28U5u4&I7?B#M$YqGo&I@Jz1?Jv#p-u5 zi>^p%_~;rKyvv$17Ut~-+J#CmHZ_| zUh&~>iLYxqG)uqE+3H<^k!1?l>|wu6CGSS)XU@y(lmMl&<9&j@LgLU%P2_acG(J*q zmk~_?m89Mq`g6P*iaQ2Q48#i3!v|63{S=v>n|xL4YP)Ym91A=={z&!I+sLHni_6~@ zrBO)Jm26GvVO@7@fChZe%LST7`ExPmcsG4KT3vU;h^omyK8J^?I;(tY>@@3gh z_&*-+cJgt3suZxa`%!$8AdMTrP0|F5$exI6_J?Ba)TNt=BV*W#&rn@wFD=QBeAv}t zKQ-I6Fz-;H6=0W|#<$Gtmdl7M{LVft0s8Q^K?tq&kuV_ zXC^%lHiX{i4eSR_ItKj+7V4OXi#U8r&_c0qY|L5S`mxB7R#j?=At0gvU?bN zSr1%oV5<1i)!T&|bV4fH`O5_~-X%1B(7EFp{(BZ+#iwsgM_41$QYH^DB;R?@EF!5w z)6ttq&@npK1vwDic$dbP5XF6kA;Bk%wHZ2QJ@7!nCo|qbis`(Ag%4o>-%vt%zg@kA zHskoYWglvb3_vD%)YRcf#u=BHrA676Sgo}I_pd} zrdN|@OFFHj%uF;K*&xlHI#5&D5!q0xb8Mxh^pg8{lI>WwfTA~o?Y>owLU6n<@dMM? z6R1OO&E|~?2XSU|VBK`_Dy#cMba8(%-N_2U$goG_=n;Y*mqRTST_YdekBnbz zFpsFn?Bj~TiB?S~&}AHvI5hs`g~mxfrh(JfV_pkPEiAh3sgmH+N@uE;+rjwgd}|Zh0P0J`10l@D~!jD*h0Td>wT@IEo>;mRq9fRY*9$+M;g0erGaO~R z=+1|Di=IyF)CQh8X!z=U4WIdNo3S>4Zh&}-M2tTS?$owyf|885anIP+;%%w~7DYk-72TsnX7+FZ_DZJj*H;fd1<#Ed+(eCW+yu;ND*+=7` z%|$aZ?Nyhm@#n3iKOgr9^%1iSKKag##I_DKUjjXWH^RI~>Z;N!{kU(McpuB6$&Do; z;u#`oNWE6Uh+2~3R|fTHg(y7sCsdMIwPUu06_Yoc@n0m*v*2G1u_Ne!hQd|#N1NSM zE6EFK)2zbM-ZYB_5HugZI^KyjW{@b;=y*}3vsxsHe`8&p6m1m44Iq~YZ z!VZn`EbovzW7(y{PirL3!4D&L9Z(W?8KC@FM)IJ=$xyY^qieD&OlTpoZ$77Qel{$R zHFMmKjfmKjiS z_q&&S2kw0>s&eU3vCTPKJIBO8d)+5p7bbdDXX1%BkDx1yOuM1*7c-Kjksb-BrEm1} zq+?}nZ|XYvSoS?MK~#s;S$v%d-o@f*D02&+#fAKQ_RSbN;Seqccdf#RDLOj$L;5wa z*M_*Y4g@TRT$xihO$rtxLX=eM+W&&5x zM~v?EZO2}5MeUYMWIm=;v2-j_PsQC%r5UUeo?4jpU%C6 zbSTiI#**z`OvP@!#asH_!(RPW(WBRDY%fLd2r@r=NttSus9#hXU=rsb#W6k2bUnQ% z{bbf?D4~a#Urg*w(z#-aA?|cX$#nV;G+ac3@U*}ZDRb$N;AUD{abxm)88>C_Qayq! zuM}rS@<`z}()ml=M<}_?K8C>5I0R@PP+5!mQ(RC=oSeHI?)O;f^9$`G>?=E$Z^iRJ z@~V_u$Y06pU}L6!sZ{XTGoUK$s!lZby>Z$6eYu~I!wxQ2^V%z9AFEx5C$~4x-9P#C z+1J#V0A=k1YIoOEq}1(kNlbVBEJn@vVfoYtPt$!}sAdz|_y z=a0Zt@X4=-M+64C~V{NQYv4BgJ#Dq@*K?UZD-JCamMq)M8Mo|hRML7t$NDyf=tb|?{# zV2L~zp4fGCNfu`8!SsA|@`f+9REJ~6&}eCYexb1kt5Ad-(Zh_kZeHE~{AKd&vZvhH zW!`>aSx#dD&#W?DS_JqzkG`^~f1O=Mzw*Ut%v~2IvSRW4vR2H3VU7&%VAz+MyLKE4 zMJ?2a%#NpgsI(x;p z@nrao6uD5#@#Z~I#!(M~s^2d^_dJRa&V5xee&k5rcx;?=T}(~uX#C7hLE`*pz!Vd> zv4%i0u_G|xe1_nts$=HXzynYnQ_LgCt>@Oid1km_Li~?Be_Wq(1G8cr{teOp*VAp_ z*#~w<0RXn%*WWx?{F~1!f7oxue|EpY8x5d=&+EY(8EhkL0iMh6@=4B!b3xK+Fx5K@ z<##9?9<>_jy4!2n;JPR86kce7N=;EHuHKQu*XYitkEGl`uC{3+taGSVwy@% zi1?uo=4wTFA|J%G2qapV9sm5go z2TD#E>n6^NAN25Od~t;*$=|o!_*9|bHMjE;*9n`f7c~OYd?PcLYN+ki5(r&eZ-~c! z>a#BlDtYj(Fb6Rsa*6ue+y(2Lxcg%}=7}M9$h+wx80=jQ!rWzy0L}TUM)GIepgTV`X{)rqIht9$hiQy7?3M$hA1BfBcjjmr zmgLaKYhLC{js4J;nK|?EZTO_q&`mezdV$Y*DG%=URl2nGx$&J$HLZW*nygBhBYdzs zXR6H9o#yPf-02=dS@sC~$Lx#h_t`x=U5734EJ@T=4z>M-nhbo6!r6&-0J4pOpa%>9)0YV6&dAr z@2(2veO?T9et2DhqR+q~qG#8e6_nALR8FCshNq(<`&1`%kZ3J)HaquZDXu%Od8M9l zE6a3R=NI@~uC-y%O244}K8T+0_7#45=}8@@M>i8mvue*AC5=_omre9+^hh3xt8956 z(XXbjl#-q8%H`iNS#F@^R_h6=bl*Ab%$#E99#|_Ocops*UZFpBqq3l0tXcV~pC`RF z#SYeIxP(^?X8DJ1KvN2t<{_CEjE7FYA)z8Y*fV>L-@(Vgzj)`!eECa%7WV_nbr)aJ z$`6oSp-HWA9OsR6Sn~XMPDD|&PQttHwlYoJz*(PNS4AcK6};+->Yqp-ZT?6l$bCQT zVC-r8x}BL#hrVSo_nmT!`ugO`2pit1n@$Knf%`;Bz5X|X7A|F7Y&Q&V?iV!|rt;W1 z=~N|g%TV!nJ(=yGPs>Ll#`Hx?zAD}xl|$sqQSAydxYLOX?}*aO$26W9kiOKaHvZ=M zUU{nZlZEw!-s?#|hO_STS5JBd?$y;2tfa%UY`I~j$Gm@FaKDK#_l(Hsboy>}^PC`C zj-AI9QN6cO182jn0=O+w8S@uy^yd40y9pOaCL0aIauXE{QiI=$IxnAYhe=GFoLK2{ zyq0?TI{#gQ?5-Gpk@?sKmJ9b^6y#iH96PS9H{4YTy~s@Y`4jor>kW5__!2lFEHHh#h8y-aXR=tosaT4ByI9|H53-or28uAKLr?FI^Qw8c*hS@Lij z#k|n4ZeO-!Uw$LBGBql7`c=JxobI?_7)qAygTwf!oL~7!=T-f?x&6Bu%F_G%hh=NZ z92?6bUZ`F;*LVcElk{Mk^APT=x2zOIf^R z@Yx5|jAgz8WV5tRZ+ZMLA;J$CQz+(;-J#f9#hGG%#8K?5K)PZy{98@K-WX0c&cjUp z%u&<{r2(%7@gL-(E8_$sJ1)4y47(&tPI(a3PBBLr<`{oDCEWS2H8pr4c1~Ek?UvS= z^x3MmqZdj|q}?nXPWDK?w+Xuc^of0iEqS%`SF6#23E}G@P$m1b6wh>VN(Ac85+tWS zQ%Li(ls2qX<{R4kZjSb5Gf^pgpcA+0071vi5ph%K{F(kJ>DCb`Ka^?cc{`lp@TeoU zo%`=omOMV65mG2gGq0hlHPHnZA8F9e3yEyef+yHr8^)DYu`-}sOix~cqzyI zJf{Kzkz@o$@V$;gU&mU<4&|x=cl1P|ArOh@*bl#PAe73Y;Il}4bsJ9`>_a$-TVgVz zV$!0bG8BL>1c#9xhO&V}d7-ARNPqx72)0Aocz9r~A;5>x623Ta2ps!%4JHQ~`BexX z(8sU7;{pOG@W+Hv0r@cF-|oO2`#Wv5^1l-sjJh3vYi$1=_-vp5zdOqRj^q2gz5CzG zxAEB;!)<)F@!1-It+m_d&o(|=Be1ph-*Nt|?!{l~K>!1Rdx+m{f71WX?>~`)u_3^> zJb?{|iUMZii}_;k4|g@dmoLcg0eWov)7=ahal36Ju#Lbr0-GVQb{+YP<7R398QE&l z|4gjSqHM?C43+P)ZG66Cu^F|E&t|B6mu=(o9gEGVZG1LE<-6?PfzRq*{6Elxzy@w{ z=kwp{z<9uJ;hUgPNI38%ae&^ws{ujTZrccKBk=z>0tW_6!Y^#c-x}L(e75n~ z8iB2~+vm?VK3gNOwf5g}{;clBU+RH7iT|nvtgI~mQyVrhzNRA*319sh+g5iq_rDkV zr_XA>TmCglA_4N3{#Q%>OTmG#KgC~1Xk7(Jexg^|js1F%jqZTKy5l;%O8m;MW?8l0 zwExLvqy0L)>bTAV#831_c4L-}a?l5}%j+38vg^Wi_l=T`!ga58;&oM0^ zfLIs)N^EVm?z`&v&-Ux7|JktX(f)7ZuV(p6{a?CRZ-?DRU>kvL1hx^_MqnF(e-MGc zFbyCDevpG*7!mly25fj*8YaMiuc2?MhY@Vvkr}(#Adyf_l&hx)1cwA?)fobz)7KG( znF*^Pk;29(FSH%vfGg4$2tmL8LmzwyC%DGWngj3~Au-IlJHXF%aE}0%z>jsnkB%_E z-eKK5`I;0L_+lJEp-*y(i7x7;GWD`iiGPOg425H7G2M=IGXi(z%LeBc0wc}xu08AF z(RF%S$layW*C^6=0P0V8Jbww|*GqntJJx$t#jIKcV z5>Hx^W+Wf?F~iX-DZ9Bm`-Gwwh496|@ zGXKU;hdgo`CJ;WgiNehLL@Y&^_81zrJR?PFso359>huMy*q>7q=58vOn_PVQ9ay)=biV+B44cRRfH#zFD(svNH>b{&q@T- zncikfQ&E3+g&wuvib3t(XjW0_*F_tuw^Z&5&vG6!Q2DVll(Oq5z?Lr@zZ&J}buula zWF+VLQ9P>gnAqE#-cm3xckt7vASZdKIigf@ZEd9jM4hiG}8%{SsOJnJAH3K#ART>u`rep7hrI|DhG**#= z;0gjOk=bJ9%9;ko8d%!I%s?Gm1MV@Hjx8K3KdGv|?i&NFw6NxzuByK7TWY3bVvMzK zR5!t_#sILmy?UlP>R9=-wvI7)bp#q7v6-3)HWwb7riqFwRxS#T;8lN>-?WFWNjKO% z#>((F$X;(^_hA#+_^&ejHPMDz@UeJrtPj6*&G36(!u5w(-({pVzuJ*L`Bg@iyNPU* z91L{7+A*+gBIEg0#>BLV41C|fwC^=@Ed46mxem;CJ7egtcE+2;GsYZS&~}5b1=ct4 tyUYwzA1}DfE*j2na~3h~EqY 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