Class RandomEnumValueFunction

  • All Implemented Interfaces:
    com.consol.citrus.functions.Function

    public class RandomEnumValueFunction
    extends Object
    implements com.consol.citrus.functions.Function
    Function to choose one random value from a list of strings. The enumeration values to choose from can either be specified as parameters or in the values property of an instance of this class. These two possibilities can only be used exclusively - either empty values property and non-empty parameters or empty parameters and non-empty values property.

    Example custom function definition and the corresponding usage in a test:

     <bean id="myCustomFunctionLibrary" class="com.consol.citrus.functions.FunctionLibrary">
      <property name="name" value="myCustomFunctionLibrary" />
      <property name="prefix" value="custom:" />
      <property name="members">
        <map>
          <entry key="randomHttpStatusCode">
            <bean class="com.consol.citrus.functions.core.RandomEnumValueFunction">
              <property name="values">
                <list>
                  <value>200</value>
                  <value>500</value>
                  <value>401</value>
                </list>
              </property>
            </bean>
          </entry>
        </map>
      </property>
     </bean>
     
    and the corresponding usage which sets the httpStatusCode to one of the configured values - 200, 500 or 401:
     <variable name="httpStatusCode" value="custom:randomHttpStatusCode()" />
     

    The other usage possibility is to choose a random value from a list of values given as argument like this which achieves the same result as the previously shown custom function:

     <variable name="httpStatusCode" value="citrus:randomEnumValue('200', '401', '500')" />
     
    You should choose which one of the two flavours to use based on the number of times you use this function - if you need it in only one special case you may go with specifying the list as arguments otherwise you should define a custom function and reuse it.
    Author:
    Dimo Velev ([email protected])
    • Constructor Detail

      • RandomEnumValueFunction

        public RandomEnumValueFunction()
    • Method Detail

      • execute

        public String execute​(List<String> params,
                              com.consol.citrus.context.TestContext context)
        Specified by:
        execute in interface com.consol.citrus.functions.Function
        See Also:
        Function.execute(java.util.List, com.consol.citrus.context.TestContext)
      • randomValue

        protected String randomValue​(List<String> values)
        Pseudo-randomly choose one of the supplied values and return it.
        Parameters:
        values -
        Returns:
        Throws:
        IllegalArgumentException - if the values supplied are null or an empty list.
      • setValues

        public void setValues​(List<String> values)