簡體   English   中英

使用嵌入式gemfire定位器和服務器進行集成測試

[英]Using embedded gemfire locator and server for integration testing

我有一個使用gemfire定位器和服務器的應用程序。 我想編寫一個集成測試,可以幫助我在JVM中啟動定位器和服務器,並在結束測試時將其關閉。 我找不到任何可以幫助我完成此操作的文檔。

當測試開始使用LocatorLauncherServerLauncher時,我嘗試啟動定位器和服務器。 它啟動定位器,但引發異常,說明IllegalStateException: A connection to a distributed system already exists in this VM.

我對gemfire不太滿意,不明白我在這里缺少什么,或者是我在嘗試完全錯誤的方向。

了解更多您要確切測試的內容將很有用。 我們在Geode代碼庫中進行了不同級別的測試。 如果您只用一台服務器就能擺脫困境,建議您在JUnits中使用ServerStarterRule 這是一個示例: https : //github.com/apache/geode/blob/f12055ae3ae4b1f4731c0447af0c4cb9abdd4159/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommandIntegrationTest.java

此規則將作為JUnit JVM的一部分啟動服務器。 這意味着您將無法同時使用ClientCache (在同一JVM實例中不能同時擁有ClientCacheCache實例)。

下一級別的測試稱為DUnit測試。 該框架允許您啟動多個JVM並形成一個實際的集群。 最好的使用方法是將ClusterStartupRuleGfshCommandRule一起使用。 例如: https : //github.com/apache/geode/blob/10d89ede6f90f046c15e12e3d16aed259d7044b0/geode-cq/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java

在這里,各種組件正在啟動,包括客戶端VM。 使用這些規則的好處是,它們將以一致且安全的方式為您處理啟動和拆卸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM