[
https://issues.apache.org/jira/browse/GEODE-8040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirk Lund updated GEODE-8040:
-----------------------------
Description:
BootstrappingFunctionIntegrationTest unintentionally creates a full Cache
stack. I have renamed and moved BootstrappingFunctionTest from src/test to
src/integrationTest because it creates a full Cache/DistributedSystem and
leaves the SocketCreatorFactory in an initialized state which causes other unit
tests such as SocketCreatorFactoryJUnitTest to fail:
{noformat}
org.apache.geode.internal.net.SocketCreatorFactoryJUnitTest >
testNewSSLConfigSSLComponentLocator FAILED
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at
org.apache.geode.internal.net.SocketCreatorFactoryJUnitTest.testNewSSLConfigSSLComponentLocator(SocketCreatorFactoryJUnitTest.java:106)
{noformat}
The cause is improper syntax in the test for partial mocking a Spy. This
when/thenReturn:
{noformat}
when(bootstrappingFunction.verifyCacheExists()).thenReturn(mockCache);
{noformat}
...first invokes the actual verifyCacheExists() method which creates a real
Cache and then returns mockCache. This should instead be:
{noformat}
doReturn(mockCache).when(bootstrappingFunction).verifyCacheExists();
{noformat}
Unfortunately, the class BootstrappingFunction requires additional changes to
make it unit testable. The next test failure after fixing the Mockito syntax is:
{noformat}
org.apache.geode.cache.CacheClosedException: A cache has not yet been created.
at
org.apache.geode.internal.cache.CacheFactoryStatics.getAnyInstance(CacheFactoryStatics.java:87)
at
org.apache.geode.modules.util.CreateRegionFunction.<init>(CreateRegionFunction.java:59)
at
org.apache.geode.modules.util.BootstrappingFunction.registerFunctions(BootstrappingFunction.java:124)
at
org.apache.geode.modules.util.BootstrappingFunction.execute(BootstrappingFunction.java:67)
at
org.apache.geode.modules.util.BootstrappingFunctionIntegrationTest.registerFunctionGetsCalledOnNonLocators(BootstrappingFunctionIntegrationTest.java:101)
{noformat}
When I make the changes necessary to make BootstrappingFunction unit testable,
the tomcat session backwards compatibility tests all start failing in
UpgradeTest:
{noformat}
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest
> test[0] FAILED
java.lang.RuntimeException: Something very bad happened when trying to
start container
TOMCAT8_client-server_test0_0_6b9ba51c-9690-47aa-8e56-8e5b6cb22af4_<unknown>
at
org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:80)
at
org.apache.geode.session.tests.ContainerManager.startContainers(ContainerManager.java:91)
at
org.apache.geode.session.tests.ContainerManager.startAllInactiveContainers(ContainerManager.java:98)
at
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTestBase.doPutAndGetSessionOnAllClients(TomcatSessionBackwardsCompatibilityTestBase.java:187)
at
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.test(TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.java:35)
Caused by:
java.lang.RuntimeException: Something very bad happened to this
container when starting. Check the cargo_logs folder for container logs.
at
org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:218)
at
org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:77)
... 4 more
Caused by:
org.codehaus.cargo.container.ContainerException: Deployable
[http://localhost:22942/cargocpc/index.html] failed to finish deploying within
the timeout period [120000]. The Deployable state is thus unknown.
at
org.codehaus.cargo.container.spi.deployer.DeployerWatchdog.watch(DeployerWatchdog.java:111)
at
org.codehaus.cargo.container.spi.AbstractLocalContainer.waitForCompletion(AbstractLocalContainer.java:385)
at
org.codehaus.cargo.container.spi.AbstractLocalContainer.start(AbstractLocalContainer.java:232)
at
org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:216)
{noformat}
was:
BootstrappingFunctionIntegrationTest unintentionally creates a full Cache stack.
The cause is improper syntax for partial mocking a Spy:
{noformat}
when(bootstrappingFunction.verifyCacheExists()).thenReturn(mockCache);
{noformat}
...which first invokes the actual verifyCacheExists() method which creates a
real Cache and then returns mockCache. This should instead be:
{noformat}
doReturn(mockCache).when(bootstrappingFunction).verifyCacheExists();
{noformat}
Unfortunately, the class BootstrappingFunction requires additional changes to
make it unit testable. The next test failure after fixing the Mockito syntax is:
{noformat}
org.apache.geode.cache.CacheClosedException: A cache has not yet been created.
at
org.apache.geode.internal.cache.CacheFactoryStatics.getAnyInstance(CacheFactoryStatics.java:87)
at
org.apache.geode.modules.util.CreateRegionFunction.<init>(CreateRegionFunction.java:59)
at
org.apache.geode.modules.util.BootstrappingFunction.registerFunctions(BootstrappingFunction.java:124)
at
org.apache.geode.modules.util.BootstrappingFunction.execute(BootstrappingFunction.java:67)
at
org.apache.geode.modules.util.BootstrappingFunctionIntegrationTest.registerFunctionGetsCalledOnNonLocators(BootstrappingFunctionIntegrationTest.java:101)
{noformat}
When I make the changes necessary to make BootstrappingFunction unit testable,
the tomcat session backwards compatibility tests all start failing in
UpgradeTest:
{noformat}
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest
> test[0] FAILED
java.lang.RuntimeException: Something very bad happened when trying to
start container
TOMCAT8_client-server_test0_0_6b9ba51c-9690-47aa-8e56-8e5b6cb22af4_<unknown>
at
org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:80)
at
org.apache.geode.session.tests.ContainerManager.startContainers(ContainerManager.java:91)
at
org.apache.geode.session.tests.ContainerManager.startAllInactiveContainers(ContainerManager.java:98)
at
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTestBase.doPutAndGetSessionOnAllClients(TomcatSessionBackwardsCompatibilityTestBase.java:187)
at
org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.test(TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.java:35)
Caused by:
java.lang.RuntimeException: Something very bad happened to this
container when starting. Check the cargo_logs folder for container logs.
at
org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:218)
at
org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:77)
... 4 more
Caused by:
org.codehaus.cargo.container.ContainerException: Deployable
[http://localhost:22942/cargocpc/index.html] failed to finish deploying within
the timeout period [120000]. The Deployable state is thus unknown.
at
org.codehaus.cargo.container.spi.deployer.DeployerWatchdog.watch(DeployerWatchdog.java:111)
at
org.codehaus.cargo.container.spi.AbstractLocalContainer.waitForCompletion(AbstractLocalContainer.java:385)
at
org.codehaus.cargo.container.spi.AbstractLocalContainer.start(AbstractLocalContainer.java:232)
at
org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:216)
{noformat}
> BootstrappingFunctionIntegrationTest unintentionally creates a full Cache
> stack
> -------------------------------------------------------------------------------
>
> Key: GEODE-8040
> URL: https://issues.apache.org/jira/browse/GEODE-8040
> Project: Geode
> Issue Type: Bug
> Components: tests
> Reporter: Kirk Lund
> Assignee: Jens Deppe
> Priority: Major
>
> BootstrappingFunctionIntegrationTest unintentionally creates a full Cache
> stack. I have renamed and moved BootstrappingFunctionTest from src/test to
> src/integrationTest because it creates a full Cache/DistributedSystem and
> leaves the SocketCreatorFactory in an initialized state which causes other
> unit tests such as SocketCreatorFactoryJUnitTest to fail:
> {noformat}
> org.apache.geode.internal.net.SocketCreatorFactoryJUnitTest >
> testNewSSLConfigSSLComponentLocator FAILED
> java.lang.AssertionError
> at org.junit.Assert.fail(Assert.java:86)
> at org.junit.Assert.assertTrue(Assert.java:41)
> at org.junit.Assert.assertTrue(Assert.java:52)
> at
> org.apache.geode.internal.net.SocketCreatorFactoryJUnitTest.testNewSSLConfigSSLComponentLocator(SocketCreatorFactoryJUnitTest.java:106)
> {noformat}
> The cause is improper syntax in the test for partial mocking a Spy. This
> when/thenReturn:
> {noformat}
> when(bootstrappingFunction.verifyCacheExists()).thenReturn(mockCache);
> {noformat}
> ...first invokes the actual verifyCacheExists() method which creates a real
> Cache and then returns mockCache. This should instead be:
> {noformat}
> doReturn(mockCache).when(bootstrappingFunction).verifyCacheExists();
> {noformat}
> Unfortunately, the class BootstrappingFunction requires additional changes to
> make it unit testable. The next test failure after fixing the Mockito syntax
> is:
> {noformat}
> org.apache.geode.cache.CacheClosedException: A cache has not yet been created.
> at
> org.apache.geode.internal.cache.CacheFactoryStatics.getAnyInstance(CacheFactoryStatics.java:87)
> at
> org.apache.geode.modules.util.CreateRegionFunction.<init>(CreateRegionFunction.java:59)
> at
> org.apache.geode.modules.util.BootstrappingFunction.registerFunctions(BootstrappingFunction.java:124)
> at
> org.apache.geode.modules.util.BootstrappingFunction.execute(BootstrappingFunction.java:67)
> at
> org.apache.geode.modules.util.BootstrappingFunctionIntegrationTest.registerFunctionGetsCalledOnNonLocators(BootstrappingFunctionIntegrationTest.java:101)
> {noformat}
> When I make the changes necessary to make BootstrappingFunction unit
> testable, the tomcat session backwards compatibility tests all start failing
> in UpgradeTest:
> {noformat}
> org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest
> > test[0] FAILED
> java.lang.RuntimeException: Something very bad happened when trying to
> start container
> TOMCAT8_client-server_test0_0_6b9ba51c-9690-47aa-8e56-8e5b6cb22af4_<unknown>
> at
> org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:80)
> at
> org.apache.geode.session.tests.ContainerManager.startContainers(ContainerManager.java:91)
> at
> org.apache.geode.session.tests.ContainerManager.startAllInactiveContainers(ContainerManager.java:98)
> at
> org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTestBase.doPutAndGetSessionOnAllClients(TomcatSessionBackwardsCompatibilityTestBase.java:187)
> at
> org.apache.geode.session.tests.TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.test(TomcatSessionBackwardsCompatibilityTomcat8WithOldModuleCanDoPutsTest.java:35)
> Caused by:
> java.lang.RuntimeException: Something very bad happened to this
> container when starting. Check the cargo_logs folder for container logs.
> at
> org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:218)
> at
> org.apache.geode.session.tests.ContainerManager.startContainer(ContainerManager.java:77)
> ... 4 more
> Caused by:
> org.codehaus.cargo.container.ContainerException: Deployable
> [http://localhost:22942/cargocpc/index.html] failed to finish deploying
> within the timeout period [120000]. The Deployable state is thus unknown.
> at
> org.codehaus.cargo.container.spi.deployer.DeployerWatchdog.watch(DeployerWatchdog.java:111)
> at
> org.codehaus.cargo.container.spi.AbstractLocalContainer.waitForCompletion(AbstractLocalContainer.java:385)
> at
> org.codehaus.cargo.container.spi.AbstractLocalContainer.start(AbstractLocalContainer.java:232)
> at
> org.apache.geode.session.tests.ServerContainer.start(ServerContainer.java:216)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)