Class TestCluster

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    ExternalTestCluster, InternalTestCluster

    public abstract class TestCluster
    extends java.lang.Object
    implements java.io.Closeable
    Base test cluster that exposes the basis to run tests against any elasticsearch cluster, whose layout (e.g. number of nodes) is predefined and cannot be changed during the tests execution
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.apache.logging.log4j.Logger logger  
      protected java.util.Random random  
      protected double transportClientRatio  
    • Constructor Summary

      Constructors 
      Constructor Description
      TestCluster​(long seed)  
    • Method Summary

      Modifier and Type Method Description
      abstract void afterTest()
      This method should be executed during tear down, after each test (but after assertAfterTest)
      void assertAfterTest()
      This method checks all the things that need to be checked after each test
      void beforeIndexDeletion()
      Assertions that should run before the cluster is wiped should be called in this method
      void beforeTest​(java.util.Random random, double transportClientRatio)
      This method should be executed before each test to reset the cluster to its initial state.
      abstract Client client()
      Returns a client connected to any node in the cluster
      abstract void close()
      Closes the current cluster
      abstract void ensureEstimatedStats()
      Ensures that any breaker statistics are reset to 0.
      abstract java.lang.Iterable<Client> getClients()
      Returns an Iterable over all clients in this test cluster
      abstract java.lang.String getClusterName()
      Returns the cluster name
      abstract NamedWriteableRegistry getNamedWriteableRegistry()
      Returns this clusters NamedWriteableRegistry this is needed to deserialize binary content from this cluster that might include custom named writeables
      abstract java.net.InetSocketAddress[] httpAddresses()
      Returns the http addresses of the nodes within the cluster.
      abstract int numDataAndMasterNodes()
      Returns the number of data and master eligible nodes in the cluster.
      abstract int numDataNodes()
      Returns the number of data nodes in the cluster.
      long seed()  
      abstract int size()
      Returns the number of nodes in the cluster.
      void wipe​(java.util.Set<java.lang.String> excludeTemplates)
      Wipes any data that a test can leave behind: indices, templates (except exclude templates) and repositories
      void wipeAllTemplates​(java.util.Set<java.lang.String> exclude)
      Removes all templates, except the templates defined in the exclude
      void wipeIndices​(java.lang.String... indices)
      Deletes the given indices from the tests cluster.
      void wipeRepositories​(java.lang.String... repositories)
      Deletes repositories, supports wildcard notation.
      void wipeTemplates​(java.lang.String... templates)
      Deletes index templates, support wildcard notation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • logger

        protected final org.apache.logging.log4j.Logger logger
      • random

        protected java.util.Random random
      • transportClientRatio

        protected double transportClientRatio
    • Constructor Detail

      • TestCluster

        public TestCluster​(long seed)
    • Method Detail

      • seed

        public long seed()
      • beforeTest

        public void beforeTest​(java.util.Random random,
                               double transportClientRatio)
                        throws java.io.IOException,
                               java.lang.InterruptedException
        This method should be executed before each test to reset the cluster to its initial state.
        Throws:
        java.io.IOException
        java.lang.InterruptedException
      • wipe

        public void wipe​(java.util.Set<java.lang.String> excludeTemplates)
        Wipes any data that a test can leave behind: indices, templates (except exclude templates) and repositories
      • beforeIndexDeletion

        public void beforeIndexDeletion()
                                 throws java.lang.Exception
        Assertions that should run before the cluster is wiped should be called in this method
        Throws:
        java.lang.Exception
      • assertAfterTest

        public void assertAfterTest()
                             throws java.io.IOException
        This method checks all the things that need to be checked after each test
        Throws:
        java.io.IOException
      • afterTest

        public abstract void afterTest()
                                throws java.io.IOException
        This method should be executed during tear down, after each test (but after assertAfterTest)
        Throws:
        java.io.IOException
      • client

        public abstract Client client()
        Returns a client connected to any node in the cluster
      • size

        public abstract int size()
        Returns the number of nodes in the cluster.
      • numDataNodes

        public abstract int numDataNodes()
        Returns the number of data nodes in the cluster.
      • numDataAndMasterNodes

        public abstract int numDataAndMasterNodes()
        Returns the number of data and master eligible nodes in the cluster.
      • httpAddresses

        public abstract java.net.InetSocketAddress[] httpAddresses()
        Returns the http addresses of the nodes within the cluster. Can be used to run REST tests against the test cluster.
      • close

        public abstract void close()
                            throws java.io.IOException
        Closes the current cluster
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • wipeIndices

        public void wipeIndices​(java.lang.String... indices)
        Deletes the given indices from the tests cluster. If no index name is passed to this method all indices are removed.
      • wipeAllTemplates

        public void wipeAllTemplates​(java.util.Set<java.lang.String> exclude)
        Removes all templates, except the templates defined in the exclude
      • wipeTemplates

        public void wipeTemplates​(java.lang.String... templates)
        Deletes index templates, support wildcard notation. If no template name is passed to this method all templates are removed.
      • wipeRepositories

        public void wipeRepositories​(java.lang.String... repositories)
        Deletes repositories, supports wildcard notation.
      • ensureEstimatedStats

        public abstract void ensureEstimatedStats()
        Ensures that any breaker statistics are reset to 0. The implementation is specific to the test cluster, because the act of checking some breaker stats can increase them.
      • getClusterName

        public abstract java.lang.String getClusterName()
        Returns the cluster name
      • getClients

        public abstract java.lang.Iterable<Client> getClients()
        Returns an Iterable over all clients in this test cluster
      • getNamedWriteableRegistry

        public abstract NamedWriteableRegistry getNamedWriteableRegistry()
        Returns this clusters NamedWriteableRegistry this is needed to deserialize binary content from this cluster that might include custom named writeables