| Index: tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/generate_python_test.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/generate_python_test.py b/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/generate_python_test.py
|
| deleted file mode 100755
|
| index 21a05cced0e035de0aeef219dfdf6ca9b04f6fd2..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/generate_python_test.py
|
| +++ /dev/null
|
| @@ -1,362 +0,0 @@
|
| -#!/usr/bin/env python
|
| -#
|
| -# Copyright 2010 Google Inc.
|
| -#
|
| -# 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 protorpc.generate_python_test."""
|
| -
|
| -__author__ = 'rafek@google.com (Rafe Kaplan)'
|
| -
|
| -
|
| -import os
|
| -import shutil
|
| -import sys
|
| -import tempfile
|
| -import unittest
|
| -
|
| -from protorpc import descriptor
|
| -from protorpc import generate_python
|
| -from protorpc import test_util
|
| -from protorpc import util
|
| -
|
| -
|
| -class ModuleInterfaceTest(test_util.ModuleInterfaceTest,
|
| - test_util.TestCase):
|
| -
|
| - MODULE = generate_python
|
| -
|
| -
|
| -class FormatPythonFileTest(test_util.TestCase):
|
| -
|
| - def setUp(self):
|
| - self.original_path = list(sys.path)
|
| - self.original_modules = dict(sys.modules)
|
| - sys.path = list(sys.path)
|
| - self.file_descriptor = descriptor.FileDescriptor()
|
| -
|
| - # Create temporary directory and add to Python path so that generated
|
| - # Python code can be easily parsed, imported and executed.
|
| - self.temp_dir = tempfile.mkdtemp()
|
| - sys.path.append(self.temp_dir)
|
| -
|
| - def tearDown(self):
|
| - # Reset path.
|
| - sys.path[:] = []
|
| - sys.path.extend(self.original_path)
|
| -
|
| - # Reset modules.
|
| - sys.modules.clear()
|
| - sys.modules.update(self.original_modules)
|
| -
|
| - # Remove temporary directory.
|
| - try:
|
| - shutil.rmtree(self.temp_dir)
|
| - except IOError:
|
| - pass
|
| -
|
| - def DoPythonTest(self, file_descriptor):
|
| - """Execute python test based on a FileDescriptor object.
|
| -
|
| - The full test of the Python code generation is to generate a Python source
|
| - code file, import the module and regenerate the FileDescriptor from it.
|
| - If the generated FileDescriptor is the same as the original, it means that
|
| - the generated source code correctly implements the actual FileDescriptor.
|
| - """
|
| - file_name = os.path.join(self.temp_dir,
|
| - '%s.py' % (file_descriptor.package or 'blank',))
|
| - source_file = open(file_name, 'wt')
|
| - try:
|
| - generate_python.format_python_file(file_descriptor, source_file)
|
| - finally:
|
| - source_file.close()
|
| -
|
| - module_to_import = file_descriptor.package or 'blank'
|
| - module = __import__(module_to_import)
|
| -
|
| - if not file_descriptor.package:
|
| - self.assertFalse(hasattr(module, 'package'))
|
| - module.package = '' # Create package name so that comparison will work.
|
| -
|
| - reloaded_descriptor = descriptor.describe_file(module)
|
| -
|
| - # Need to sort both message_types fields because document order is never
|
| - # Ensured.
|
| - # TODO(rafek): Ensure document order.
|
| - if reloaded_descriptor.message_types:
|
| - reloaded_descriptor.message_types = sorted(
|
| - reloaded_descriptor.message_types, key=lambda v: v.name)
|
| -
|
| - if file_descriptor.message_types:
|
| - file_descriptor.message_types = sorted(
|
| - file_descriptor.message_types, key=lambda v: v.name)
|
| -
|
| - self.assertEquals(file_descriptor, reloaded_descriptor)
|
| -
|
| - @util.positional(2)
|
| - def DoMessageTest(self,
|
| - field_descriptors,
|
| - message_types=None,
|
| - enum_types=None):
|
| - """Execute message generation test based on FieldDescriptor objects.
|
| -
|
| - Args:
|
| - field_descriptor: List of FieldDescriptor object to generate and test.
|
| - message_types: List of other MessageDescriptor objects that the new
|
| - Message class depends on.
|
| - enum_types: List of EnumDescriptor objects that the new Message class
|
| - depends on.
|
| - """
|
| - file_descriptor = descriptor.FileDescriptor()
|
| - file_descriptor.package = 'my_package'
|
| -
|
| - message_descriptor = descriptor.MessageDescriptor()
|
| - message_descriptor.name = 'MyMessage'
|
| -
|
| - message_descriptor.fields = list(field_descriptors)
|
| -
|
| - file_descriptor.message_types = message_types or []
|
| - file_descriptor.message_types.append(message_descriptor)
|
| -
|
| - if enum_types:
|
| - file_descriptor.enum_types = list(enum_types)
|
| -
|
| - self.DoPythonTest(file_descriptor)
|
| -
|
| - def testBlankPackage(self):
|
| - self.DoPythonTest(descriptor.FileDescriptor())
|
| -
|
| - def testEmptyPackage(self):
|
| - file_descriptor = descriptor.FileDescriptor()
|
| - file_descriptor.package = 'mypackage'
|
| - self.DoPythonTest(file_descriptor)
|
| -
|
| - def testSingleField(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'integer_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.INT64
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testMessageField_InternalReference(self):
|
| - other_message = descriptor.MessageDescriptor()
|
| - other_message.name = 'OtherMessage'
|
| -
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'message_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.MESSAGE
|
| - field.type_name = 'my_package.OtherMessage'
|
| -
|
| - self.DoMessageTest([field], message_types=[other_message])
|
| -
|
| - def testMessageField_ExternalReference(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'message_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.MESSAGE
|
| - field.type_name = 'protorpc.registry.GetFileSetResponse'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testEnumField_InternalReference(self):
|
| - enum = descriptor.EnumDescriptor()
|
| - enum.name = 'Color'
|
| -
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'color'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.ENUM
|
| - field.type_name = 'my_package.Color'
|
| -
|
| - self.DoMessageTest([field], enum_types=[enum])
|
| -
|
| - def testEnumField_ExternalReference(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'color'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.ENUM
|
| - field.type_name = 'protorpc.descriptor.FieldDescriptor.Label'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testDateTimeField(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'timestamp'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.MESSAGE
|
| - field.type_name = 'protorpc.message_types.DateTimeMessage'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testNonDefaultVariant(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'integer_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.UINT64
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testRequiredField(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'integer_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.REQUIRED
|
| - field.variant = descriptor.FieldDescriptor.Variant.INT64
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testRepeatedField(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'integer_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.REPEATED
|
| - field.variant = descriptor.FieldDescriptor.Variant.INT64
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testIntegerDefaultValue(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'integer_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.INT64
|
| - field.default_value = '10'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testFloatDefaultValue(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'float_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.DOUBLE
|
| - field.default_value = '10.1'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testStringDefaultValue(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'string_field'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.STRING
|
| - field.default_value = u'a nice lovely string\'s "string"'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testEnumDefaultValue(self):
|
| - field = descriptor.FieldDescriptor()
|
| - field.name = 'label'
|
| - field.number = 1
|
| - field.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field.variant = descriptor.FieldDescriptor.Variant.ENUM
|
| - field.type_name = 'protorpc.descriptor.FieldDescriptor.Label'
|
| - field.default_value = '2'
|
| -
|
| - self.DoMessageTest([field])
|
| -
|
| - def testMultiFields(self):
|
| - field1 = descriptor.FieldDescriptor()
|
| - field1.name = 'integer_field'
|
| - field1.number = 1
|
| - field1.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field1.variant = descriptor.FieldDescriptor.Variant.INT64
|
| -
|
| - field2 = descriptor.FieldDescriptor()
|
| - field2.name = 'string_field'
|
| - field2.number = 2
|
| - field2.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field2.variant = descriptor.FieldDescriptor.Variant.STRING
|
| -
|
| - field3 = descriptor.FieldDescriptor()
|
| - field3.name = 'unsigned_integer_field'
|
| - field3.number = 3
|
| - field3.label = descriptor.FieldDescriptor.Label.OPTIONAL
|
| - field3.variant = descriptor.FieldDescriptor.Variant.UINT64
|
| -
|
| - self.DoMessageTest([field1, field2, field3])
|
| -
|
| - def testNestedMessage(self):
|
| - message = descriptor.MessageDescriptor()
|
| - message.name = 'OuterMessage'
|
| -
|
| - inner_message = descriptor.MessageDescriptor()
|
| - inner_message.name = 'InnerMessage'
|
| -
|
| - inner_inner_message = descriptor.MessageDescriptor()
|
| - inner_inner_message.name = 'InnerInnerMessage'
|
| -
|
| - inner_message.message_types = [inner_inner_message]
|
| -
|
| - message.message_types = [inner_message]
|
| -
|
| - file_descriptor = descriptor.FileDescriptor()
|
| - file_descriptor.message_types = [message]
|
| -
|
| - self.DoPythonTest(file_descriptor)
|
| -
|
| - def testNestedEnum(self):
|
| - message = descriptor.MessageDescriptor()
|
| - message.name = 'OuterMessage'
|
| -
|
| - inner_enum = descriptor.EnumDescriptor()
|
| - inner_enum.name = 'InnerEnum'
|
| -
|
| - message.enum_types = [inner_enum]
|
| -
|
| - file_descriptor = descriptor.FileDescriptor()
|
| - file_descriptor.message_types = [message]
|
| -
|
| - self.DoPythonTest(file_descriptor)
|
| -
|
| - def testService(self):
|
| - service = descriptor.ServiceDescriptor()
|
| - service.name = 'TheService'
|
| -
|
| - method1 = descriptor.MethodDescriptor()
|
| - method1.name = 'method1'
|
| - method1.request_type = 'protorpc.descriptor.FileDescriptor'
|
| - method1.response_type = 'protorpc.descriptor.MethodDescriptor'
|
| -
|
| - service.methods = [method1]
|
| -
|
| - file_descriptor = descriptor.FileDescriptor()
|
| - file_descriptor.service_types = [service]
|
| -
|
| - self.DoPythonTest(file_descriptor)
|
| -
|
| - # Test to make sure that implementation methods raise an exception.
|
| - import blank
|
| - service_instance = blank.TheService()
|
| - self.assertRaisesWithRegexpMatch(NotImplementedError,
|
| - 'Method method1 is not implemented',
|
| - service_instance.method1,
|
| - descriptor.FileDescriptor())
|
| -
|
| -
|
| -def main():
|
| - unittest.main()
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - main()
|
|
|