2014-10-29 62 views
0

我从github上获取了XD源代码的最新副本,并试图在本地构建。当我运行构建任务时,出现下面的错误。我在端口6379上运行Redis。不知道是否还有其他东西丢失。Spring XD - 测试失败

我的/ etc/hosts在Mac中似乎很好看。我不得不做一个-x测试来跳过测试。任何可能的决议?我应该运行gemfire吗?

127.0.0.1本地主机 255.255.255.255 broadcasthost :: 1本地主机 FE80 :: 1%lo0的本地主机 127.0.0.1的iMac

13:49:47.920 [DEBUG] [TestEventLogger] 
13:49:47.920 [DEBUG] [TestEventLogger] org.springframework.integration.x.gemfire.JsonStringToObjectTransformerTests > test FAILED 
13:49:47.921 [DEBUG] [TestEventLogger]  java.lang.RuntimeException: java.net.UnknownHostException 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.initAddress(DirectChannel.java:902) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.<init>(DirectChannel.java:126) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager.<init>(JGroupMembershipManager.java:1575) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMemberFactory.newMembershipManager(JGroupMemberFactory.java:111) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.membership.MemberFactory.newMembershipManager(MemberFactory.java:95) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.DistributionManager.<init>(DistributionManager.java:1180) 
13:49:47.921 [INFO] [system.out] 13:49:47.921 [DEBUG] [org.gradle.process.internal.child.ActionExecutionWorker] Stopping client connection. 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.DistributionManager.<init>(DistributionManager.java:1238) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.DistributionManager.create(DistributionManager.java:613) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:515) 
13:49:47.921 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.newInstance(InternalDistributedSystem.java:230) 
13:49:47.922 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.distributed.DistributedSystem.connect(DistributedSystem.java:1105) 
13:49:47.922 [DEBUG] [TestEventLogger]   at com.gemstone.gemfire.cache.CacheFactory.create(CacheFactory.java:227) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.springframework.integration.x.gemfire.JsonStringToObjectTransformerTests.test(JsonStringToObjectTransformerTests.java:31) 
13:49:47.922 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
13:49:47.922 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
13:49:47.922 [DEBUG] [TestEventLogger]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
13:49:47.922 [DEBUG] [TestEventLogger]   at java.lang.reflect.Method.invoke(Method.java:606) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
13:49:47.922 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) 
13:49:47.923 [DEBUG] [TestEventLogger]   at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48) 
13:49:47.924 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
13:49:47.924 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
13:49:47.924 [DEBUG] [TestEventLogger]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
13:49:47.924 [DEBUG] [TestEventLogger]   at java.lang.reflect.Method.invoke(Method.java:606) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
13:49:47.924 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
13:49:47.925 [DEBUG] [TestEventLogger]   at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
13:49:47.925 [DEBUG] [TestEventLogger]   at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105) 
13:49:47.925 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
13:49:47.925 [DEBUG] [TestEventLogger]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
13:49:47.925 [DEBUG] [TestEventLogger]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
13:49:47.925 [DEBUG] [TestEventLogger]   at java.lang.reflect.Method.invoke(Method.java:606) 
13:49:47.925 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
13:49:47.925 [DEBUG] [TestEventLogger]   at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
13:49:47.925 [DEBUG] [TestEventLogger]   at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355) 
13:49:47.925 [DEBUG] [TestEventLogger]   at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) 
13:49:47.925 [DEBUG] [TestEventLogger]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
13:49:47.925 [DEBUG] [TestEventLogger]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
13:49:47.926 [DEBUG] [TestEventLogger]   at java.lang.Thread.run(Thread.java:745) 
13:49:47.926 [DEBUG] [TestEventLogger] 
13:49:47.926 [DEBUG] [TestEventLogger]   Caused by: 
13:49:47.926 [DEBUG] [TestEventLogger]   java.net.UnknownHostException 
13:49:47.926 [DEBUG] [TestEventLogger]    at com.gemstone.gemfire.internal.SocketCreator.getLocalHost(SocketCreator.java:312) 
13:49:47.926 [DEBUG] [TestEventLogger]    at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.initAddress(DirectChannel.java:898) 
13:49:47.926 [DEBUG] [TestEventLogger]    ... 54 more 
13:49:47.928 [DEBUG] [TestEventLogger] 
13:49:47.928 [DEBUG] [TestEventLogger] org.springframework.integration.x.gemfire.JsonStringToObjectTransformerTests FAILED 
13:49:47.928 [DEBUG] [TestEventLogger] 
13:49:47.928 [DEBUG] [TestEventLogger] Gradle Test Executor 6 FAILED 

