提问者:小点点

使用嵌入式GemFire与Cucumber进行集成测试,用于部署在Apache Geode客户端/服务器拓扑中的Spring Boot应用程序


我打算用Cucumber为使用Spring Boot并部署在Apache Geode客户端/服务器拓扑中的GemFire缓存客户端应用程序编写集成测试。我提到了这个问题——如何在不依赖Pivotal GemFire缓存的情况下启动Spring Boot应用程序,这个问题在2018年得到了回答,也提到了联调档留在这里——与STDG的集成测试。扩展STDG的ForkingClientServerIntegrationTestsSupprt类的示例具体客户端/服务器集成测试的链接似乎被破坏了。

我的集成测试的目的是:

  • 在联调阶段运行嵌入式定位器和服务器
  • 使用group. xml
  • 定义服务器的区域
  • 创建、读取、更新和删除缓存条目并验证不同的用例

任何关于编写集成测试的理想方法(可能使用嵌入式GemFire定位器和服务器)的帮助都将非常有帮助。

使用@CacheServerApplication注释尝试了用于集成测试的嵌入式GemFire CacheServer实例,但不确定如何创建ClientCache对象以使用嵌入式GemFire,或者这是否是编写集成测试的正确方法。

编辑:还遇到了这个-是否有可能在一个JVM中启动PIvotal GemFire服务器,定位器和客户端?其中提到-简而言之,不,您不能在同一个JVM(或Java应用程序进程)中拥有对等缓存实例(带有嵌入式定位器)和ClientCache实例。


共1个答案

匿名用户

免责声明:我没有使用Apache Cucumber的经验…

但是,在单个测试类中启动多个GemFire或Geode服务器端进程并不难,例如1个或多个Locator和[多个]CacheServers。定位器可以是独立的JVM进程,也可以作为服务器的一部分嵌入。

在这种典型的测试配置安排中,GemFire或Geode服务器端进程被分叉但协调,并且测试类本身充当ClientCache实例。

您可以在这里的SBDG多站点缓存示例中看到1个这样的测试配置。

此测试配置的关键是STDG的ForkingClientServerIntegrationTest类的扩展,以及测试类设置方法中2个集群的分叉(特别是)。

每个集群的配置由Spring配置处理,协调全部使用GemFire/Geode属性(特别是)结合一些Spring配置文件(例如,请参阅此处)来控制为每个GemFire/GeodeJVM进程应用哪些配置。

当然,这个示例和测试配置非常复杂,因为测试还采用了GemFire/Geode的WAN功能,因此使用了“多站点”缓存参考,但有助于证明Spring和SBDG/SDG/STDG支持您的测试需求所需的复杂或简单的设置。

您可以启动任意数量的GemFire/Geode进程(LocatorsCacheServers等)。而且,在几乎所有情况下,测试类(JVM)本身就是缓存客户端(ClientCache实例)。

以下是来自Spring Data for Apache Geode(SDG)代码库和测试套件的更多示例:这里和这里。

我确信我有另一个测试类或示例(某处),对于单个定位器,然后加入2个CacheServer实例,然后测试(JVM进程)作为ClientCache实例进行,但我现在似乎找不到它。

无论如何,我希望这能给你一些想法。