github.com/kubeshop/testkube@v1.17.23/contrib/executor/jmeterd/scripts/jmeter-master.sh (about)

     1  #!/bin/bash
     2  
     3  echo "********************************************************"
     4  echo "*              Installing JMeter Plugins               *"
     5  echo "********************************************************"
     6  echo
     7  
     8  if [ -d ${JMETER_PARENT_TEST_FOLDER}/plugins ]
     9  then
    10    echo "Installing user plugins from ${JMETER_PARENT_TEST_FOLDER}/plugins"
    11    for plugin in ${JMETER_PARENT_TEST_FOLDER}/plugins/*.jar; do
    12        echo "Copying plugin $plugin to ${JMETER_HOME}/lib/ext/"
    13        cp $plugin ${JMETER_HOME}/lib/ext
    14    done;
    15  else
    16    echo "No user plugins provided as directory ${JMETER_PARENT_TEST_FOLDER}/plugins is not present"
    17  fi
    18  echo
    19  
    20  BASE_PROPERTIES_FILE=${JMETER_PARENT_TEST_FOLDER}/user.properties
    21  if [ -f "${BASE_PROPERTIES_FILE}" ]
    22  then
    23    echo "Copying user properties file from ${BASE_PROPERTIES_FILE}"
    24    cp ${BASE_PROPERTIES_FILE} ${JMETER_HOME}/bin/
    25  else
    26    echo "File user.properties not present in ${JMETER_PARENT_TEST_FOLDER}"
    27  fi
    28  echo
    29  
    30  NESTED_PROPERTIES_FILE=${JMETER_PARENT_TEST_FOLDER}/properties/user.properties
    31  if [ -f "${NESTED_PROPERTIES_FILE}" ]
    32  then
    33    echo "Copying user properties file from ${NESTED_PROPERTIES_FILE}"
    34    cp ${NESTED_PROPERTIES_FILE} ${JMETER_HOME}/bin/
    35  else
    36    echo "File user.properties not present in ${JMETER_PARENT_TEST_FOLDER}/properties"
    37  fi
    38  echo
    39  
    40  echo "********************************************************"
    41  echo "*            Initializing JMeter Master                *"
    42  echo "********************************************************"
    43  echo
    44  
    45  freeMem=$(awk '/MemAvailable/ { print int($2/1024) }' /proc/meminfo)
    46  
    47  [[ -z ${JVM_XMN} ]] && JVM_XMN=$(($freeMem*2/10))
    48  [[ -z ${JVM_XMS} ]] && JVM_XMS=$(($freeMem*8/10))
    49  [[ -z ${JVM_XMX} ]] && JVM_XMX=$(($freeMem*8/10))
    50  
    51  echo "Setting dynamically heap size based on available resources JVM_ARGS=-Xmn${JVM_XMN}m -Xms${JVM_XMS}m -Xmx${JVM_XMX}m"
    52  export JVM_ARGS="-Xmn${JVM_XMN}m -Xms${JVM_XMS}m -Xmx${JVM_XMX}m"
    53  
    54  if [ -n "$MASTER_OVERRIDE_JVM_ARGS" ]; then
    55    echo "Overriding JVM_ARGS=${MASTER_OVERRIDE_JVM_ARGS}"
    56    export JVM_ARGS="${MASTER_OVERRIDE_JVM_ARGS}"
    57  fi
    58  
    59  if [ -n "$MASTER_ADDITIONAL_JVM_ARGS" ]; then
    60    echo "Appending additional JVM args: ${MASTER_ADDITIONAL_JVM_ARGS}"
    61    export JVM_ARGS="${JVM_ARGS} ${MASTER_ADDITIONAL_JVM_ARGS}"
    62  fi
    63  
    64  echo "Available memory: ${freeMem} MB"
    65  echo "Configured JVM_ARGS=${JVM_ARGS}"
    66  echo
    67  
    68  echo "********************************************************"
    69  echo "*                Executing JMeter tests                *"
    70  echo "********************************************************"
    71  echo
    72  
    73  if [ -z "$SSL_DISABLED" ]; then
    74      SSL_DISABLED=true
    75  fi
    76  
    77  CONN_ARGS="-Jserver.rmi.ssl.disable=${SSL_DISABLED}"
    78  echo "Executing command: jmeter $@ ${CONN_ARGS} "
    79  echo
    80  echo "Started CMD"
    81  jmeter $@ ${CONN_ARGS}
    82  
    83  echo "END Finished JMeter test on $(date) for test ${file}"
    84  echo
    85  
    86  echo "********************************************************"
    87  echo "*           JMeter test executions finished            *"
    88  echo "********************************************************"
    89  echo