Class RandomEnumValueFunction

java.lang.Object
org.citrusframework.functions.core.RandomEnumValueFunction
All Implemented Interfaces:
org.citrusframework.functions.Function, org.citrusframework.functions.ParameterizedFunction<StringParameters>

public class RandomEnumValueFunction extends Object implements org.citrusframework.functions.ParameterizedFunction<StringParameters>
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="org.citrusframework.functions.FunctionLibrary">
  <property name="name" value="myCustomFunctionLibrary" />
  <property name="prefix" value="custom:" />
  <property name="members">
    <map>
      <entry key="randomHttpStatusCode">
        <bean class="org.citrusframework.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.
  • Constructor Details

    • RandomEnumValueFunction

      public RandomEnumValueFunction()
  • Method Details

    • execute

      public String execute(StringParameters params, org.citrusframework.context.TestContext context)
      Specified by:
      execute in interface org.citrusframework.functions.ParameterizedFunction<StringParameters>
    • getParameters

      public StringParameters getParameters()
      Specified by:
      getParameters in interface org.citrusframework.functions.ParameterizedFunction<StringParameters>
    • randomValue

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

      public List<String> getValues()
    • setValues

      public void setValues(List<String> values)