2014-10-29 93 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