Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 8B0BD200C16 for ; Thu, 26 Jan 2017 01:28:13 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 894E0160B60; Thu, 26 Jan 2017 00:28:13 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 10247160B5D for ; Thu, 26 Jan 2017 01:28:11 +0100 (CET) Received: (qmail 5603 invoked by uid 500); 26 Jan 2017 00:28:11 -0000 Mailing-List: contact commits-help@geode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.apache.org Delivered-To: mailing list commits@geode.apache.org Received: (qmail 5520 invoked by uid 99); 26 Jan 2017 00:28:10 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Jan 2017 00:28:10 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C28D2DFF59; Thu, 26 Jan 2017 00:28:10 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: klund@apache.org To: commits@geode.apache.org Date: Thu, 26 Jan 2017 00:28:12 -0000 Message-Id: In-Reply-To: <3f0f3210a59d470f9427ffa259daec3d@git.apache.org> References: <3f0f3210a59d470f9427ffa259daec3d@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [03/10] geode git commit: GEODE-1930: apply build and dunit changes to support JMX tests archived-at: Thu, 26 Jan 2017 00:28:13 -0000 GEODE-1930: apply build and dunit changes to support JMX tests Project: http://git-wip-us.apache.org/repos/asf/geode/repo Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/e3eb9271 Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/e3eb9271 Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/e3eb9271 Branch: refs/heads/feature/GEODE-1930-2 Commit: e3eb92712ae4ad98d27c1a62698dc0f710b92d01 Parents: 44cd72d Author: Kirk Lund Authored: Tue Jan 24 10:42:04 2017 -0800 Committer: Kirk Lund Committed: Wed Jan 25 15:28:06 2017 -0800 ---------------------------------------------------------------------- geode-core/build.gradle | 1 + .../org/apache/geode/management/JVMMetrics.java | 3 +- .../org/apache/geode/management/OSMetrics.java | 3 +- .../internal/SystemManagementService.java | 3 +- .../geode/pdx/PdxSerializableDUnitTest.java | 12 -- .../geode/test/dunit/AsyncInvocation.java | 56 +++++++- .../cache/internal/JUnit4CacheTestCase.java | 5 + .../internal/JUnit4DistributedTestCase.java | 4 +- .../dunit/rules/DistributedDisconnectRule.java | 4 +- .../DistributedRestoreSystemProperties.java | 4 +- .../DistributedUseJacksonForJsonPathRule.java | 50 ++++++++ .../geode/test/dunit/rules/RemoteInvoker.java | 22 +++- .../test/dunit/standalone/DUnitLauncher.java | 56 ++++---- .../codeAnalysis/sanctionedSerializables.txt | 2 + geode-junit/build.gradle | 1 + .../junit/rules/UseJacksonForJsonPathRule.java | 128 +++++++++++++++++++ .../SerializableExternalResource.java | 22 ++++ .../serializable/SerializableStatement.java | 25 ++++ gradle/dependency-versions.properties | 3 +- 19 files changed, 343 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/build.gradle ---------------------------------------------------------------------- diff --git a/geode-core/build.gradle b/geode-core/build.gradle index ac63b39..3c2a2ab 100755 --- a/geode-core/build.gradle +++ b/geode-core/build.gradle @@ -118,6 +118,7 @@ dependencies { // Test Dependencies // External + testCompile 'com.jayway.jsonpath:json-path-assert:' + project.'json-path-assert.version' testCompile 'org.apache.bcel:bcel:' + project.'bcel.version' testRuntime 'org.apache.derby:derby:' + project.'derby.version' testCompile 'org.mockito:mockito-core:' + project.'mockito-core.version' http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java b/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java index 127592a..388c8f6 100644 --- a/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java +++ b/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java @@ -15,6 +15,7 @@ package org.apache.geode.management; import java.beans.ConstructorProperties; +import java.io.Serializable; import org.apache.geode.cache.Region; @@ -25,7 +26,7 @@ import org.apache.geode.cache.Region; * @since GemFire 7.0 * */ -public class JVMMetrics { +public class JVMMetrics implements Serializable { /** * Number of GCs performed http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java b/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java index d90c8be..c9de92f 100644 --- a/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java +++ b/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java @@ -15,6 +15,7 @@ package org.apache.geode.management; import java.beans.ConstructorProperties; +import java.io.Serializable; /** * Composite data type used to distribute metrics for the operating system hosting a member of the @@ -23,7 +24,7 @@ import java.beans.ConstructorProperties; * @since GemFire 7.0 * */ -public class OSMetrics { +public class OSMetrics implements Serializable { /** * Maximum number file descriptor which can be opened http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java index cb75591..fe0f59f 100755 --- a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java @@ -350,7 +350,8 @@ public final class SystemManagementService extends BaseManagementService { } - public T getMBeanProxy(ObjectName objectName, Class interfaceClass) { + public T getMBeanProxy(ObjectName objectName, Class interfaceClass) { // TODO: this is too + // generic if (!isStartedAndOpen()) { return null; } http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java b/geode-core/src/test/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java index daa2eca..4e8a271 100644 --- a/geode-core/src/test/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/pdx/PdxSerializableDUnitTest.java @@ -37,10 +37,8 @@ import org.apache.geode.distributed.internal.DistributionMessageObserver; import org.apache.geode.internal.cache.DistributedCacheOperation; import org.apache.geode.internal.cache.GemFireCacheImpl; import org.apache.geode.internal.cache.LocalRegion; -import org.apache.geode.pdx.internal.EnumId; import org.apache.geode.pdx.internal.EnumInfo; import org.apache.geode.pdx.internal.PeerTypeRegistration; -import org.apache.geode.pdx.internal.TypeRegistry; import org.apache.geode.test.dunit.AsyncInvocation; import org.apache.geode.test.dunit.DUnitBlackboard; import org.apache.geode.test.dunit.Host; @@ -60,16 +58,6 @@ import java.util.concurrent.TimeoutException; @Category({DistributedTest.class, SerializationTest.class}) public class PdxSerializableDUnitTest extends JUnit4CacheTestCase { - public Cache getCache(Properties properties) { - getSystem(properties); - return getCache(); - } - - - public PdxSerializableDUnitTest() { - super(); - } - @Test public void testSimplePut() { Host host = Host.getHost(0); http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/AsyncInvocation.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/AsyncInvocation.java b/geode-core/src/test/java/org/apache/geode/test/dunit/AsyncInvocation.java index 460b562..057454d 100644 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/AsyncInvocation.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/AsyncInvocation.java @@ -316,6 +316,58 @@ public class AsyncInvocation implements Future { } /** + * Waits if necessary for at most the given time for the computation to complete. + * + * @param timeout the maximum time to wait + * @param unit the time unit of the timeout argument + * + * @return this {@code AsyncInvocation} + * + * @throws AssertionError wrapping any {@code Exception} thrown by this {@code AsyncInvocation}. + * + * @throws CancellationException if the computation was cancelled + * + * @throws ExecutionException if the computation threw an exception + * + * @throws InterruptedException if the current thread is interrupted. + * + * @throws TimeoutException if the wait timed out + */ + public AsyncInvocation await(final long timeout, final TimeUnit unit) + throws ExecutionException, InterruptedException, TimeoutException { + long millis = unit.toMillis(timeout); + join(millis); + timeoutIfAlive(millis); + checkException(); + return this; + } + + /** + * Waits if necessary for at most the given time for the computation to complete. + * + * @return this {@code AsyncInvocation} + * + * @throws AssertionError wrapping any {@code Exception} thrown by this {@code AsyncInvocation}. + * + * @throws AssertionError wrapping a {@code TimeoutException} if this {@code AsyncInvocation} + * fails to complete within the default timeout of 60 seconds as defined by + * {@link #DEFAULT_JOIN_MILLIS}. + * + * @throws CancellationException if the computation was cancelled + * + * @throws ExecutionException if the computation threw an exception + * + * @throws InterruptedException if the current thread is interrupted. + */ + public AsyncInvocation await() throws ExecutionException, InterruptedException { + try { + return await(DEFAULT_JOIN_MILLIS, TimeUnit.MILLISECONDS); + } catch (TimeoutException timeoutException) { + throw new AssertionError(timeoutException); + } + } + + /** * Waits if necessary for the work to complete, and then returns the result of this * {@code AsyncInvocation}. * @@ -353,10 +405,6 @@ public class AsyncInvocation implements Future { * * @throws AssertionError wrapping any {@code Exception} thrown by this {@code AsyncInvocation}. * - * @throws AssertionError wrapping a {@code TimeoutException} if this {@code AsyncInvocation} - * fails to complete within the default timeout of 60 seconds as defined by - * {@link #DEFAULT_JOIN_MILLIS}. - * * @throws CancellationException if the computation was cancelled * * @throws ExecutionException if the computation threw an exception http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java b/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java index 037d73c..a511995 100644 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/cache/internal/JUnit4CacheTestCase.java @@ -245,6 +245,11 @@ public abstract class JUnit4CacheTestCase extends JUnit4DistributedTestCase return getCache(false, factory); } + public final Cache getCache(final Properties properties) { + getSystem(properties); + return getCache(); + } + public final Cache getCache(final boolean client) { return getCache(client, null); } http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java index c54b6ac..19949c2 100644 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java @@ -113,7 +113,7 @@ public abstract class JUnit4DistributedTestCase implements DistributedTestFixtur } @Rule - public SerializableTestName testName = new SerializableTestName(); + public SerializableTestName testNameForDistributedTestCase = new SerializableTestName(); private static DUnitBlackboard blackboard; @@ -139,7 +139,7 @@ public abstract class JUnit4DistributedTestCase implements DistributedTestFixtur if (this.distributedTestFixture != this) { return this.distributedTestFixture.getName(); } - return this.testName.getMethodName(); + return this.testNameForDistributedTestCase.getMethodName(); } public final Class getTestClass() { http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedDisconnectRule.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedDisconnectRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedDisconnectRule.java index ddf37c5..8984884 100755 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedDisconnectRule.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedDisconnectRule.java @@ -43,14 +43,14 @@ public class DistributedDisconnectRule extends DistributedExternalResource { @Override protected void before() throws Throwable { if (this.disconnectBefore) { - invoker().invokeEverywhere(serializableRunnable()); + invoker().invokeInEveryVM(serializableRunnable()); } } @Override protected void after() { if (this.disconnectAfter) { - invoker().invokeEverywhere(serializableRunnable()); + invoker().invokeInEveryVM(serializableRunnable()); } } http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java index 6b9102e..7e6198e 100755 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedRestoreSystemProperties.java @@ -46,7 +46,7 @@ public class DistributedRestoreSystemProperties extends RestoreSystemProperties @Override public void before() throws Throwable { super.before(); - this.invoker.remoteInvokeInEveryVMAndLocator(new SerializableRunnable() { + this.invoker.invokeInEveryVM(new SerializableRunnable() { @Override public void run() { originalProperties = getProperties(); @@ -58,7 +58,7 @@ public class DistributedRestoreSystemProperties extends RestoreSystemProperties @Override public void after() { super.after(); - this.invoker.remoteInvokeInEveryVMAndLocator(new SerializableRunnable() { + this.invoker.invokeInEveryVM(new SerializableRunnable() { @Override public void run() { setProperties(originalProperties); http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java new file mode 100644 index 0000000..6b646af --- /dev/null +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.test.dunit.rules; + +import org.apache.geode.test.junit.rules.UseJacksonForJsonPathRule; + +public class DistributedUseJacksonForJsonPathRule extends UseJacksonForJsonPathRule { + + private static UseJacksonForJsonPathRule instance = new UseJacksonForJsonPathRule(); + + private final RemoteInvoker invoker; + + public DistributedUseJacksonForJsonPathRule() { + this(new RemoteInvoker()); + } + + public DistributedUseJacksonForJsonPathRule(final RemoteInvoker invoker) { + this.invoker = invoker; + } + + @Override + public void before() { + this.invoker.invokeInEveryVM(DistributedUseJacksonForJsonPathRule::invokeBefore); + } + + @Override + public void after() { + this.invoker.invokeInEveryVM(DistributedUseJacksonForJsonPathRule::invokeAfter); + } + + private static void invokeBefore() { + instance.before(); + } + + private static void invokeAfter() { + instance.after(); + } +} http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/rules/RemoteInvoker.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/RemoteInvoker.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/RemoteInvoker.java index 6398e45..e696809 100755 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/RemoteInvoker.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/RemoteInvoker.java @@ -18,7 +18,8 @@ import static org.apache.geode.test.dunit.Invoke.*; import java.io.Serializable; -import org.apache.geode.test.dunit.SerializableRunnable; +import org.apache.geode.test.dunit.Invoke; +import org.apache.geode.test.dunit.SerializableRunnableIF; /** * Provides remote invocation support to a {@code TestRule}. These methods will invoke a @@ -28,18 +29,27 @@ class RemoteInvoker implements Serializable { private static final long serialVersionUID = -1759722991299584649L; - public void invokeEverywhere(final SerializableRunnable runnable) { + // controller VM + // dunit VMs + // locator VM + + /** + * Invokes in these VMs: controller VM and dunit VMs but not the dunit locator VM + */ + public void invokeInEveryVM(final SerializableRunnableIF runnable) { try { runnable.run(); } catch (Exception e) { throw new RuntimeException(e); } - invokeInEveryVM(runnable); - invokeInLocator(runnable); + Invoke.invokeInEveryVM(runnable); } - public void remoteInvokeInEveryVMAndLocator(final SerializableRunnable runnable) { - invokeInEveryVM(runnable); + /** + * Invokes in all VMs: controller VM, dunit VMs, and the dunit locator VM + */ + public void invokeInEveryVMAndLocator(final SerializableRunnableIF runnable) { + Invoke.invokeInEveryVM(runnable); invokeInLocator(runnable); } } http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java index abbfea9..92a7c46 100644 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java @@ -14,33 +14,8 @@ */ package org.apache.geode.test.dunit.standalone; -import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_AUTO_RECONNECT; -import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION; -import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER; -import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS; -import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL; -import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT; -import static org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION; -import static org.apache.geode.distributed.internal.DistributionConfig.GEMFIRE_PREFIX; - -import org.apache.geode.distributed.Locator; -import org.apache.geode.distributed.internal.DistributionConfig; -import org.apache.geode.distributed.internal.InternalLocator; -import org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave; -import org.apache.geode.internal.AvailablePortHelper; -import org.apache.geode.internal.logging.LogService; -import org.apache.geode.test.dunit.DUnitEnv; -import org.apache.geode.test.dunit.Host; -import org.apache.geode.test.dunit.SerializableCallable; -import org.apache.geode.test.dunit.VM; -import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.LoggerContext; -import org.apache.logging.log4j.core.appender.FileAppender; -import org.apache.logging.log4j.core.config.LoggerConfig; -import org.apache.logging.log4j.core.layout.PatternLayout; -import org.junit.Assert; +import static org.apache.geode.distributed.ConfigurationProperties.*; +import static org.apache.geode.distributed.internal.DistributionConfig.*; import java.io.BufferedReader; import java.io.File; @@ -63,9 +38,29 @@ import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; import java.util.List; import java.util.Properties; + import batterytest.greplogs.ExpectedStrings; import batterytest.greplogs.LogConsumer; import hydra.MethExecutorResult; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.FileAppender; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.layout.PatternLayout; +import org.junit.Assert; + +import org.apache.geode.distributed.Locator; +import org.apache.geode.distributed.internal.DistributionConfig; +import org.apache.geode.distributed.internal.InternalLocator; +import org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave; +import org.apache.geode.internal.AvailablePortHelper; +import org.apache.geode.internal.logging.LogService; +import org.apache.geode.test.dunit.DUnitEnv; +import org.apache.geode.test.dunit.Host; +import org.apache.geode.test.dunit.SerializableCallable; +import org.apache.geode.test.dunit.VM; +import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase; /** * A class to build a fake test configuration and launch some DUnit VMS. @@ -98,6 +93,9 @@ public class DUnitLauncher { private static final int LOCATOR_VM_NUM = -2; static final long STARTUP_TIMEOUT = 120 * 1000; + private static final String STARTUP_TIMEOUT_MESSAGE = + "VMs did not start up within " + (STARTUP_TIMEOUT / 1000) + " seconds"; + private static final String SUSPECT_FILENAME = "dunit_suspect.log"; private static File DUNIT_SUSPECT_FILE; @@ -219,7 +217,7 @@ public class DUnitLauncher { // wait for the VM to start up if (!processManager.waitForVMs(STARTUP_TIMEOUT)) { - throw new RuntimeException("VMs did not start up with 30 seconds"); + throw new RuntimeException("VMs did not start up within 30 seconds"); } locatorPort = startLocator(registry); @@ -233,7 +231,7 @@ public class DUnitLauncher { // wait for the VMS to start up if (!processManager.waitForVMs(STARTUP_TIMEOUT)) { - throw new RuntimeException("VMs did not start up with 30 seconds"); + throw new RuntimeException("VMs did not start up within 30 seconds"); } // populate the Host class with our stubs. The tests use this host class http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt ---------------------------------------------------------------------- diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt index 2ab6173..2686661 100755 --- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt +++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt @@ -482,7 +482,9 @@ org/apache/geode/internal/util/concurrent/StoppableReentrantReadWriteLock,true,- org/apache/geode/lang/AttachAPINotFoundException,true,-5953162090462085551 org/apache/geode/management/AlreadyRunningException,true,8947734854770335071 org/apache/geode/management/DependenciesNotFoundException,true,9082304929238159814 +org/apache/geode/management/JVMMetrics,false,committedMemory:long,gcCount:long,gcTimeMillis:long,initMemory:long,maxMemory:long,totalThreads:int,usedMemory:long org/apache/geode/management/ManagementException,true,879398950879472121 +org/apache/geode/management/OSMetrics,false,arch:java/lang/String,availableProcessors:int,committedVirtualMemorySize:long,freePhysicalMemorySize:long,freeSwapSpaceSize:long,maxFileDescriptorCount:long,name:java/lang/String,openFileDescriptorCount:long,processCpuTime:long,systemLoadAverage:double,totalPhysicalMemorySize:long,totalSwapSpaceSize:long,version:java/lang/String org/apache/geode/management/cli/CommandProcessingException,true,-1398779521639575884,errorData:java/lang/Object,errorType:int org/apache/geode/management/cli/CommandServiceException,true,7316102209844678329 org/apache/geode/management/cli/Result$Status,false,code:int http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-junit/build.gradle ---------------------------------------------------------------------- diff --git a/geode-junit/build.gradle b/geode-junit/build.gradle index f7e5e46..e47095f 100755 --- a/geode-junit/build.gradle +++ b/geode-junit/build.gradle @@ -16,6 +16,7 @@ */ dependencies { + compile 'com.jayway.jsonpath:json-path:' + project.'json-path.version' testCompile 'commons-lang:commons-lang:' + project.'commons-lang.version' testCompile 'com.google.guava:guava:' + project.'guava.version' testCompile 'org.assertj:assertj-core:' + project.'assertj-core.version' http://git-wip-us.apache.org/repos/asf/geode/blob/e3eb9271/geode-junit/src/main/java/org/apache/geode/test/junit/rules/UseJacksonForJsonPathRule.java ---------------------------------------------------------------------- diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/UseJacksonForJsonPathRule.java b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/UseJacksonForJsonPathRule.java new file mode 100644 index 0000000..c7c326a --- /dev/null +++ b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/UseJacksonForJsonPathRule.java @@ -0,0 +1,128 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.test.junit.rules; + +import java.util.EnumSet; +import java.util.Set; + +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.Configuration.Defaults; +import com.jayway.jsonpath.Option; +import com.jayway.jsonpath.spi.json.JacksonJsonProvider; +import com.jayway.jsonpath.spi.json.JsonProvider; +import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; +import com.jayway.jsonpath.spi.mapper.MappingProvider; + +import org.apache.geode.test.junit.rules.serializable.SerializableExternalResource; + +/** + * JUnit Rule that configures json-path to use the {@code JacksonJsonProvider} + * + *

+ * UseJacksonForJsonPathRule can be used in tests that need to use json-path-assert: + * + *

+ * {@literal @}ClassRule
+ * public static UseJacksonForJsonPathRule useJacksonForJsonPathRule = new UseJacksonForJsonPathRule();
+ *
+ * {@literal @}Test
+ * public void hasAssertionsUsingJsonPathMatchers() {
+ *   ...
+ *   assertThat(json, isJson());
+ *   assertThat(json, hasJsonPath("$.result"));
+ * }
+ * 
+ */ +@SuppressWarnings({"serial", "unused"}) +public class UseJacksonForJsonPathRule extends SerializableExternalResource { + + private boolean hadDefaults; + private JsonProvider jsonProvider; + private MappingProvider mappingProvider; + private Set