prometheus-jmx-exporter/tests/smoke_test.sh
2023-06-29 09:49:00 +02:00

63 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -e
JAVA=$1
JAVA_VER=$2
AGENT_VERSION="0.12.0"
dir=$(mktemp -d)
pushd $dir
cat > prometheus_config.yaml <<EOF
---
lowercaseOutputName: true
lowercaseOutputLabelNames: true
blacklistObjectNames:
# handled by agent's default exporter
- "java.lang:*"
EOF
cat > HelloWait.java <<EOF
public class HelloWait {
public static void main(String[] args) {
System.out.println("Hello World");
try {
while (true) {
Thread.sleep(200);
}
} catch (InterruptedException e) {
// ignore
}
}
}
EOF
javac HelloWait.java
$JAVA/bin/java -javaagent:/usr/share/java/prometheus-jmx-exporter/jmx_prometheus_javaagent.jar=8080:prometheus_config.yaml -cp . HelloWait > hello_wait.out 2>&1 &
num_tries=0
while [ $num_tries -lt 10 ] && ! grep -q 'Hello World' hello_wait.out; do
sleep 1
num_tries=$(($num_tries + 1))
done
echo
if [ $num_tries -eq 10 ]; then
echo "Time out reached waiting for HelloWait to come up"
exit 1
fi
curl -s http://127.0.0.1:8080/metrics 2>&1 | tee prometheus.out
echo
echo
# jmx_exporter_build_info{version="0.12.0",name="jmx_prometheus_javaagent",} 1.0
grep "jmx_exporter_build_info" prometheus.out | grep -q "version=\"$AGENT_VERSION\""
# jvm_info{version="1.8.0_222-b10",vendor="Oracle Corporation",runtime="OpenJDK Runtime Environment",} 1.0
version="1.8.0"
if [ $JAVA_VER -ne 8 ]; then
version="11.0"
fi
grep "jvm_info" prometheus.out | grep -q "version=\"$version"
popd
rm -rf $dir
# Cleanup HelloWait process
kill $(jps | grep HelloWait | awk '{ print $1 }')
echo "JDK $JAVA_VER: Tests PASSED!"