summaryrefslogtreecommitdiffstats
path: root/tests/perctile-simple.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/perctile-simple.sh')
-rwxr-xr-xtests/perctile-simple.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/perctile-simple.sh b/tests/perctile-simple.sh
new file mode 100755
index 0000000..b3bca04
--- /dev/null
+++ b/tests/perctile-simple.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+. ${srcdir:=.}/diag.sh init
+DELIMITER='|'
+BUCKETNAME='test_bucket'
+STATNAME='test_stat_name'
+# uncomment to test really long statname
+#STATNAME='123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'
+generate_conf
+add_conf '
+ruleset(name="stats") {
+ action(type="omfile" file="'${RSYSLOG_DYNNAME}'.out.stats.log")
+}
+
+module(load="../plugins/impstats/.libs/impstats" interval="1" severity="7" Ruleset="stats" bracketing="on")
+#module(load="../plugins/impstats/.libs/impstats" format="json" interval="1" severity="7" Ruleset="stats" bracketing="on")
+template(name="outfmt" type="string" string="%$.timestamp% %msg% val=%$.val%\n")
+
+percentile_stats(name="'$BUCKETNAME'"
+ percentiles=["95", "50", "99"]
+ windowsize="1000"
+ delimiter="'${DELIMITER}'"
+ )
+
+if $msg startswith " msgnum:" then {
+ # test with a small window
+ set $.val = field($msg, 58, 2);
+ set $.status = percentile_observe("'$BUCKETNAME'", "'$STATNAME'", $.val);
+ action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outfmt")
+}
+'
+startup
+wait_for_stats_flush ${RSYSLOG_DYNNAME}.out.stats.log
+. $srcdir/diag.sh block-stats-flush
+shuf -i 1-1000 | sed -e 's/^/injectmsg literal <167>Mar 1 01:00:00 172.20.245.8 tag msgnum:/g' | $TESTTOOL_DIR/diagtalker -p$IMDIAG_PORT || error_exit $?
+wait_queueempty
+. $srcdir/diag.sh allow-single-stats-flush-after-block-and-wait-for-it
+
+shuf -i 1001-2000 | sed -e 's/^/injectmsg literal <167>Mar 1 01:00:00 172.20.245.8 tag msgnum:/g' | $TESTTOOL_DIR/diagtalker -p$IMDIAG_PORT || error_exit $?
+. $srcdir/diag.sh await-stats-flush-after-block
+wait_queueempty
+wait_for_stats_flush ${RSYSLOG_DYNNAME}.out.stats.log
+
+echo doing shutdown
+shutdown_when_empty
+custom_content_check "${STATNAME}${DELIMITER}p95=950" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}p50=500" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}p99=990" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_min=1" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_max=1000" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_sum=500500" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_count=1000" "${RSYSLOG_DYNNAME}.out.stats.log"
+
+custom_content_check "${STATNAME}${DELIMITER}p95=1950" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}p50=1500" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}p99=1990" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_min=1001" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_max=2000" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_sum=1500500" "${RSYSLOG_DYNNAME}.out.stats.log"
+custom_content_check "${STATNAME}${DELIMITER}window_count=1000" "${RSYSLOG_DYNNAME}.out.stats.log"
+
+exit_test