@@ -220,7 +220,72 @@ if [ "$?" -ne "0" ]; then
220220fi
221221
222222# TODO add more tests
223- # e.g for ./pcm-sensor-server, ./pcm-sensor, ...
223+ # e.g for ./pcm-sensor, ...
224+
225+ echo Testing pcm-sensor-server
226+ # Pick an unused high port to avoid collisions with the default one.
227+ SENSOR_PORT=19738
228+ ./pcm-sensor-server -p $SENSOR_PORT -silent &
229+ SENSOR_PID=$!
230+
231+ # Wait for the server to start accepting connections (up to ~20s).
232+ SENSOR_READY=0
233+ for i in $( seq 1 40) ; do
234+ if ! kill -0 $SENSOR_PID 2> /dev/null; then
235+ echo " pcm-sensor-server exited unexpectedly during startup"
236+ exit 1
237+ fi
238+ if curl -s -o /dev/null -f " http://127.0.0.1:${SENSOR_PORT} /metrics" ; then
239+ SENSOR_READY=1
240+ break
241+ fi
242+ sleep 0.5
243+ done
244+
245+ if [ " $SENSOR_READY " -ne " 1" ]; then
246+ echo " Error: pcm-sensor-server did not become ready on port $SENSOR_PORT "
247+ kill $SENSOR_PID 2> /dev/null
248+ wait $SENSOR_PID 2> /dev/null
249+ exit 1
250+ fi
251+
252+ echo " Query /metrics endpoint with curl"
253+ METRICS_OUT=$( curl -s -f " http://127.0.0.1:${SENSOR_PORT} /metrics" )
254+ CURL_RC=$?
255+ if [ " $CURL_RC " -ne " 0" ] || [ -z " $METRICS_OUT " ]; then
256+ echo " Error in pcm-sensor-server: /metrics request failed or returned empty body"
257+ kill $SENSOR_PID 2> /dev/null
258+ wait $SENSOR_PID 2> /dev/null
259+ exit 1
260+ fi
261+ # Prometheus exposition format lines start with '#' (HELP/TYPE) or a metric name.
262+ if ! echo " $METRICS_OUT " | grep -q ' ^#' ; then
263+ echo " Error in pcm-sensor-server: /metrics response does not look like Prometheus output"
264+ kill $SENSOR_PID 2> /dev/null
265+ wait $SENSOR_PID 2> /dev/null
266+ exit 1
267+ fi
268+
269+ echo " Query /dashboard endpoint with curl"
270+ curl -s -f -o /dev/null " http://127.0.0.1:${SENSOR_PORT} /dashboard"
271+ if [ " $? " -ne " 0" ]; then
272+ echo " Error in pcm-sensor-server: /dashboard request failed"
273+ kill $SENSOR_PID 2> /dev/null
274+ wait $SENSOR_PID 2> /dev/null
275+ exit 1
276+ fi
277+
278+ echo " Query unknown endpoint, expect HTTP 404"
279+ HTTP_CODE=$( curl -s -o /dev/null -w " %{http_code}" " http://127.0.0.1:${SENSOR_PORT} /does-not-exist" )
280+ if [ " $HTTP_CODE " != " 404" ]; then
281+ echo " Error in pcm-sensor-server: expected 404 for unknown endpoint, got $HTTP_CODE "
282+ kill $SENSOR_PID 2> /dev/null
283+ wait $SENSOR_PID 2> /dev/null
284+ exit 1
285+ fi
286+
287+ kill $SENSOR_PID 2> /dev/null
288+ wait $SENSOR_PID 2> /dev/null
224289
225290echo Testing urltest
226291./tests/urltest
0 commit comments