aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java')
-rw-r--r--third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java276
1 files changed, 0 insertions, 276 deletions
diff --git a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java
deleted file mode 100644
index 6157e58966..0000000000
--- a/third_party/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java
+++ /dev/null
@@ -1,276 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-package com.google.protobuf;
-
-import protobuf_unittest.NonNestedExtension;
-import protobuf_unittest.NonNestedExtensionLite;
-import java.lang.reflect.Method;
-import java.net.URLClassLoader;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Tests for {@link ExtensionRegistryFactory} and the {@link ExtensionRegistry} instances it
- * creates.
- *
- * <p>This test simulates the runtime behaviour of the ExtensionRegistryFactory by delegating test
- * definitions to two inner classes {@link InnerTest} and {@link InnerLiteTest}, the latter of
- * which is executed using a custom ClassLoader, simulating the ProtoLite environment.
- *
- * <p>The test mechanism employed here is based on the pattern in
- * {@code com.google.common.util.concurrent.AbstractFutureFallbackAtomicHelperTest}
- */
-public class ExtensionRegistryFactoryTest extends TestCase {
-
- // A classloader which blacklists some non-Lite classes.
- private static final ClassLoader LITE_CLASS_LOADER = getLiteOnlyClassLoader();
-
- /**
- * Defines the set of test methods which will be run.
- */
- static interface RegistryTests {
- void testCreate();
- void testEmpty();
- void testIsFullRegistry();
- void testAdd();
- void testAdd_immutable();
- }
-
- /**
- * Test implementations for the non-Lite usage of ExtensionRegistryFactory.
- */
- public static class InnerTest implements RegistryTests {
-
- @Override
- public void testCreate() {
- ExtensionRegistryLite registry = ExtensionRegistryFactory.create();
-
- assertEquals(registry.getClass(), ExtensionRegistry.class);
- }
-
- @Override
- public void testEmpty() {
- ExtensionRegistryLite emptyRegistry = ExtensionRegistryFactory.createEmpty();
-
- assertEquals(emptyRegistry.getClass(), ExtensionRegistry.class);
- assertEquals(emptyRegistry, ExtensionRegistry.EMPTY_REGISTRY);
- }
-
- @Override
- public void testIsFullRegistry() {
- ExtensionRegistryLite registry = ExtensionRegistryFactory.create();
- assertTrue(ExtensionRegistryFactory.isFullRegistry(registry));
- }
-
- @Override
- public void testAdd() {
- ExtensionRegistryLite registry1 = ExtensionRegistryLite.newInstance();
- NonNestedExtensionLite.registerAllExtensions(registry1);
- registry1.add(NonNestedExtensionLite.nonNestedExtensionLite);
-
- ExtensionRegistryLite registry2 = ExtensionRegistryLite.newInstance();
- NonNestedExtension.registerAllExtensions((ExtensionRegistry) registry2);
- registry2.add(NonNestedExtension.nonNestedExtension);
-
- ExtensionRegistry fullRegistry1 = (ExtensionRegistry) registry1;
- ExtensionRegistry fullRegistry2 = (ExtensionRegistry) registry2;
-
- assertTrue("Test is using a non-lite extension",
- GeneratedMessageLite.GeneratedExtension.class.isAssignableFrom(
- NonNestedExtensionLite.nonNestedExtensionLite.getClass()));
- assertNull("Extension is not registered in masqueraded full registry",
- fullRegistry1.findImmutableExtensionByName("protobuf_unittest.nonNestedExtension"));
- GeneratedMessageLite.GeneratedExtension<NonNestedExtensionLite.MessageLiteToBeExtended, ?>
- extension = registry1.findLiteExtensionByNumber(
- NonNestedExtensionLite.MessageLiteToBeExtended.getDefaultInstance(), 1);
- assertNotNull("Extension registered in lite registry", extension);
-
- assertTrue("Test is using a non-lite extension",
- GeneratedMessage.GeneratedExtension.class.isAssignableFrom(
- NonNestedExtension.nonNestedExtension.getClass()));
- assertNotNull("Extension is registered in masqueraded full registry",
- fullRegistry2.findImmutableExtensionByName("protobuf_unittest.nonNestedExtension"));
- }
-
- @Override
- public void testAdd_immutable() {
- ExtensionRegistryLite registry1 = ExtensionRegistryLite.newInstance().getUnmodifiable();
- try {
- NonNestedExtensionLite.registerAllExtensions(registry1);
- fail();
- } catch (UnsupportedOperationException expected) {}
- try {
- registry1.add(NonNestedExtensionLite.nonNestedExtensionLite);
- fail();
- } catch (UnsupportedOperationException expected) {}
-
- ExtensionRegistryLite registry2 = ExtensionRegistryLite.newInstance().getUnmodifiable();
- try {
- NonNestedExtension.registerAllExtensions((ExtensionRegistry) registry2);
- fail();
- } catch (IllegalArgumentException expected) {}
- try {
- registry2.add(NonNestedExtension.nonNestedExtension);
- fail();
- } catch (IllegalArgumentException expected) {}
- }
- }
-
- /**
- * Test implementations for the Lite usage of ExtensionRegistryFactory.
- */
- public static final class InnerLiteTest implements RegistryTests {
-
- @Override
- public void testCreate() {
- ExtensionRegistryLite registry = ExtensionRegistryFactory.create();
-
- assertEquals(registry.getClass(), ExtensionRegistryLite.class);
- }
-
- @Override
- public void testEmpty() {
- ExtensionRegistryLite emptyRegistry = ExtensionRegistryFactory.createEmpty();
-
- assertEquals(emptyRegistry.getClass(), ExtensionRegistryLite.class);
- assertEquals(emptyRegistry, ExtensionRegistryLite.EMPTY_REGISTRY_LITE);
- }
-
- @Override
- public void testIsFullRegistry() {
- ExtensionRegistryLite registry = ExtensionRegistryFactory.create();
- assertFalse(ExtensionRegistryFactory.isFullRegistry(registry));
- }
-
- @Override
- public void testAdd() {
- ExtensionRegistryLite registry = ExtensionRegistryLite.newInstance();
- NonNestedExtensionLite.registerAllExtensions(registry);
- GeneratedMessageLite.GeneratedExtension<NonNestedExtensionLite.MessageLiteToBeExtended, ?>
- extension = registry.findLiteExtensionByNumber(
- NonNestedExtensionLite.MessageLiteToBeExtended.getDefaultInstance(), 1);
- assertNotNull("Extension is registered in Lite registry", extension);
- }
-
- @Override
- public void testAdd_immutable() {
- ExtensionRegistryLite registry = ExtensionRegistryLite.newInstance().getUnmodifiable();
- try {
- NonNestedExtensionLite.registerAllExtensions(registry);
- fail();
- } catch (UnsupportedOperationException expected) {}
- }
- }
-
- /**
- * Defines a suite of tests which the JUnit3 runner retrieves by reflection.
- */
- public static Test suite() {
- TestSuite suite = new TestSuite();
- for (Method method : RegistryTests.class.getMethods()) {
- suite.addTest(TestSuite.createTest(ExtensionRegistryFactoryTest.class, method.getName()));
- }
- return suite;
- }
-
- /**
- * Sequentially runs first the Lite and then the non-Lite test variant via classloader
- * manipulation.
- */
- @Override
- public void runTest() throws Exception {
- ClassLoader storedClassLoader = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(LITE_CLASS_LOADER);
- try {
- runTestMethod(LITE_CLASS_LOADER, InnerLiteTest.class);
- } finally {
- Thread.currentThread().setContextClassLoader(storedClassLoader);
- }
- try {
- runTestMethod(storedClassLoader, InnerTest.class);
- } finally {
- Thread.currentThread().setContextClassLoader(storedClassLoader);
- }
- }
-
- private void runTestMethod(ClassLoader classLoader, Class<? extends RegistryTests> testClass)
- throws Exception {
- classLoader.loadClass(ExtensionRegistryFactory.class.getName());
- Class<?> test = classLoader.loadClass(testClass.getName());
- String testName = getName();
- test.getMethod(testName).invoke(test.newInstance());
- }
-
- /**
- * Constructs a custom ClassLoader blacklisting the classes which are inspected in the SUT
- * to determine the Lite/non-Lite runtime.
- */
- private static ClassLoader getLiteOnlyClassLoader() {
- ClassLoader testClassLoader = ExtensionRegistryFactoryTest.class.getClassLoader();
- final Set<String> classNamesNotInLite =
- Collections.unmodifiableSet(
- new HashSet<String>(
- Arrays.asList(
- ExtensionRegistryFactory.FULL_REGISTRY_CLASS_NAME,
- ExtensionRegistry.EXTENSION_CLASS_NAME)));
-
- // Construct a URLClassLoader delegating to the system ClassLoader, and looking up classes
- // in jar files based on the URLs already configured for this test's UrlClassLoader.
- // Certain classes throw a ClassNotFoundException by design.
- return new URLClassLoader(((URLClassLoader) testClassLoader).getURLs(),
- ClassLoader.getSystemClassLoader()) {
- @Override
- public Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
- if (classNamesNotInLite.contains(name)) {
- throw new ClassNotFoundException("Class deliberately blacklisted by test.");
- }
- Class<?> loadedClass = null;
- try {
- loadedClass = findLoadedClass(name);
- if (loadedClass == null) {
- loadedClass = findClass(name);
- if (resolve) {
- resolveClass(loadedClass);
- }
- }
- } catch (ClassNotFoundException e) {
- loadedClass = super.loadClass(name, resolve);
- }
- return loadedClass;
- }
- };
- }
-}