0 Replies Latest reply on Jan 28, 2015 12:46 PM by tnine

    Help with creating Cassandra and ElasticSearch plugins

    tnine Newbie

      Hey guys,

      I'm the lead engineer for Apache Usergrid http://usergrid.incubator.apache.org/ .  For the past couple of weeks I've been cleaning up our tests.  Our lifecycle is an absolute nightmare with our dependencies, and it looks like Arquillian can come to the rescue.  However, I haven't been able to find a plugin for running Cassandra, nor a plugin for ElasticSearch.  There's a couple of options I can see from existing plugins.

       

      Use the cube plugin, and run docker images.  This would work, but I don't want to require all our community users to install docker.

       

      Use the SpaceLift project to create a wrapper that performs the following.

      • Downloads the distribution zip from a url and caches it locally (maybe in the maven repo?  not sure yet)
      • Unzips the distro
      • Applies the user provided configuration for either ES or Cassandra
      • Starts the service in a forked process
      • Tests run
      • Forked process is shutdown


      Or, is there a 3rd option that may be better I'm unaware of?  To this end, I have the following questions.


      Does each Arquillian plugin run in an isolated classloader?  I don't want to pollute the testing classpath with server side jars from my plugin.  This can cause things to work when they won't actually run if the client is deployed into a container.


      Is there an example of using another plugin as a dependency, and creating the startup/shutdown lifecycle with it?  I've gone through the tutorial, but it's not clear to me how to create a plugin that starts a service, and cannot have any container deployed to it.  These are dependencies of our container, so it's not clear how to go about this to me.


      Thanks in advance!

      Todd