Tests: ctf2: ust clock override: adapt validation for ctf2
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Wed, 3 Aug 2022 21:06:52 +0000 (17:06 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 19 Aug 2022 16:11:10 +0000 (12:11 -0400)
IMPORTANT: this introduce a dependency on jq for data extraction of the
clock-class.

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Change-Id: If8eb0d12e79c1febb8fed0b1b6d4522abf87dae2

tests/regression/ust/clock-override/test_clock_override

index 6be2d8dff0d5c132fbf0a74879d6a56ad95c1b1c..c3ff7077076b5434a9ad64b210aaf920cc0f9aee 100755 (executable)
@@ -6,7 +6,7 @@
 
 TEST_DESC="UST - Clock override plugin"
 
-CURDIR=$(dirname $0)/
+CURDIR=$(dirname "$0")/
 TESTDIR=$CURDIR/../../..
 SESSION_NAME="clock_override"
 
@@ -18,27 +18,14 @@ EVENT_NAME="tp:tptest"
 LTTNG_UST_CLOCK_PLUGIN_SO="lttng-ust-clock-override-test.so"
 LIBS_DIR=".libs"
 
-METADATA_CLOCK_START_TOKEN="clock {"
-METADATA_CLOCK_END_TOKEN="};"
-
-METADATA_TOKEN_LIST=(
-       "name"
-       "uuid"
-       "description"
-       "freq"
-)
-
-UST_CLOCK_TOKEN_VALUE=(
-       "lttng_test_clock_override"
-       "83c63deb-7aa4-48fb-abda-946f400d76e6"
-       "Freeze time with 1KHz for regression test"
-       "1000"
-)
-
-NUM_TESTS=33
-
 source $TESTDIR/utils/utils.sh
 
+if [ "$TRACE_FORMAT_OUTPUT" == "ctf1" ]; then
+       NUM_TESTS=33
+elif [ "$TRACE_FORMAT_OUTPUT" == "ctf2" ]; then
+       NUM_TESTS=31
+fi
+
 # MUST set TESTDIR before calling those functions
 function run_app()
 {
@@ -46,29 +33,107 @@ function run_app()
        ok $? "Application done"
 }
 
-function extract_clock_metadata()
+function extract_clock_metadata_ctf1()
 {
+       local metadata_clock_start_token="clock {"
+       local metadata_clock_end_token="};"
+
        local metadata_file=$1
        local clock_metadata_file_destination=$2
-       cat $metadata_file \
-               | sed -n "/$METADATA_CLOCK_START_TOKEN/,/$METADATA_CLOCK_END_TOKEN/p" \
-               > $clock_metadata_file_destination
+
+       sed -n "/$metadata_clock_start_token/,/$metadata_clock_end_token/p" "$metadata_file" > "$clock_metadata_file_destination"
        ok $? "Clock metadata extraction"
 }
 
-function extract_clock_metadata_token()
+function extract_clock_metadata_token_ctf1()
 {
        local clock_metadata_file=$1
        local token=$2
        # Look for token and get value between ""
-       cat $clock_metadata_file | grep $token | awk -F"= |;" '{print $2}' | tr -d '"'
+       grep "$token" "$clock_metadata_file" | awk -F"= |;" '{print $2}' | tr -d '"'
+}
+
+function validate_tokens_ctf1
+{
+
+       local metadata_token_list=(
+               "name"
+               "uuid"
+               "description"
+               "freq"
+       )
+
+       local ust_clock_token_value=(
+               "lttng_test_clock_override"
+               "83c63deb-7aa4-48fb-abda-946f400d76e6"
+               "Freeze time with 1KHz for regression test"
+               "1000"
+       )
+
+       test ${#metadata_token_list[@]} -eq ${#ust_clock_token_value[@]}
+       ok $? "Tokens to check(${#metadata_token_list[@]}) and provided values(${#ust_clock_token_value[@]}) count is equal"
+
+       local metadata_directory_path=$1
+       local ctf_metadata_file
+       local clock_metadata_file
+
+       clock_metadata_file=$(mktemp --tmpdir -p "$TRACE_PATH" clock-metadata.XXXXXX)
+       ctf_metadata_file=$(mktemp --tmpdir -p "$TRACE_PATH" ctf-metadata.XXXXXX)
+
+       $BABELTRACE_BIN -o ctf-metadata -w "$ctf_metadata_file" "$metadata_directory_path"
+       ok $? "Metadata extraction from babeltrace"
+
+       extract_clock_metadata_ctf1 "$ctf_metadata_file" "$clock_metadata_file"
+
+       local counter=0
+       while [ "$counter" -lt "${#metadata_token_list[@]}" ]; do
+               result=$(extract_clock_metadata_token_ctf1 "$clock_metadata_file" \
+                       "${metadata_token_list[$counter]}")
+               test "$result" == "${ust_clock_token_value[$counter]}"
+               ok $? "Token \"${metadata_token_list[$counter]}\" expect:${ust_clock_token_value[$counter]} got:$result"
+               (( counter++ ))
+       done
+
+       rm -rf "$ctf_metadata_file"
+       rm -rf "$clock_metadata_file"
+}
+
+function validate_tokens_ctf2
+{
+       local metadata_token_list=(
+               "name"
+               "uuid"
+               "description"
+               "frequency"
+       )
+
+       local ust_clock_token_value=(
+               "lttng_test_clock_override"
+               "[131,198,61,235,122,164,72,251,171,218,148,111,64,13,118,230]"
+               "Freeze time with 1KHz for regression test"
+               "1000"
+       )
+
+       test ${#metadata_token_list[@]} -eq ${#ust_clock_token_value[@]}
+       ok $? "Tokens to check(${#metadata_token_list[@]}) and provided values(${#ust_clock_token_value[@]}) count is equal"
+
+       local metadata_path=$1
+
+       local counter=0
+       while [ "$counter" -lt "${#metadata_token_list[@]}" ]; do
+               result=$(jq  -c -r "select(.type == \"clock-class\").${metadata_token_list[$counter]}" "$metadata_path")
+               test "$result" == "${ust_clock_token_value[$counter]}"
+               ok $? "Token \"${metadata_token_list[$counter]}\" expect:${ust_clock_token_value[$counter]} got:$result"
+               (( counter++ ))
+       done
+
 }
 
 function test_getcpu_override_metadata()
 {
-       local ctf_metadata_file=$(mktemp --tmpdir -p $TRACE_PATH ctf-metadata.XXXXXX)
-       local clock_metadata_file=$(mktemp --tmpdir -p $TRACE_PATH clock-metadata.XXXXXX)
        local result=""
+       local metadata_file
+       local metadata_directory_path
 
        diag "Clock override plugin metadata test"
 
@@ -77,7 +142,7 @@ function test_getcpu_override_metadata()
        start_lttng_sessiond
        unset LTTNG_UST_CLOCK_PLUGIN
 
-       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+       create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
        enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
        start_lttng_tracing_ok $SESSION_NAME
        run_app
@@ -85,27 +150,14 @@ function test_getcpu_override_metadata()
        destroy_lttng_session_ok $SESSION_NAME
        stop_lttng_sessiond
 
-       local TRACE_METADATA_FILE_PATH="$(find "$TRACE_PATH" -name metadata -type f)"
-       local TRACE_METADATA_DIR="$(dirname "$TRACE_METADATA_FILE_PATH")"
-
-       $BABELTRACE_BIN -o ctf-metadata -w $ctf_metadata_file $TRACE_METADATA_DIR
-       ok $? "Metadata extraction from babeltrace"
-
-       extract_clock_metadata $ctf_metadata_file $clock_metadata_file
-
-       test ${#METADATA_TOKEN_LIST[@]} -eq ${#UST_CLOCK_TOKEN_VALUE[@]}
-       ok $? "Tokens to check(${#METADATA_TOKEN_LIST[@]}) and provided values(${#UST_CLOCK_TOKEN_VALUE[@]}) count is equal"
+       metadata_file="$(find "$TRACE_PATH" -name metadata -type f)"
+       metadata_directory_path="$(dirname "$metadata_file")"
 
-       local counter=0
-       while [ "$counter" -lt "${#METADATA_TOKEN_LIST[@]}" ]; do
-               result=$(extract_clock_metadata_token $clock_metadata_file \
-                       ${METADATA_TOKEN_LIST[$counter]})
-               test "$result" == "${UST_CLOCK_TOKEN_VALUE[$counter]}"
-               ok $? "Token \"${METADATA_TOKEN_LIST[$counter]}\" expect:${UST_CLOCK_TOKEN_VALUE[$counter]} got:$result"
-               let "counter++"
-       done
-       rm -rf $ctf_metadata_file
-       rm -rf $clock_metadata_file
+       if [ "$TRACE_FORMAT_OUTPUT" == "ctf1" ]; then
+               validate_tokens_ctf1 "$metadata_directory_path"
+       elif [ "$TRACE_FORMAT_OUTPUT" == "ctf2" ]; then
+               validate_tokens_ctf2 "$metadata_file"
+       fi
 }
 
 function test_getcpu_override_timestamp()
This page took 0.031232 seconds and 5 git commands to generate.