diff options
author | Jiri Simsa <jsimsa@google.com> | 2018-04-12 21:39:26 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-04-12 21:41:46 -0700 |
commit | 1c88fac05afbce5aa1131c87f0594f9f0f1b6706 (patch) | |
tree | 328b71e341a9bc225121859f11857a82b1a95cc6 /tensorflow/contrib | |
parent | 3438c3f4f18e2057aee38d38537d96cc485b8fab (diff) |
Automated g4 rollback of changelist 192698931
PiperOrigin-RevId: 192718697
Diffstat (limited to 'tensorflow/contrib')
-rw-r--r-- | tensorflow/contrib/BUILD | 1 | ||||
-rw-r--r-- | tensorflow/contrib/__init__.py | 1 | ||||
-rwxr-xr-x | tensorflow/contrib/cmake/tf_python.cmake | 3 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/BUILD | 16 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/python/kernel_tests/BUILD | 76 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test.py | 71 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_base.py | 337 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_servicer.py | 101 | ||||
-rw-r--r-- | tensorflow/contrib/rpc/python/kernel_tests/test_example.proto | 171 |
9 files changed, 1 insertions, 776 deletions
diff --git a/tensorflow/contrib/BUILD b/tensorflow/contrib/BUILD index 192d053683..9bef0d8b61 100644 --- a/tensorflow/contrib/BUILD +++ b/tensorflow/contrib/BUILD @@ -86,7 +86,6 @@ py_library( "//tensorflow/contrib/remote_fused_graph/pylib:remote_fused_graph_ops_py", "//tensorflow/contrib/resampler:resampler_py", "//tensorflow/contrib/rnn:rnn_py", - "//tensorflow/contrib/rpc", "//tensorflow/contrib/saved_model:saved_model_py", "//tensorflow/contrib/seq2seq:seq2seq_py", "//tensorflow/contrib/signal:signal_py", diff --git a/tensorflow/contrib/__init__.py b/tensorflow/contrib/__init__.py index e02dd5e759..aaddb06fa0 100644 --- a/tensorflow/contrib/__init__.py +++ b/tensorflow/contrib/__init__.py @@ -70,7 +70,6 @@ from tensorflow.contrib import recurrent from tensorflow.contrib import reduce_slice_ops from tensorflow.contrib import resampler from tensorflow.contrib import rnn -from tensorflow.contrib import rpc from tensorflow.contrib import saved_model from tensorflow.contrib import seq2seq from tensorflow.contrib import signal diff --git a/tensorflow/contrib/cmake/tf_python.cmake b/tensorflow/contrib/cmake/tf_python.cmake index 9d9db82513..ded15b4b66 100755 --- a/tensorflow/contrib/cmake/tf_python.cmake +++ b/tensorflow/contrib/cmake/tf_python.cmake @@ -345,8 +345,7 @@ GENERATE_PYTHON_OP_LIB("random_ops") GENERATE_PYTHON_OP_LIB("remote_fused_graph_ops" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/contrib/remote_fused_graph/pylib/python/ops/gen_remote_fused_graph_ops.py) GENERATE_PYTHON_OP_LIB("resource_variable_ops") -GENERATE_PYTHON_OP_LIB("rpc_ops" - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/tf_python/tensorflow/contrib/rpc/python/ops/gen_rpc_op.py) +GENERATE_PYTHON_OP_LIB("rpc_ops") GENERATE_PYTHON_OP_LIB("script_ops") GENERATE_PYTHON_OP_LIB("sdca_ops") GENERATE_PYTHON_OP_LIB("set_ops") diff --git a/tensorflow/contrib/rpc/BUILD b/tensorflow/contrib/rpc/BUILD index dbd311a276..597f18c771 100644 --- a/tensorflow/contrib/rpc/BUILD +++ b/tensorflow/contrib/rpc/BUILD @@ -4,8 +4,6 @@ licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) -load("//tensorflow/core:platform/default/build_config_root.bzl", "if_static") - py_library( name = "rpc", srcs = [ @@ -13,17 +11,3 @@ py_library( ], deps = ["//tensorflow/contrib/rpc/python/ops:rpc_op_py"], ) - -py_library( - name = "rpc_pip", - data = if_static( - [], - otherwise = ["//tensorflow/contrib/rpc/python/kernel_tests:libtestexample.so"], - ), - deps = [ - ":rpc", - "//tensorflow/contrib/rpc/python/kernel_tests:py_test_deps", - "//tensorflow/contrib/rpc/python/kernel_tests:rpc_op_test_base", - "//tensorflow/contrib/rpc/python/kernel_tests:rpc_op_test_servicer", - ], -) diff --git a/tensorflow/contrib/rpc/python/kernel_tests/BUILD b/tensorflow/contrib/rpc/python/kernel_tests/BUILD deleted file mode 100644 index 08ec1e61a4..0000000000 --- a/tensorflow/contrib/rpc/python/kernel_tests/BUILD +++ /dev/null @@ -1,76 +0,0 @@ -# TODO(b/76425722): Port everything in here to OS (currently excluded). - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) # Apache 2.0 - -exports_files(["LICENSE"]) - -# Placeholder for loading internal BUILD rule. -load("//tensorflow:tensorflow.bzl", "tf_py_test") -load("//tensorflow:tensorflow.bzl", "tf_cc_shared_object") -load("//tensorflow/core:platform/default/build_config_root.bzl", "if_static") -load("//tensorflow/core:platform/default/build_config.bzl", "tf_proto_library") - -tf_proto_library( - name = "test_example_proto", - srcs = ["test_example.proto"], - has_services = 1, - cc_api_version = 2, - protodeps = ["//tensorflow/core:protos_all"], -) - -py_library( - name = "py_test_deps", - deps = [":test_example_proto_py"], -) - -py_library( - name = "rpc_op_test_base", - srcs = ["rpc_op_test_base.py"], - deps = [ - ":test_example_proto_py", - "//tensorflow/contrib/proto", - "//tensorflow/contrib/rpc", - "//tensorflow/core:protos_all_py", - "//tensorflow/python:dtypes", - "//tensorflow/python:errors", - "//third_party/py/numpy", - ], -) - -py_library( - name = "rpc_op_test_servicer", - srcs = ["rpc_op_test_servicer.py"], - deps = [ - ":py_test_deps", - ":rpc_op_test_base", - "//tensorflow/core:protos_all_py", - "//third_party/py/numpy", - ], -) - -tf_cc_shared_object( - name = "libtestexample.so", - linkstatic = 1, - deps = [ - ":test_example_proto_cc", - ], -) - -tf_py_test( - name = "rpc_op_test", - size = "small", - srcs = ["rpc_op_test.py"], - additional_deps = [ - ":py_test_deps", - ":rpc_op_test_base", - ":rpc_op_test_servicer", - "//tensorflow/core:protos_all_py", - "//tensorflow/python:client_testlib", - ], - data = if_static( - [], - otherwise = [":libtestexample.so"], - ), -) diff --git a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test.py b/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test.py deleted file mode 100644 index e2e0dbc7a2..0000000000 --- a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test.py +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright 2018 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================= - -"""Tests for RpcOp.""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import ctypes as ct -import os - -import grpc -from grpc.framework.foundation import logging_pool -import portpicker - -from tensorflow.contrib.rpc.python.kernel_tests import rpc_op_test_base -from tensorflow.contrib.rpc.python.kernel_tests import rpc_op_test_servicer -from tensorflow.contrib.rpc.python.kernel_tests import test_example_pb2_grpc -from tensorflow.python.platform import test - - -class RpcOpTest(test.TestCase, rpc_op_test_base.RpcOpTestBase): - _protocol = 'grpc' - - invalid_method_string = 'Method not found' - - def __init__(self, methodName='runTest'): # pylint: disable=invalid-name - super(RpcOpTest, self).__init__(methodName) - lib = os.path.join(os.path.dirname(__file__), 'libtestexample.so') - if os.path.isfile(lib): - ct.cdll.LoadLibrary(lib) - - def get_method_name(self, suffix): - return '/tensorflow.contrib.rpc.TestCaseService/%s' % suffix - - def setUp(self): - super(RpcOpTest, self).setUp() - - service_port = portpicker.pick_unused_port() - - server = grpc.server(logging_pool.pool(max_workers=25)) - servicer = rpc_op_test_servicer.RpcOpTestServicer() - test_example_pb2_grpc.add_TestCaseServiceServicer_to_server( - servicer, server) - self._address = 'localhost:%d' % service_port - server.add_insecure_port(self._address) - server.start() - self._server = server - - def tearDown(self): - # TODO(ebrevdo): Figure out why this sometimes times out. - # self._service.ExitLoop() - # self._service_thread.join() - # self._server.stop() - super(RpcOpTest, self).tearDown() - - -if __name__ == '__main__': - test.main() diff --git a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_base.py b/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_base.py deleted file mode 100644 index aa03a103ed..0000000000 --- a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_base.py +++ /dev/null @@ -1,337 +0,0 @@ -# Copyright 2018 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================= - -"""Base class for RpcOp tests.""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import itertools - -import numpy as np - -from tensorflow.contrib.proto import decode_proto -from tensorflow.contrib.proto import encode_proto -from tensorflow.contrib.rpc import rpc -from tensorflow.contrib.rpc import try_rpc -from tensorflow.contrib.rpc.python.kernel_tests import test_example_pb2 -from tensorflow.core.protobuf import config_pb2 -from tensorflow.python.framework import dtypes -from tensorflow.python.framework import errors - -__all__ = ['I_WARNED_YOU', 'RpcOpTestBase'] - -I_WARNED_YOU = 'I warned you!' - - -class RpcOpTestBase(object): - # pylint: disable=missing-docstring,invalid-name - """Base class for RpcOp tests.""" - - def get_method_name(self, suffix): - raise NotImplementedError - - def rpc(self, *args, **kwargs): - return rpc(*args, protocol=self._protocol, **kwargs) - - def try_rpc(self, *args, **kwargs): - return try_rpc(*args, protocol=self._protocol, **kwargs) - - def testScalarHostPortRpc(self): - with self.test_session() as sess: - request_tensors = ( - test_example_pb2.TestCase(shape=[1, 2, 3]).SerializeToString()) - response_tensors = self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) - self.assertEqual(response_tensors.shape, ()) - response_values = sess.run(response_tensors) - response_message = test_example_pb2.TestCase() - self.assertTrue(response_message.ParseFromString(response_values)) - self.assertAllEqual([2, 3, 4], response_message.shape) - - def testScalarHostPortTryRpc(self): - with self.test_session() as sess: - request_tensors = ( - test_example_pb2.TestCase(shape=[1, 2, 3]).SerializeToString()) - response_tensors, status_code, status_message = self.try_rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) - self.assertEqual(status_code.shape, ()) - self.assertEqual(status_message.shape, ()) - self.assertEqual(response_tensors.shape, ()) - response_values, status_code_values, status_message_values = ( - sess.run((response_tensors, status_code, status_message))) - response_message = test_example_pb2.TestCase() - self.assertTrue(response_message.ParseFromString(response_values)) - self.assertAllEqual([2, 3, 4], response_message.shape) - # For the base Rpc op, don't expect to get error status back. - self.assertEqual(errors.OK, status_code_values) - self.assertEqual(b'', status_message_values) - - def testEmptyHostPortRpc(self): - with self.test_session() as sess: - request_tensors = [] - response_tensors = self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) - self.assertAllEqual(response_tensors.shape, [0]) - response_values = sess.run(response_tensors) - self.assertAllEqual(response_values.shape, [0]) - - def testInvalidAddresses(self): - with self.test_session() as sess: - with self.assertRaisesOpError(self.invalid_method_string): - sess.run( - self.rpc( - method='/InvalidService.IncrementTestShapes', - address=self._address, - request='')) - - with self.assertRaisesOpError(self.invalid_method_string): - sess.run( - self.rpc( - method=self.get_method_name('InvalidMethodName'), - address=self._address, - request='')) - - # This also covers the case of address='' - # and address='localhost:293874293874' - with self.assertRaises(errors.UnavailableError): - sess.run( - self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address='unix:/tmp/this_unix_socket_doesnt_exist_97820348!!@', - request='')) - - # Test invalid method with the TryRpc op - _, status_code_value, status_message_value = sess.run( - self.try_rpc( - method=self.get_method_name('InvalidMethodName'), - address=self._address, - request='')) - self.assertEqual(errors.UNIMPLEMENTED, status_code_value) - self.assertTrue( - self.invalid_method_string in status_message_value.decode('ascii')) - - def testAlwaysFailingMethod(self): - with self.test_session() as sess: - response_tensors = self.rpc( - method=self.get_method_name('AlwaysFailWithInvalidArgument'), - address=self._address, - request='') - self.assertEqual(response_tensors.shape, ()) - with self.assertRaisesOpError(I_WARNED_YOU): - sess.run(response_tensors) - - def testSometimesFailingMethodWithManyRequests(self): - with self.test_session() as sess: - # Fail hard by default. - response_tensors = self.rpc( - method=self.get_method_name('SometimesFailWithInvalidArgument'), - address=self._address, - request=[''] * 20) - self.assertEqual(response_tensors.shape, (20,)) - with self.assertRaisesOpError(I_WARNED_YOU): - sess.run(response_tensors) - - # Don't fail hard, use TryRpc - return the failing status instead. - response_tensors, status_code, status_message = self.try_rpc( - method=self.get_method_name('SometimesFailWithInvalidArgument'), - address=self._address, - request=[''] * 20) - self.assertEqual(response_tensors.shape, (20,)) - self.assertEqual(status_code.shape, (20,)) - self.assertEqual(status_message.shape, (20,)) - status_code_values, status_message_values = sess.run((status_code, - status_message)) - self.assertTrue([ - x in (errors.OK, errors.INVALID_ARGUMENT) for x in status_code_values - ]) - expected_message_values = np.where( - status_code_values == errors.INVALID_ARGUMENT, - I_WARNED_YOU.encode('ascii'), b'') - self.assertAllEqual(expected_message_values, status_message_values) - - def testVecHostPortRpc(self): - with self.test_session() as sess: - request_tensors = [ - test_example_pb2.TestCase( - shape=[i, i + 1, i + 2]).SerializeToString() for i in range(20) - ] - response_tensors = self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) - self.assertEqual(response_tensors.shape, (20,)) - response_values = sess.run(response_tensors) - self.assertEqual(response_values.shape, (20,)) - for i in range(20): - response_message = test_example_pb2.TestCase() - self.assertTrue(response_message.ParseFromString(response_values[i])) - self.assertAllEqual([i + 1, i + 2, i + 3], response_message.shape) - - def testVecHostPortManyParallelRpcs(self): - with self.test_session() as sess: - request_tensors = [ - test_example_pb2.TestCase( - shape=[i, i + 1, i + 2]).SerializeToString() for i in range(20) - ] - many_response_tensors = [ - self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) for _ in range(10) - ] - # Launch parallel 10 calls to the RpcOp, each containing - # 20 rpc requests. - many_response_values = sess.run(many_response_tensors) - self.assertEqual(10, len(many_response_values)) - for response_values in many_response_values: - self.assertEqual(response_values.shape, (20,)) - for i in range(20): - response_message = test_example_pb2.TestCase() - self.assertTrue(response_message.ParseFromString(response_values[i])) - self.assertAllEqual([i + 1, i + 2, i + 3], response_message.shape) - - def testVecHostPortRpcUsingEncodeAndDecodeProto(self): - with self.test_session() as sess: - request_tensors = encode_proto( - message_type='tensorflow.contrib.rpc.TestCase', - field_names=['shape'], - sizes=[[3]] * 20, - values=[ - [[i, i + 1, i + 2] for i in range(20)], - ]) - response_tensor_strings = self.rpc( - method=self.get_method_name('IncrementTestShapes'), - address=self._address, - request=request_tensors) - _, (response_shape,) = decode_proto( - bytes=response_tensor_strings, - message_type='tensorflow.contrib.rpc.TestCase', - field_names=['shape'], - output_types=[dtypes.int32]) - response_shape_values = sess.run(response_shape) - self.assertAllEqual([[i + 1, i + 2, i + 3] - for i in range(20)], response_shape_values) - - def testVecHostPortRpcCancelsUponSessionTimeOutWhenSleepingForever(self): - with self.test_session() as sess: - request_tensors = [''] * 25 # This will launch 25 RPC requests. - response_tensors = self.rpc( - method=self.get_method_name('SleepForever'), - address=self._address, - request=request_tensors) - for timeout_ms in [1, 500, 1000]: - options = config_pb2.RunOptions(timeout_in_ms=timeout_ms) - with self.assertRaises((errors.UnavailableError, - errors.DeadlineExceededError)): - sess.run(response_tensors, options=options) - - def testVecHostPortRpcCancelsUponConfiguredTimeOutWhenSleepingForever(self): - with self.test_session() as sess: - request_tensors = [''] * 25 # This will launch 25 RPC requests. - response_tensors = self.rpc( - method=self.get_method_name('SleepForever'), - address=self._address, - timeout_in_ms=1000, - request=request_tensors) - with self.assertRaises(errors.DeadlineExceededError): - sess.run(response_tensors) - - def testTryRpcPropagatesDeadlineErrorWithSometimesTimingOutRequests(self): - with self.test_session() as sess: - response_tensors, status_code, status_message = self.try_rpc( - method=self.get_method_name('SometimesSleepForever'), - timeout_in_ms=1000, - address=self._address, - request=[''] * 20) - self.assertEqual(response_tensors.shape, (20,)) - self.assertEqual(status_code.shape, (20,)) - self.assertEqual(status_message.shape, (20,)) - status_code_values = sess.run(status_code) - self.assertTrue([ - x in (errors.OK, errors.DEADLINE_EXCEEDED) for x in status_code_values - ]) - - def testTryRpcWithMultipleAddressesSingleRequest(self): - flatten = lambda x: list(itertools.chain.from_iterable(x)) - with self.test_session() as sess: - addresses = flatten([[ - self._address, 'unix:/tmp/this_unix_socket_doesnt_exist_97820348!!@' - ] for _ in range(10)]) - request = test_example_pb2.TestCase(shape=[0, 1, 2]).SerializeToString() - response_tensors, status_code, _ = self.try_rpc( - method=self.get_method_name('IncrementTestShapes'), - address=addresses, - request=request) - response_tensors_values, status_code_values = sess.run((response_tensors, - status_code)) - self.assertAllEqual( - flatten([errors.OK, errors.UNAVAILABLE] for _ in range(10)), - status_code_values) - for i in range(10): - self.assertTrue(response_tensors_values[2 * i]) - self.assertFalse(response_tensors_values[2 * i + 1]) - - def testTryRpcWithMultipleMethodsSingleRequest(self): - flatten = lambda x: list(itertools.chain.from_iterable(x)) - with self.test_session() as sess: - methods = flatten( - [[self.get_method_name('IncrementTestShapes'), 'InvalidMethodName'] - for _ in range(10)]) - request = test_example_pb2.TestCase(shape=[0, 1, 2]).SerializeToString() - response_tensors, status_code, _ = self.try_rpc( - method=methods, address=self._address, request=request) - response_tensors_values, status_code_values = sess.run((response_tensors, - status_code)) - self.assertAllEqual( - flatten([errors.OK, errors.UNIMPLEMENTED] for _ in range(10)), - status_code_values) - for i in range(10): - self.assertTrue(response_tensors_values[2 * i]) - self.assertFalse(response_tensors_values[2 * i + 1]) - - def testTryRpcWithMultipleAddressesAndRequests(self): - flatten = lambda x: list(itertools.chain.from_iterable(x)) - with self.test_session() as sess: - addresses = flatten([[ - self._address, 'unix:/tmp/this_unix_socket_doesnt_exist_97820348!!@' - ] for _ in range(10)]) - requests = [ - test_example_pb2.TestCase( - shape=[i, i + 1, i + 2]).SerializeToString() for i in range(20) - ] - response_tensors, status_code, _ = self.try_rpc( - method=self.get_method_name('IncrementTestShapes'), - address=addresses, - request=requests) - response_tensors_values, status_code_values = sess.run((response_tensors, - status_code)) - self.assertAllEqual( - flatten([errors.OK, errors.UNAVAILABLE] for _ in range(10)), - status_code_values) - for i in range(20): - if i % 2 == 1: - self.assertFalse(response_tensors_values[i]) - else: - response_message = test_example_pb2.TestCase() - self.assertTrue( - response_message.ParseFromString(response_tensors_values[i])) - self.assertAllEqual([i + 1, i + 2, i + 3], response_message.shape) diff --git a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_servicer.py b/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_servicer.py deleted file mode 100644 index 7cbd636cb1..0000000000 --- a/tensorflow/contrib/rpc/python/kernel_tests/rpc_op_test_servicer.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright 2018 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================= - -"""Test servicer for RpcOp tests.""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import random -import time - -import grpc - -from tensorflow.contrib.rpc.python.kernel_tests import rpc_op_test_base -from tensorflow.contrib.rpc.python.kernel_tests import test_example_pb2_grpc - - -class RpcOpTestServicer(test_example_pb2_grpc.TestCaseServiceServicer): - """Test servicer for RpcOp tests.""" - - def IncrementTestShapes(self, request, context): - """Increment the entries in the shape attribute of request. - - Args: - request: input TestCase. - context: the rpc context. - - Returns: - output TestCase. - """ - for i in range(len(request.shape)): - request.shape[i] += 1 - return request - - def AlwaysFailWithInvalidArgument(self, request, context): - """Always fails with an InvalidArgument status. - - Args: - request: input TestCase. - context: the rpc context. - - Returns: - output TestCase. - """ - del request - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details(rpc_op_test_base.I_WARNED_YOU) - - def SometimesFailWithInvalidArgument(self, request, context): - """Sometimes fails with an InvalidArgument status. - - Args: - request: input TestCase. - context: the rpc context. - - Returns: - output TestCase. - """ - if random.randint(0, 1) == 1: - context.set_code(grpc.StatusCode.INVALID_ARGUMENT) - context.set_details(rpc_op_test_base.I_WARNED_YOU) - return request - - def SleepForever(self, request, context): - """Sleeps forever. - - Args: - request: input TestCase. - context: the rpc context. - - Returns: - output TestCase. - """ - # TODO(ebrevdo): Make this async wait like the stubby version. - time.sleep(5) - - def SometimesSleepForever(self, request, context): - """Sometimes sleeps forever. - - Args: - request: input TestCase. - context: the rpc context. - - Returns: - output TestCase. - """ - if random.randint(0, 1) == 1: - time.sleep(5) - return request diff --git a/tensorflow/contrib/rpc/python/kernel_tests/test_example.proto b/tensorflow/contrib/rpc/python/kernel_tests/test_example.proto deleted file mode 100644 index 96f4550f62..0000000000 --- a/tensorflow/contrib/rpc/python/kernel_tests/test_example.proto +++ /dev/null @@ -1,171 +0,0 @@ -// Test description and protos to work with it. -// -// Many of the protos in this file are for unit tests that haven't been written yet. - -syntax = "proto2"; - -import "tensorflow/core/framework/types.proto"; - -package tensorflow.contrib.rpc; - -// A TestCase holds a proto and a bunch of assertions -// about how it should decode. -message TestCase { - // A batch of primitives to be serialized and decoded. - repeated RepeatedPrimitiveValue primitive = 1; - // The shape of the batch. - repeated int32 shape = 2; - // Expected sizes for each field. - repeated int32 sizes = 3; - // Expected values for each field. - repeated FieldSpec field = 4; -}; - -service TestCaseService { - // Copy input, and increment each entry in 'shape' by 1. - rpc IncrementTestShapes(TestCase) returns (TestCase) { - } - - // Sleep forever. - rpc SleepForever(TestCase) returns (TestCase) { - } - - // Sleep forever 50% of the time, return immediately the other 50%. - rpc SometimesSleepForever(TestCase) returns (TestCase) { - } - - // Always fails with InvalidArgument. - rpc AlwaysFailWithInvalidArgument(TestCase) returns (TestCase) { - } - - // Fails with InvalidArgument 50% of the time. - rpc SometimesFailWithInvalidArgument(TestCase) returns (TestCase) { - } -}; - -// FieldSpec describes the expected output for a single field. -message FieldSpec { - optional string name = 1; - optional tensorflow.DataType dtype = 2; - optional RepeatedPrimitiveValue expected = 3; -}; - -message TestValue { - optional PrimitiveValue primitive_value = 1; - optional EnumValue enum_value = 2; - optional MessageValue message_value = 3; - optional RepeatedMessageValue repeated_message_value = 4; - optional RepeatedPrimitiveValue repeated_primitive_value = 6; -} - -message PrimitiveValue { - optional double double_value = 1; - optional float float_value = 2; - optional int64 int64_value = 3; - optional uint64 uint64_value = 4; - optional int32 int32_value = 5; - optional fixed64 fixed64_value = 6; - optional fixed32 fixed32_value = 7; - optional bool bool_value = 8; - optional string string_value = 9; - optional bytes bytes_value = 12; - optional uint32 uint32_value = 13; - optional sfixed32 sfixed32_value = 15; - optional sfixed64 sfixed64_value = 16; - optional sint32 sint32_value = 17; - optional sint64 sint64_value = 18; -} - -// NOTE: This definition must be kept in sync with PackedPrimitiveValue. -message RepeatedPrimitiveValue { - repeated double double_value = 1; - repeated float float_value = 2; - repeated int64 int64_value = 3; - repeated uint64 uint64_value = 4; - repeated int32 int32_value = 5; - repeated fixed64 fixed64_value = 6; - repeated fixed32 fixed32_value = 7; - repeated bool bool_value = 8; - repeated string string_value = 9; - repeated bytes bytes_value = 12; - repeated uint32 uint32_value = 13; - repeated sfixed32 sfixed32_value = 15; - repeated sfixed64 sfixed64_value = 16; - repeated sint32 sint32_value = 17; - repeated sint64 sint64_value = 18; - repeated PrimitiveValue message_value = 19; -} - -// A PackedPrimitiveValue looks exactly the same as a RepeatedPrimitiveValue -// in the text format, but the binary serializion is different. -// We test the packed representations by loading the same test cases -// using this definition instead of RepeatedPrimitiveValue. -// NOTE: This definition must be kept in sync with RepeatedPrimitiveValue -// in every way except the packed=true declaration. -message PackedPrimitiveValue { - repeated double double_value = 1 [packed = true]; - repeated float float_value = 2 [packed = true]; - repeated int64 int64_value = 3 [packed = true]; - repeated uint64 uint64_value = 4 [packed = true]; - repeated int32 int32_value = 5 [packed = true]; - repeated fixed64 fixed64_value = 6 [packed = true]; - repeated fixed32 fixed32_value = 7 [packed = true]; - repeated bool bool_value = 8 [packed = true]; - repeated string string_value = 9; - repeated bytes bytes_value = 12; - repeated uint32 uint32_value = 13 [packed = true]; - repeated sfixed32 sfixed32_value = 15 [packed = true]; - repeated sfixed64 sfixed64_value = 16 [packed = true]; - repeated sint32 sint32_value = 17 [packed = true]; - repeated sint64 sint64_value = 18 [packed = true]; - repeated PrimitiveValue message_value = 19; -} - -message EnumValue { - enum Color { - RED = 0; - ORANGE = 1; - YELLOW = 2; - GREEN = 3; - BLUE = 4; - INDIGO = 5; - VIOLET = 6; - }; - optional Color enum_value = 14; - repeated Color repeated_enum_value = 15; -} - - -message InnerMessageValue { - optional float float_value = 2; - repeated bytes bytes_values = 8; -} - -message MiddleMessageValue { - repeated int32 int32_values = 5; - optional InnerMessageValue message_value = 11; - optional uint32 uint32_value = 13; -} - -message MessageValue { - optional double double_value = 1; - optional MiddleMessageValue message_value = 11; -} - -message RepeatedMessageValue { - message NestedMessageValue { - optional float float_value = 2; - repeated bytes bytes_values = 8; - } - - repeated NestedMessageValue message_values = 11; -} - -// Message containing fields with field numbers higher than any field above. An -// instance of this message is prepended to each binary message in the test to -// exercise the code path that handles fields encoded out of order of field -// number. -message ExtraFields { - optional string string_value = 1776; - optional bool bool_value = 1777; -} |