From 623b7aee4ac6471e3af13cd2256ad7605e54d983 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <soltanmm@users.noreply.github.com>
Date: Mon, 27 Jul 2015 16:32:03 -0700
Subject: [PATCH] Reorganize Python tests

---
 .../grpc_test}/__init__.py                    |  0
 .../grpcio_test/grpc_test/_adapter/.gitignore |  5 +++
 .../grpc_test/_adapter}/__init__.py           |  0
 ...blocking_invocation_inline_service_test.py |  4 +--
 .../grpc_test}/_adapter/_c_test.py            |  0
 ...vocation_synchronous_event_service_test.py |  4 +--
 .../grpc_test}/_adapter/_face_test_case.py    |  6 ++--
 ...ocation_asynchronous_event_service_test.py |  4 +--
 .../_adapter/_intermediary_low_test.py        |  0
 .../grpc_test}/_adapter/_links_test.py        |  4 +--
 .../_adapter/_lonely_rear_link_test.py        |  2 +-
 .../grpc_test}/_adapter/_low_test.py          |  0
 .../grpc_test}/_adapter/_proto_scenarios.py   |  2 +-
 .../grpc_test}/_adapter/_test_links.py        |  0
 .../grpcio_test/grpc_test/_cython/.gitignore  |  7 ++++
 .../grpcio_test/grpc_test/_cython/__init__.py | 28 +++++++++++++++
 .../grpc_test}/_cython/adapter_low_test.py    |  0
 .../grpc_test}/_cython/cygrpc_test.py         |  2 +-
 .../grpc_test}/_cython/test_utilities.py      |  0
 .../grpc_test/_junkdrawer/__init__.py         | 30 ++++++++++++++++
 .../grpc_test}/_junkdrawer/math_pb2.py        |  0
 .../grpc_test}/_junkdrawer/stock_pb2.py       |  0
 .../grpcio_test/grpc_test/_links/__init__.py  | 30 ++++++++++++++++
 .../_links/_lonely_invocation_link_test.py    |  6 ++--
 .../grpc_test}/_links/_proto_scenarios.py     |  4 +--
 .../grpc_test}/_links/_transmission_test.py   |  8 ++---
 .../grpc_test/early_adopter/__init__.py       | 30 ++++++++++++++++
 .../early_adopter/implementations_test.py     |  2 +-
 .../grpc_test/framework/__init__.py           | 30 ++++++++++++++++
 .../grpc_test/framework/base/__init__.py      | 30 ++++++++++++++++
 .../framework/base/implementations_test.py    |  2 +-
 .../framework/base/interfaces_test_case.py    |  2 +-
 .../grpc_test/framework/common/__init__.py    | 30 ++++++++++++++++
 .../framework/common/test_constants.py        |  0
 .../framework/common/test_control.py          |  0
 .../framework/common/test_coverage.py         |  0
 .../grpc_test/framework/face/__init__.py      | 30 ++++++++++++++++
 .../grpc_test}/framework/face/_test_case.py   |  4 +--
 ...blocking_invocation_inline_service_test.py |  4 +--
 ...vocation_synchronous_event_service_test.py |  4 +--
 ...ocation_asynchronous_event_service_test.py |  4 +--
 .../framework/face/testing/__init__.py        | 30 ++++++++++++++++
 .../framework/face/testing/base_util.py       |  0
 ...ing_invocation_inline_service_test_case.py | 10 +++---
 .../framework/face/testing/callback.py        |  0
 .../framework/face/testing/control.py         |  0
 .../framework/face/testing/coverage.py        |  0
 .../framework/face/testing/digest.py          |  6 ++--
 ...ion_synchronous_event_service_test_case.py | 12 +++----
 ...on_asynchronous_event_service_test_case.py | 10 +++---
 .../framework/face/testing/interfaces.py      |  0
 .../framework/face/testing/serial.py          |  0
 .../framework/face/testing/service.py         |  2 +-
 .../framework/face/testing/stock_service.py   |  4 +--
 .../framework/face/testing/test_case.py       |  2 +-
 .../framework/foundation/__init__.py          | 30 ++++++++++++++++
 .../framework/foundation/_later_test.py       |  0
 .../foundation/_logging_pool_test.py          |  0
 .../framework/foundation/stream_testing.py    |  0
 .../framework/interfaces/__init__.py          | 30 ++++++++++++++++
 .../framework/interfaces/links/__init__.py    | 30 ++++++++++++++++
 .../framework/interfaces/links/test_cases.py  |  4 +--
 .../interfaces/links/test_utilities.py        |  0
 src/python/grpcio_test/setup.py               |  2 +-
 tools/run_tests/python_tests.json             | 34 +++++++++----------
 65 files changed, 447 insertions(+), 77 deletions(-)
 rename src/python/{grpcio/grpc/_junkdrawer => grpcio_test/grpc_test}/__init__.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/_adapter/.gitignore
 rename src/python/{grpcio/grpc/framework/face/testing => grpcio_test/grpc_test/_adapter}/__init__.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_blocking_invocation_inline_service_test.py (92%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_c_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_event_invocation_synchronous_event_service_test.py (92%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_face_test_case.py (96%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_future_invocation_asynchronous_event_service_test.py (92%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_intermediary_low_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_links_test.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_lonely_rear_link_test.py (98%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_low_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_proto_scenarios.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_adapter/_test_links.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/_cython/.gitignore
 create mode 100644 src/python/grpcio_test/grpc_test/_cython/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_cython/adapter_low_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_cython/cygrpc_test.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_cython/test_utilities.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_junkdrawer/math_pb2.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_junkdrawer/stock_pb2.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/_links/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_links/_lonely_invocation_link_test.py (95%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_links/_proto_scenarios.py (98%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/_links/_transmission_test.py (97%)
 create mode 100644 src/python/grpcio_test/grpc_test/early_adopter/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/early_adopter/implementations_test.py (99%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/__init__.py
 create mode 100644 src/python/grpcio_test/grpc_test/framework/base/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/base/implementations_test.py (98%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/base/interfaces_test_case.py (99%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/common/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/common/test_constants.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/common/test_control.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/common/test_coverage.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/face/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/_test_case.py (95%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/blocking_invocation_inline_service_test.py (92%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/event_invocation_synchronous_event_service_test.py (92%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/future_invocation_asynchronous_event_service_test.py (91%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/base_util.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/blocking_invocation_inline_service_test_case.py (97%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/callback.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/control.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/coverage.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/digest.py (98%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/event_invocation_synchronous_event_service_test_case.py (97%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py (98%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/interfaces.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/serial.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/service.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/stock_service.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/face/testing/test_case.py (97%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/foundation/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/foundation/_later_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/foundation/_logging_pool_test.py (100%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/foundation/stream_testing.py (100%)
 create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py
 create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/interfaces/links/test_cases.py (99%)
 rename src/python/{grpcio/grpc => grpcio_test/grpc_test}/framework/interfaces/links/test_utilities.py (100%)

diff --git a/src/python/grpcio/grpc/_junkdrawer/__init__.py b/src/python/grpcio_test/grpc_test/__init__.py
similarity index 100%
rename from src/python/grpcio/grpc/_junkdrawer/__init__.py
rename to src/python/grpcio_test/grpc_test/__init__.py
diff --git a/src/python/grpcio_test/grpc_test/_adapter/.gitignore b/src/python/grpcio_test/grpc_test/_adapter/.gitignore
new file mode 100644
index 0000000000..a6f96cd6db
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_adapter/.gitignore
@@ -0,0 +1,5 @@
+*.a
+*.so
+*.dll
+*.pyc
+*.pyd
diff --git a/src/python/grpcio/grpc/framework/face/testing/__init__.py b/src/python/grpcio_test/grpc_test/_adapter/__init__.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/__init__.py
rename to src/python/grpcio_test/grpc_test/_adapter/__init__.py
diff --git a/src/python/grpcio/grpc/_adapter/_blocking_invocation_inline_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
similarity index 92%
rename from src/python/grpcio/grpc/_adapter/_blocking_invocation_inline_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
index 7a8ff0ad89..a1f776211c 100644
--- a/src/python/grpcio/grpc/_adapter/_blocking_invocation_inline_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
 
 
 class BlockingInvocationInlineServiceTest(
diff --git a/src/python/grpcio/grpc/_adapter/_c_test.py b/src/python/grpcio_test/grpc_test/_adapter/_c_test.py
similarity index 100%
rename from src/python/grpcio/grpc/_adapter/_c_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_c_test.py
diff --git a/src/python/grpcio/grpc/_adapter/_event_invocation_synchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
similarity index 92%
rename from src/python/grpcio/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
index b8ceb75d68..0d01ebc8dc 100644
--- a/src/python/grpcio/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
 
 
 class EventInvocationSynchronousEventServiceTest(
diff --git a/src/python/grpcio/grpc/_adapter/_face_test_case.py b/src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
similarity index 96%
rename from src/python/grpcio/grpc/_adapter/_face_test_case.py
rename to src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
index 5fa974ed06..dfbd0b60af 100644
--- a/src/python/grpcio/grpc/_adapter/_face_test_case.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
@@ -36,10 +36,10 @@ from grpc._adapter import rear
 from grpc.framework.base import util
 from grpc.framework.base import implementations as base_implementations
 from grpc.framework.face import implementations as face_implementations
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import serial
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import serial
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_TIMEOUT = 90
diff --git a/src/python/grpcio/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
similarity index 92%
rename from src/python/grpcio/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
index 3773e65575..ea4a6a0bae 100644
--- a/src/python/grpcio/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
 
 
 class FutureInvocationAsynchronousEventServiceTest(
diff --git a/src/python/grpcio/grpc/_adapter/_intermediary_low_test.py b/src/python/grpcio_test/grpc_test/_adapter/_intermediary_low_test.py
similarity index 100%
rename from src/python/grpcio/grpc/_adapter/_intermediary_low_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_intermediary_low_test.py
diff --git a/src/python/grpcio/grpc/_adapter/_links_test.py b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py
similarity index 99%
rename from src/python/grpcio/grpc/_adapter/_links_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_links_test.py
index 4729b84f84..c4686b327a 100644
--- a/src/python/grpcio/grpc/_adapter/_links_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py
@@ -32,12 +32,12 @@
 import threading
 import unittest
 
-from grpc._adapter import _proto_scenarios
-from grpc._adapter import _test_links
 from grpc._adapter import fore
 from grpc._adapter import rear
 from grpc.framework.base import interfaces
 from grpc.framework.foundation import logging_pool
+from grpc_test._adapter import _proto_scenarios
+from grpc_test._adapter import _test_links
 
 _IDENTITY = lambda x: x
 _TIMEOUT = 32
diff --git a/src/python/grpcio/grpc/_adapter/_lonely_rear_link_test.py b/src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
similarity index 98%
rename from src/python/grpcio/grpc/_adapter/_lonely_rear_link_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
index 7f5021f40e..9b5758f60f 100644
--- a/src/python/grpcio/grpc/_adapter/_lonely_rear_link_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
@@ -31,10 +31,10 @@
 
 import unittest
 
-from grpc._adapter import _test_links
 from grpc._adapter import rear
 from grpc.framework.base import interfaces
 from grpc.framework.foundation import logging_pool
+from grpc_test._adapter import _test_links
 
 _IDENTITY = lambda x: x
 _TIMEOUT = 2
diff --git a/src/python/grpcio/grpc/_adapter/_low_test.py b/src/python/grpcio_test/grpc_test/_adapter/_low_test.py
similarity index 100%
rename from src/python/grpcio/grpc/_adapter/_low_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_low_test.py
diff --git a/src/python/grpcio/grpc/_adapter/_proto_scenarios.py b/src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
similarity index 99%
rename from src/python/grpcio/grpc/_adapter/_proto_scenarios.py
rename to src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
index 60a622ba8b..b3d6ec8607 100644
--- a/src/python/grpcio/grpc/_adapter/_proto_scenarios.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
@@ -32,7 +32,7 @@
 import abc
 import threading
 
-from grpc._junkdrawer import math_pb2
+from grpc_test._junkdrawer import math_pb2
 
 
 class ProtoScenario(object):
diff --git a/src/python/grpcio/grpc/_adapter/_test_links.py b/src/python/grpcio_test/grpc_test/_adapter/_test_links.py
similarity index 100%
rename from src/python/grpcio/grpc/_adapter/_test_links.py
rename to src/python/grpcio_test/grpc_test/_adapter/_test_links.py
diff --git a/src/python/grpcio_test/grpc_test/_cython/.gitignore b/src/python/grpcio_test/grpc_test/_cython/.gitignore
new file mode 100644
index 0000000000..c315029288
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_cython/.gitignore
@@ -0,0 +1,7 @@
+*.h
+*.c
+*.a
+*.so
+*.dll
+*.pyc
+*.pyd
diff --git a/src/python/grpcio_test/grpc_test/_cython/__init__.py b/src/python/grpcio_test/grpc_test/_cython/__init__.py
new file mode 100644
index 0000000000..b89398809f
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_cython/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/grpcio/grpc/_cython/adapter_low_test.py b/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py
similarity index 100%
rename from src/python/grpcio/grpc/_cython/adapter_low_test.py
rename to src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py
diff --git a/src/python/grpcio/grpc/_cython/cygrpc_test.py b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
similarity index 99%
rename from src/python/grpcio/grpc/_cython/cygrpc_test.py
rename to src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
index 22d210b16b..637506b42e 100644
--- a/src/python/grpcio/grpc/_cython/cygrpc_test.py
+++ b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
@@ -31,7 +31,7 @@ import time
 import unittest
 
 from grpc._cython import cygrpc
-from grpc._cython import test_utilities
+from grpc_test._cython import test_utilities
 
 
 class TypeSmokeTest(unittest.TestCase):
diff --git a/src/python/grpcio/grpc/_cython/test_utilities.py b/src/python/grpcio_test/grpc_test/_cython/test_utilities.py
similarity index 100%
rename from src/python/grpcio/grpc/_cython/test_utilities.py
rename to src/python/grpcio_test/grpc_test/_cython/test_utilities.py
diff --git a/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py b/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/_junkdrawer/math_pb2.py b/src/python/grpcio_test/grpc_test/_junkdrawer/math_pb2.py
similarity index 100%
rename from src/python/grpcio/grpc/_junkdrawer/math_pb2.py
rename to src/python/grpcio_test/grpc_test/_junkdrawer/math_pb2.py
diff --git a/src/python/grpcio/grpc/_junkdrawer/stock_pb2.py b/src/python/grpcio_test/grpc_test/_junkdrawer/stock_pb2.py
similarity index 100%
rename from src/python/grpcio/grpc/_junkdrawer/stock_pb2.py
rename to src/python/grpcio_test/grpc_test/_junkdrawer/stock_pb2.py
diff --git a/src/python/grpcio_test/grpc_test/_links/__init__.py b/src/python/grpcio_test/grpc_test/_links/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_links/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/_links/_lonely_invocation_link_test.py b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
similarity index 95%
rename from src/python/grpcio/grpc/_links/_lonely_invocation_link_test.py
rename to src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
index 3d629f4387..abe240e07a 100644
--- a/src/python/grpcio/grpc/_links/_lonely_invocation_link_test.py
+++ b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
@@ -33,10 +33,10 @@ import unittest
 
 from grpc._adapter import _intermediary_low
 from grpc._links import invocation
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_cases
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_cases
+from grpc_test.framework.interfaces.links import test_utilities
 
 _NULL_BEHAVIOR = lambda unused_argument: None
 
diff --git a/src/python/grpcio/grpc/_links/_proto_scenarios.py b/src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
similarity index 98%
rename from src/python/grpcio/grpc/_links/_proto_scenarios.py
rename to src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
index 320c0e0f50..0d74d66297 100644
--- a/src/python/grpcio/grpc/_links/_proto_scenarios.py
+++ b/src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
@@ -32,8 +32,8 @@
 import abc
 import threading
 
-from grpc._junkdrawer import math_pb2
-from grpc.framework.common import test_constants
+from grpc_test._junkdrawer import math_pb2
+from grpc_test.framework.common import test_constants
 
 
 class ProtoScenario(object):
diff --git a/src/python/grpcio/grpc/_links/_transmission_test.py b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py
similarity index 97%
rename from src/python/grpcio/grpc/_links/_transmission_test.py
rename to src/python/grpcio_test/grpc_test/_links/_transmission_test.py
index 3eeec03f46..0531fa1d33 100644
--- a/src/python/grpcio/grpc/_links/_transmission_test.py
+++ b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py
@@ -32,13 +32,13 @@
 import unittest
 
 from grpc._adapter import _intermediary_low
-from grpc._links import _proto_scenarios
 from grpc._links import invocation
 from grpc._links import service
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_cases
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test._links import _proto_scenarios
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_cases
+from grpc_test.framework.interfaces.links import test_utilities
 
 _IDENTITY = lambda x: x
 
diff --git a/src/python/grpcio_test/grpc_test/early_adopter/__init__.py b/src/python/grpcio_test/grpc_test/early_adopter/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/early_adopter/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/early_adopter/implementations_test.py b/src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
similarity index 99%
rename from src/python/grpcio/grpc/early_adopter/implementations_test.py
rename to src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
index 49f0e949c4..611637e8b8 100644
--- a/src/python/grpcio/grpc/early_adopter/implementations_test.py
+++ b/src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
@@ -35,7 +35,7 @@ import unittest
 
 from grpc.early_adopter import implementations
 from grpc.framework.alpha import utilities
-from grpc._junkdrawer import math_pb2
+from grpc_test._junkdrawer import math_pb2
 
 SERVICE_NAME = 'math.Math'
 
diff --git a/src/python/grpcio_test/grpc_test/framework/__init__.py b/src/python/grpcio_test/grpc_test/framework/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio_test/grpc_test/framework/base/__init__.py b/src/python/grpcio_test/grpc_test/framework/base/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/base/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/base/implementations_test.py b/src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
similarity index 98%
rename from src/python/grpcio/grpc/framework/base/implementations_test.py
rename to src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
index 72087f4456..5a7d1398fd 100644
--- a/src/python/grpcio/grpc/framework/base/implementations_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
@@ -32,9 +32,9 @@
 import unittest
 
 from grpc.framework.base import implementations
-from grpc.framework.base import interfaces_test_case
 from grpc.framework.base import util
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.base import interfaces_test_case
 
 POOL_MAX_WORKERS = 10
 DEFAULT_TIMEOUT = 30
diff --git a/src/python/grpcio/grpc/framework/base/interfaces_test_case.py b/src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
similarity index 99%
rename from src/python/grpcio/grpc/framework/base/interfaces_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
index dec10c2924..be775ad4e0 100644
--- a/src/python/grpcio/grpc/framework/base/interfaces_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
@@ -35,8 +35,8 @@ import time
 from grpc.framework.base import interfaces
 from grpc.framework.base import util
 from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_testing
 from grpc.framework.foundation import stream_util
+from grpc_test.framework.foundation import stream_testing
 
 TICK = 0.1
 SMALL_TIMEOUT = TICK * 50
diff --git a/src/python/grpcio_test/grpc_test/framework/common/__init__.py b/src/python/grpcio_test/grpc_test/framework/common/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/common/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/common/test_constants.py b/src/python/grpcio_test/grpc_test/framework/common/test_constants.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/common/test_constants.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_constants.py
diff --git a/src/python/grpcio/grpc/framework/common/test_control.py b/src/python/grpcio_test/grpc_test/framework/common/test_control.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/common/test_control.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_control.py
diff --git a/src/python/grpcio/grpc/framework/common/test_coverage.py b/src/python/grpcio_test/grpc_test/framework/common/test_coverage.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/common/test_coverage.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_coverage.py
diff --git a/src/python/grpcio_test/grpc_test/framework/face/__init__.py b/src/python/grpcio_test/grpc_test/framework/face/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/face/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/face/_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/_test_case.py
similarity index 95%
rename from src/python/grpcio/grpc/framework/face/_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/_test_case.py
index 642d500628..486b6e630e 100644
--- a/src/python/grpcio/grpc/framework/face/_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/_test_case.py
@@ -30,9 +30,9 @@
 """Common lifecycle code for in-memory-ticket-exchange Face-layer tests."""
 
 from grpc.framework.face import implementations
-from grpc.framework.face.testing import base_util
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import base_util
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_POOL_SIZE = 10
diff --git a/src/python/grpcio/grpc/framework/face/blocking_invocation_inline_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
similarity index 92%
rename from src/python/grpcio/grpc/framework/face/blocking_invocation_inline_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
index 763f0f0edc..8674666418 100644
--- a/src/python/grpcio/grpc/framework/face/blocking_invocation_inline_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
 
 
 class BlockingInvocationInlineServiceTest(
diff --git a/src/python/grpcio/grpc/framework/face/event_invocation_synchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
similarity index 92%
rename from src/python/grpcio/grpc/framework/face/event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
index e1ab3cf711..dca373ef7c 100644
--- a/src/python/grpcio/grpc/framework/face/event_invocation_synchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
 
 
 class EventInvocationSynchronousEventServiceTest(
diff --git a/src/python/grpcio/grpc/framework/face/future_invocation_asynchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
similarity index 91%
rename from src/python/grpcio/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
index 2d13bb911d..99fdf18123 100644
--- a/src/python/grpcio/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
 
 
 class FutureInvocationAsynchronousEventServiceTest(
diff --git a/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py b/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/face/testing/base_util.py b/src/python/grpcio_test/grpc_test/framework/face/testing/base_util.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/base_util.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/base_util.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
similarity index 97%
rename from src/python/grpcio/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
index e57ee00104..7e1158f96b 100644
--- a/src/python/grpcio/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
@@ -34,11 +34,11 @@ import abc
 import unittest  # pylint: disable=unused-import
 
 from grpc.framework.face import exceptions
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _LONG_TIMEOUT = 45
diff --git a/src/python/grpcio/grpc/framework/face/testing/callback.py b/src/python/grpcio_test/grpc_test/framework/face/testing/callback.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/callback.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/callback.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/control.py b/src/python/grpcio_test/grpc_test/framework/face/testing/control.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/control.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/control.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/coverage.py b/src/python/grpcio_test/grpc_test/framework/face/testing/coverage.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/coverage.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/coverage.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/digest.py b/src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
similarity index 98%
rename from src/python/grpcio/grpc/framework/face/testing/digest.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
index db8fcbb018..54ff21779a 100644
--- a/src/python/grpcio/grpc/framework/face/testing/digest.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
@@ -38,11 +38,11 @@ from grpc.framework.common import cardinality
 from grpc.framework.common import style
 from grpc.framework.face import exceptions
 from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.face.testing import control as testing_control  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import service as testing_service  # pylint: disable=unused-import
 from grpc.framework.foundation import stream
 from grpc.framework.foundation import stream_util
+from grpc_test.framework.face.testing import control as testing_control  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import interfaces  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import service as testing_service  # pylint: disable=unused-import
 
 _IDENTITY = lambda x: x
 
diff --git a/src/python/grpcio/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
similarity index 97%
rename from src/python/grpcio/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
index 0f0b0e3d52..18eed53d6e 100644
--- a/src/python/grpcio/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
@@ -33,12 +33,12 @@ import abc
 import unittest
 
 from grpc.framework.face import interfaces
-from grpc.framework.face.testing import callback as testing_callback
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
+from grpc_test.framework.face.testing import callback as testing_callback
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 
diff --git a/src/python/grpcio/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
similarity index 98%
rename from src/python/grpcio/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
index 21bf9a4248..3b42914342 100644
--- a/src/python/grpcio/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
@@ -35,13 +35,13 @@ import threading
 import unittest
 
 from grpc.framework.face import exceptions
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import future
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_POOL_SIZE = 10
diff --git a/src/python/grpcio/grpc/framework/face/testing/interfaces.py b/src/python/grpcio_test/grpc_test/framework/face/testing/interfaces.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/interfaces.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/interfaces.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/serial.py b/src/python/grpcio_test/grpc_test/framework/face/testing/serial.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/face/testing/serial.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/serial.py
diff --git a/src/python/grpcio/grpc/framework/face/testing/service.py b/src/python/grpcio_test/grpc_test/framework/face/testing/service.py
similarity index 99%
rename from src/python/grpcio/grpc/framework/face/testing/service.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/service.py
index bf54d41d66..ee9d6a3da3 100644
--- a/src/python/grpcio/grpc/framework/face/testing/service.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/service.py
@@ -33,7 +33,7 @@ import abc
 
 # interfaces is referenced from specification in this module.
 from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces
+from grpc_test.framework.face.testing import interfaces
 
 
 class UnaryUnaryTestMethodImplementation(interfaces.Method):
diff --git a/src/python/grpcio/grpc/framework/face/testing/stock_service.py b/src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
similarity index 99%
rename from src/python/grpcio/grpc/framework/face/testing/stock_service.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
index 61aaf444a0..0f83ca4db1 100644
--- a/src/python/grpcio/grpc/framework/face/testing/stock_service.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
@@ -30,11 +30,11 @@
 """Examples of Python implementations of the stock.proto Stock service."""
 
 from grpc.framework.common import cardinality
-from grpc.framework.face.testing import service
 from grpc.framework.foundation import abandonment
 from grpc.framework.foundation import stream
 from grpc.framework.foundation import stream_util
-from grpc._junkdrawer import stock_pb2
+from grpc_test.framework.face.testing import service
+from grpc_test._junkdrawer import stock_pb2
 
 SYMBOL_FORMAT = 'test symbol:%03d'
 STREAM_LENGTH = 400
diff --git a/src/python/grpcio/grpc/framework/face/testing/test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
similarity index 97%
rename from src/python/grpcio/grpc/framework/face/testing/test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
index e60e3d1d40..858d5cf7fd 100644
--- a/src/python/grpcio/grpc/framework/face/testing/test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
@@ -33,7 +33,7 @@ import abc
 
 # face_interfaces and interfaces are referenced in specification in this module.
 from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import interfaces  # pylint: disable=unused-import
 
 
 class FaceTestCase(object):
diff --git a/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py b/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/foundation/_later_test.py b/src/python/grpcio_test/grpc_test/framework/foundation/_later_test.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/foundation/_later_test.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/_later_test.py
diff --git a/src/python/grpcio/grpc/framework/foundation/_logging_pool_test.py b/src/python/grpcio_test/grpc_test/framework/foundation/_logging_pool_test.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/foundation/_logging_pool_test.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/_logging_pool_test.py
diff --git a/src/python/grpcio/grpc/framework/foundation/stream_testing.py b/src/python/grpcio_test/grpc_test/framework/foundation/stream_testing.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/foundation/stream_testing.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/stream_testing.py
diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py
new file mode 100644
index 0000000000..7086519106
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, 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
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio/grpc/framework/interfaces/links/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
similarity index 99%
rename from src/python/grpcio/grpc/framework/interfaces/links/test_cases.py
rename to src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
index bf1f09d99d..26ca035c44 100644
--- a/src/python/grpcio/grpc/framework/interfaces/links/test_cases.py
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
@@ -33,9 +33,9 @@
 import abc
 import unittest  # pylint: disable=unused-import
 
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_utilities
 
 
 def at_least_n_payloads_received_predicate(n):
diff --git a/src/python/grpcio/grpc/framework/interfaces/links/test_utilities.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py
similarity index 100%
rename from src/python/grpcio/grpc/framework/interfaces/links/test_utilities.py
rename to src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py
diff --git a/src/python/grpcio_test/setup.py b/src/python/grpcio_test/setup.py
index dbea0f76ae..3f57ef04e0 100644
--- a/src/python/grpcio_test/setup.py
+++ b/src/python/grpcio_test/setup.py
@@ -31,7 +31,7 @@
 
 import setuptools
 
-_PACKAGES = setuptools.find_packages('.')
+_PACKAGES = setuptools.find_packages('.', exclude=['*._cython', '*._cython.*'])
 
 _PACKAGE_DIRECTORIES = {
     '': '.',
diff --git a/tools/run_tests/python_tests.json b/tools/run_tests/python_tests.json
index 8bb3939fdd..426b93fe3a 100755
--- a/tools/run_tests/python_tests.json
+++ b/tools/run_tests/python_tests.json
@@ -1,102 +1,102 @@
 [
   {
-    "module": "grpc._adapter._c_test",
+    "module": "grpc_test._adapter._c_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._low_test",
+    "module": "grpc_test._adapter._low_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._intermediary_low_test",
+    "module": "grpc_test._adapter._intermediary_low_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._links_test",
+    "module": "grpc_test._adapter._links_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._lonely_rear_link_test",
+    "module": "grpc_test._adapter._lonely_rear_link_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._blocking_invocation_inline_service_test",
+    "module": "grpc_test._adapter._blocking_invocation_inline_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._event_invocation_synchronous_event_service_test",
+    "module": "grpc_test._adapter._event_invocation_synchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._future_invocation_asynchronous_event_service_test",
+    "module": "grpc_test._adapter._future_invocation_asynchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._links._lonely_invocation_link_test",
+    "module": "grpc_test._links._lonely_invocation_link_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._links._transmission_test",
+    "module": "grpc_test._links._transmission_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.early_adopter.implementations_test",
+    "module": "grpc_test.early_adopter.implementations_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.base.implementations_test",
+    "module": "grpc_test.framework.base.implementations_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.blocking_invocation_inline_service_test",
+    "module": "grpc_test.framework.face.blocking_invocation_inline_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.event_invocation_synchronous_event_service_test",
+    "module": "grpc_test.framework.face.event_invocation_synchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.future_invocation_asynchronous_event_service_test",
+    "module": "grpc_test.framework.face.future_invocation_asynchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.foundation._later_test",
+    "module": "grpc_test.framework.foundation._later_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.foundation._logging_pool_test",
+    "module": "grpc_test.framework.foundation._logging_pool_test",
     "pythonVersions": [
       "2.7"
     ]
-- 
GitLab