Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Unified Diff: third_party/grpc/src/python/grpcio/tests/unit/_cython/_channel_test.py

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/grpc/src/python/grpcio/tests/unit/_cython/_channel_test.py
diff --git a/third_party/protobuf/src/google/protobuf/arena_nc_test.py b/third_party/grpc/src/python/grpcio/tests/unit/_cython/_channel_test.py
similarity index 50%
copy from third_party/protobuf/src/google/protobuf/arena_nc_test.py
copy to third_party/grpc/src/python/grpcio/tests/unit/_cython/_channel_test.py
index 87a69b2afd76e6a81adb30e44d7703280535f600..b414f8e6f690771026d4f3b7422bbe089175c1e4 100644
--- a/third_party/protobuf/src/google/protobuf/arena_nc_test.py
+++ b/third_party/grpc/src/python/grpcio/tests/unit/_cython/_channel_test.py
@@ -1,8 +1,5 @@
-#! /usr/bin/env python
-#
-# Protocol Buffers - Google's data interchange format
-# Copyright 2008 Google Inc. All rights reserved.
-# https://developers.google.com/protocol-buffers/
+# Copyright 2016, Google Inc.
+# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
@@ -30,32 +27,57 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Negative compilation unit tests for arena API."""
-
+import time
+import threading
import unittest
-from google3.testing.pybase import fake_target_util
-import unittest
+from grpc._cython import cygrpc
+
+# TODO(nathaniel): This should be at least one hundred. Why not one thousand?
+_PARALLELISM = 4
+
+
+def _channel_and_completion_queue():
+ channel = cygrpc.Channel('localhost:54321', cygrpc.ChannelArgs(()))
+ completion_queue = cygrpc.CompletionQueue()
+ return channel, completion_queue
+
+
+def _connectivity_loop(channel, completion_queue):
+ for _ in range(100):
+ connectivity = channel.check_connectivity_state(True)
+ channel.watch_connectivity_state(
+ connectivity, cygrpc.Timespec(time.time() + 0.2), completion_queue,
+ None)
+ completion_queue.poll(deadline=cygrpc.Timespec(float('+inf')))
+
+
+def _create_loop_destroy():
+ channel, completion_queue = _channel_and_completion_queue()
+ _connectivity_loop(channel, completion_queue)
+ completion_queue.shutdown()
+
+
+def _in_parallel(behavior, arguments):
+ threads = tuple(
+ threading.Thread(target=behavior, args=arguments)
+ for _ in range(_PARALLELISM))
+ for thread in threads:
+ thread.start()
+ for thread in threads:
+ thread.join()
-class ArenaNcTest(unittest.TestCase):
+class ChannelTest(unittest.TestCase):
- def testCompilerErrors(self):
- """Runs a list of tests to verify compiler error messages."""
+ def test_single_channel_lonely_connectivity(self):
+ channel, completion_queue = _channel_and_completion_queue()
+ _in_parallel(_connectivity_loop, (channel, completion_queue,))
+ completion_queue.shutdown()
- # Defines a list of test specs, where each element is a tuple
- # (test name, list of regexes for matching the compiler errors).
- test_specs = [
- ('ARENA_PRIVATE_CONSTRUCTOR',
- [r'calling a protected constructor']),
- ('SANITY', None)]
+ def test_multiple_channels_lonely_connectivity(self):
+ _in_parallel(_create_loop_destroy, ())
- fake_target_util.AssertCcCompilerErrors(
- self, # The current test case.
- 'google3/google/protobuf/arena_nc', # The fake target file.
- 'arena_nc.o', # The sub-target to build.
- test_specs # List of test specifications.
- )
if __name__ == '__main__':
- unittest.main()
+ unittest.main(verbosity=2)

Powered by Google App Engine
This is Rietveld 408576698