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