From 3f535e90cf0e9da78bc428e959dbad201155cbb9 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 6 Nov 2018 12:04:46 -0800 Subject: [PATCH] Guard against (generated) constructor and method introductions when the Jacoco Java Agent instruments the Java byte code at (test) runtime. --- ...ringSessionGemFireConfigurerUnitTests.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/support/SpringSessionGemFireConfigurerUnitTests.java b/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/support/SpringSessionGemFireConfigurerUnitTests.java index e7ef8aa..9e7529f 100644 --- a/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/support/SpringSessionGemFireConfigurerUnitTests.java +++ b/spring-session-data-geode/src/test/java/org/springframework/session/data/gemfire/config/annotation/web/http/support/SpringSessionGemFireConfigurerUnitTests.java @@ -17,6 +17,7 @@ package org.springframework.session.data.gemfire.config.annotation.web.http.support; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.data.gemfire.util.ArrayUtils.nullSafeArray; import java.lang.reflect.Method; import java.util.Arrays; @@ -90,7 +91,7 @@ public class SpringSessionGemFireConfigurerUnitTests { return new SpringSessionGemFireConfigurer() { }; } - private SpringSessionGemFireConfigurer newTestConfigurerWithOverrides() { + private SpringSessionGemFireConfigurer newTestConfigurerWithSelectOverrides() { return new SpringSessionGemFireConfigurer() { @@ -116,6 +117,19 @@ public class SpringSessionGemFireConfigurerUnitTests { }; } + private Method[] filterDeclaredMethods(Method[] methods) { + + List targetMethodNames = + Arrays.stream(nullSafeArray(SpringSessionGemFireConfigurer.class.getMethods(), Method.class)) + .map(Method::getName) + .collect(Collectors.toList()); + + return Arrays.stream(nullSafeArray(methods, Method.class)) + .filter(method -> targetMethodNames.contains(method.getName())) + .collect(Collectors.toList()) + .toArray(new Method[0]); + } + @Test public void classGetDeclaredMethodsOnCustomConfigurerObjectHasAllMethods() { @@ -131,7 +145,7 @@ public class SpringSessionGemFireConfigurerUnitTests { assertThat(testConfigurer.getSessionExpirationPolicyBeanName()).isEqualTo("MockExpirationPolicy"); assertThat(testConfigurer.getSessionSerializerBeanName()).isEqualTo("MockSerializer"); - Method[] declaredMethods = testConfigurer.getClass().getDeclaredMethods(); + Method[] declaredMethods = filterDeclaredMethods(testConfigurer.getClass().getDeclaredMethods()); List declaredMethodNames = Arrays.stream(declaredMethods).map(Method::getName).sorted().collect(Collectors.toList()); @@ -168,7 +182,7 @@ public class SpringSessionGemFireConfigurerUnitTests { assertThat(testConfigurer.getSessionSerializerBeanName()) .isEqualTo(GemFireHttpSessionConfiguration.DEFAULT_SESSION_SERIALIZER_BEAN_NAME); - Method[] declaredMethods = testConfigurer.getClass().getDeclaredMethods(); + Method[] declaredMethods = filterDeclaredMethods(testConfigurer.getClass().getDeclaredMethods()); assertThat(declaredMethods).isNotNull(); assertThat(declaredMethods).isEmpty(); @@ -177,7 +191,7 @@ public class SpringSessionGemFireConfigurerUnitTests { @Test public void classGetDeclaredMethodsOnCustomConfigurerObjectOnlyHasOverriddenMethods() { - SpringSessionGemFireConfigurer testConfigurer = newTestConfigurerWithOverrides(); + SpringSessionGemFireConfigurer testConfigurer = newTestConfigurerWithSelectOverrides(); assertThat(testConfigurer).isNotNull(); assertThat(testConfigurer.getClientRegionShortcut()).isEqualTo(ClientRegionShortcut.CACHING_PROXY); @@ -190,7 +204,7 @@ public class SpringSessionGemFireConfigurerUnitTests { assertThat(testConfigurer.getSessionSerializerBeanName()) .isEqualTo(GemFireHttpSessionConfiguration.DEFAULT_SESSION_SERIALIZER_BEAN_NAME); - Method[] declaredMethods = testConfigurer.getClass().getDeclaredMethods(); + Method[] declaredMethods = filterDeclaredMethods(testConfigurer.getClass().getDeclaredMethods()); List declaredMethodNames = Arrays.stream(declaredMethods).map(Method::getName).sorted().collect(Collectors.toList());