[
https://issues.apache.org/jira/browse/ACCUMULO-2102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13861596#comment-13861596
]
Bill Havanki commented on ACCUMULO-2102:
----------------------------------------
I think the problem may lie in the use of {{SiteConfiguration}} (line 431 in
Shell.java). It only creates a single static instance object during the run, so
after the first time it is used in a unit test, subsequent unit tests should
receive the same object with an old mock inside, instead of a new one with a
new mock. This would explain why a test passes when you run it by itself, but
they fail when all tests in the file are run (your second comment).
What it doesn't explain is why it always passes for me! But perhaps a way to
get it to work consistently is to add another test support method to
{{SiteConfiguration}} to clear its singleton {{instance}} field, so that it can
be reset between tests.
> ShellSetInstanceTest failures on clean system
> ---------------------------------------------
>
> Key: ACCUMULO-2102
> URL: https://issues.apache.org/jira/browse/ACCUMULO-2102
> Project: Accumulo
> Issue Type: Bug
> Components: test
> Environment: OpenJDK 1.7.0_45 or Oracle JDK 1.7.0_45 or OpenJDK
> 1.6.0_27, Git: 7838d403, Maven 3.0.4 or 3.1.1
> Reporter: Josh Elser
> Fix For: 1.6.0
>
>
> Installed a new system, and am seeing test failures on ShellSetInstanceTest.
> {noformat}
> java.lang.AssertionError:
> Unexpected method call ClientConfiguration.containsKey("instance.dfs.dir"):
> at
> org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
> at
> org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:85)
> at
> org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:94)
> at
> org.apache.accumulo.core.client.ClientConfiguration$$EnhancerByCGLIB$$470faeab.containsKey(<generated>)
> at
> org.apache.accumulo.core.client.impl.ServerConfigurationUtil$1.get(ServerConfigurationUtil.java:41)
> at
> org.apache.accumulo.core.conf.SiteConfiguration.get(SiteConfiguration.java:67)
> at
> org.apache.accumulo.core.util.shell.Shell.getZooInstance(Shell.java:433)
> at org.apache.accumulo.core.util.shell.Shell.setInstance(Shell.java:414)
> at
> org.apache.accumulo.core.util.shell.ShellSetInstanceTest.testSetInstance_HdfsZooInstance(ShellSetInstanceTest.java:188)
> at
> org.apache.accumulo.core.util.shell.ShellSetInstanceTest.testSetInstance_HdfsZooInstance_HostsGiven(ShellSetInstanceTest.java:121)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:312)
> at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88)
> at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:296)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl$PowerMockJUnit49MethodRunner.executeTestInSuper(PowerMockJUnit49RunnerDelegateImpl.java:116)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl$PowerMockJUnit49MethodRunner.executeTest(PowerMockJUnit49RunnerDelegateImpl.java:77)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:284)
> at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)
> at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:209)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:148)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
> at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)
> at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
> at
> org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101)
> at
> org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
> at
> org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at
> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
> at
> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
> at
> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
> at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
> at
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> {noformat}
> I also noticed the following exception printed to stdout, not sure if it's
> the root cause
> {noformat}
> [main} WARN org.apache.accumulo.core.conf.SiteConfiguration -
> accumulo-site.xml not found on classpath
> java.lang.Throwable
> at
> org.apache.accumulo.core.conf.SiteConfiguration.getXmlConfig(SiteConfiguration.java:51)
> at
> org.apache.accumulo.core.conf.SiteConfiguration.get(SiteConfiguration.java:62)
> at
> org.apache.accumulo.core.util.shell.Shell.getZooInstance(Shell.java:437)
> at org.apache.accumulo.core.util.shell.Shell.setInstance(Shell.java:414)
> at
> org.apache.accumulo.core.util.shell.ShellSetInstanceTest.testSetInstance_HdfsZooInstance(ShellSetInstanceTest.java:188)
> at
> org.apache.accumulo.core.util.shell.ShellSetInstanceTest.testSetInstance_HdfsZooInstance_InstanceGiven(ShellSetInstanceTest.java:117)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:312)
> at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88)
> at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:296)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl$PowerMockJUnit49MethodRunner.executeTestInSuper(PowerMockJUnit49RunnerDelegateImpl.java:116)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl$PowerMockJUnit49MethodRunner.executeTest(PowerMockJUnit49RunnerDelegateImpl.java:77)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:284)
> at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)
> at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:209)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:148)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
> at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)
> at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)
> at
> org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
> at
> org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101)
> at
> org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
> at
> org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at
> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
> at
> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
> at
> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
> at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
> at
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> {noformat}
> The above errors are from the method
> testSetInstance_HdfsZooInstance_HostsGiven, but I also get similar failures
> on testSetInstance_HdfsZooInstance_Implicit and
> testSetInstance_HdfsZooInstance_Explicit
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)