回答

1

甲怪异之一。我同意,你的/ etc/hosts看起来不错。我在Linux上看到过这种情况,有时使用127.0.1.1而不是127.0.0.1。该测试简单地启动一个缓存 new CacheFactory().create();如果您是GemFire用户,则可能需要检查您的主目录,当前目录或类路径中是否存在任何gemfire.properties或cache.xml文件。 GemFire因发现这些而臭名昭着。

0

同意,你的/ etc/hosts文件看起来没问题(但是,我会格式化它,以便每个主机条目都在一行上)。

似乎你可能运行GemFire 7?

此外,您在Mac(Apple或Oracle JDK/JRE和版本)上运行的是哪个Java供应商/版本?

您的Mac OS X版本可能是一个因素(???),尤其是如果您禁用了网络连接(即没有“有效”网卡,由有效IP连接,由ifconfig确定)比清楚。

简而言之,当环回地址仅指定了IP时(如在/ etc/hosts文件中),GemFire会尝试解析/查找本地系统的实际IP地址(使用GemFire的内部SocketCreator类)由InetAddress.getLocalHost()返回。

这个解析过程相当复杂,不幸包含在SocketCreator类中的“静态初始化程序”块中,当该类被加载时。

这似乎不大可能,InetAddress.getLocalHost()将永远返回null,但在这种情况下,为什么在的GemFire被UnknownHostException异常抛出的原因是因为SocketCreator.localHost类的成员变量是空...

310: public static InetAddress getLocalHost() throws UnknownHostException { 
311: if (localHost == null) { 
312:  throw new UnknownHostException(); 
313: } 
314: return localHost; 
315: } 

“静态初始化程序块”内初始化“SocketCreator.localHost”静态成员变量。

因此,无论是静态初始化没有被调用或InetAddress.getLocalHost()(可能是因为网络被禁用?)返回null,虽然看通过GemFire的代码,将导致NullPointerException(我不确定是否可能有在某处被吞噬),所以它似乎更像前者的路线,但实际上,答案似乎都不太可能。

一个可能的解决方法(因为它避免了启动GemFire成员资格的IP解析步骤,就像在堆栈跟踪中看到的那样)将修改第31行的Spring XD测试类JsonStringToObjectTransformerTests为...

31: new CacheFactory().set("mcast-port", "0").set("log-level", "warning").create(); 

这避免从DirectChannel.initAddress(DirectChannel.java:898)的SocketCreator.getLocalHost()调用。

此外,将日志级别设置为警告可降低GemFire噪音并显着加快测试速度。

希望这会有所帮助。

+0

想到这一点,如果建议的代码更改不起作用,您还有其他选项。 1)你可以修改CacheFactory的创建也是... new CacheFactory().set(“mcast-port”,“0”).set(“disable-tcp”,“true”).set(..) .create()禁用多播UDP和TCP,因为这是一个单一的节点。 2)最后,如果这不能证明是成功的,GemFire有一个(隐藏的)系统属性来显式地设置JGroups绑定地址,这是DirectChannel在绑定地址没有明确设置的情况下查找的内容。 GemFire系统属性是... – 2014-10-30 18:02:25

+0

“gemfire.jg-bind-address”如果用CacheFactory指定,那么它就变成......例如新的CacheFactory()。set(“jg-bind-address”,InetAddress.getLocalHost()。getCanonicalHostName())。set(..)。create(); – 2014-10-30 18:07:55