diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.redis-async/out b/testing/btest/Baseline/scripts.base.frameworks.storage.redis-async/out index 3c40bed4be..be7bf2fe10 100644 --- a/testing/btest/Baseline/scripts.base.frameworks.storage.redis-async/out +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.redis-async/out @@ -3,4 +3,23 @@ open result, [code=Storage::SUCCESS, error_str=, value=, value=] get result, [code=Storage::SUCCESS, error_str=, value=value5678] get result same as inserted, T + +Post-operation metrics: +Telemetry::COUNTER, zeek, zeek_storage_backends_opened_total, [], [], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_read_bytes_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 34.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_expired_entries_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, fail, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, success, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, fail, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, success, Storage::STORAGE_BACKEND_REDIS], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, fail, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, success, Storage::STORAGE_BACKEND_REDIS], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_written_bytes_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 18.0 + close result, [code=Storage::SUCCESS, error_str=, value=] diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.redis-sync/out b/testing/btest/Baseline/scripts.base.frameworks.storage.redis-sync/out index 866dde271b..565f0c8832 100644 --- a/testing/btest/Baseline/scripts.base.frameworks.storage.redis-sync/out +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.redis-sync/out @@ -9,5 +9,25 @@ get result same as originally inserted, T put result, [code=Storage::SUCCESS, error_str=, value=] get result, [code=Storage::SUCCESS, error_str=, value=value2345] get result same as overwritten, T -Storage::backend_opened, Storage::STORAGE_BACKEND_REDIS, [serializer=Storage::STORAGE_SERIALIZER_JSON, redis=[server_host=127.0.0.1, server_port=xxxx/tcp, server_unix_socket=, key_prefix=testing, connect_timeout=5.0 secs, operation_timeout=5.0 secs, username=, password=]] -Storage::backend_lost, Storage::STORAGE_BACKEND_REDIS, [serializer=Storage::STORAGE_SERIALIZER_JSON, redis=[server_host=127.0.0.1, server_port=xxxx/tcp, server_unix_socket=, key_prefix=testing, connect_timeout=5.0 secs, operation_timeout=5.0 secs, username=, password=]], Client disconnected +get result, [code=Storage::KEY_NOT_FOUND, error_str=, value=] +Storage::backend_opened, Storage::STORAGE_BACKEND_REDIS, [serializer=Storage::STORAGE_SERIALIZER_JSON, redis=[server_host=127.0.0.1, server_port=XXXX/tcp, server_unix_socket=, key_prefix=testing, connect_timeout=5.0 secs, operation_timeout=5.0 secs, username=, password=]] + +Post-operation metrics: +Telemetry::COUNTER, zeek, zeek_storage_backends_opened_total, [], [], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_read_bytes_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 102.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_expired_entries_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, fail, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, success, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, erase, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, fail, Storage::STORAGE_BACKEND_REDIS], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, success, Storage::STORAGE_BACKEND_REDIS], 3.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, get, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, error, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, fail, Storage::STORAGE_BACKEND_REDIS], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, success, Storage::STORAGE_BACKEND_REDIS], 2.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [server_addr-testing, put, timeout, Storage::STORAGE_BACKEND_REDIS], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_written_bytes_total, [config, type], [server_addr-testing, Storage::STORAGE_BACKEND_REDIS], 54.0 + +Storage::backend_lost, Storage::STORAGE_BACKEND_REDIS, [serializer=Storage::STORAGE_SERIALIZER_JSON, redis=[server_host=127.0.0.1, server_port=XXXX/tcp, server_unix_socket=, key_prefix=testing, connect_timeout=5.0 secs, operation_timeout=5.0 secs, username=, password=]], Client disconnected diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic/out b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic/out index 055e0cd530..a37c13e929 100644 --- a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic/out +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic/out @@ -9,4 +9,23 @@ open result, [code=Storage::SUCCESS, error_str=, value=, value=] get result, [code=Storage::SUCCESS, error_str=, value=value5678] get result same as inserted, T + +Post-operation metrics: +Telemetry::COUNTER, zeek, zeek_storage_backends_opened_total, [], [], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_read_bytes_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 18.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_expired_entries_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, fail, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, success, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, fail, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, success, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, fail, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, success, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_written_bytes_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 18.0 + closed succesfully diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/.stderr b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/.stderr new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/.stderr @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/out b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/out new file mode 100644 index 0000000000..de725c3ee4 --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-metrics/out @@ -0,0 +1,24 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +open result, [code=Storage::SUCCESS, error_str=, value=] +put result, [code=Storage::SUCCESS, error_str=, value=] +get result 1, [code=Storage::SUCCESS, error_str=, value=value5678] +erase result, [code=Storage::SUCCESS, error_str=, value=] +get result 2, [code=Storage::KEY_NOT_FOUND, error_str=, value=] + +Post-operation metrics: +Telemetry::COUNTER, zeek, zeek_storage_backends_opened_total, [], [], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_read_bytes_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 18.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_expired_entries_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, fail, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, success, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, erase, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, fail, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, success, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, get, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, error, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, fail, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, success, Storage::STORAGE_BACKEND_SQLITE], 1.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_operation_results_total, [config, operation, result, type], [test.sqlite-testing, put, timeout, Storage::STORAGE_BACKEND_SQLITE], 0.0 +Telemetry::COUNTER, zeek, zeek_storage_backend_data_written_bytes_total, [config, type], [test.sqlite-testing, Storage::STORAGE_BACKEND_SQLITE], 18.0 diff --git a/testing/btest/scripts/base/frameworks/storage/redis-async.zeek b/testing/btest/scripts/base/frameworks/storage/redis-async.zeek index 881a5b9ae4..b16cd62747 100644 --- a/testing/btest/scripts/base/frameworks/storage/redis-async.zeek +++ b/testing/btest/scripts/base/frameworks/storage/redis-async.zeek @@ -4,16 +4,43 @@ # @TEST-PORT: REDIS_PORT # @TEST-EXEC: btest-bg-run redis-server run-redis-server ${REDIS_PORT%/tcp} -# @TEST-EXEC: zeek -b %INPUT > out +# @TEST-EXEC: zeek -b %INPUT | sed "s|-${REDIS_PORT%/tcp}-|-XXXX-|g" > out # @TEST-EXEC: btest-bg-wait -k 0 # @TEST-EXEC: btest-diff out @load base/frameworks/storage/async -@load base/frameworks/storage/sync @load policy/frameworks/storage/backend/redis +@load base/frameworks/telemetry + +# Make sure the telemetry output is in a fixed order. +redef running_under_test = T; redef exit_only_after_terminate = T; +global b : opaque of Storage::BackendHandle; + +event print_metrics_and_close() + { + print ""; + print "Post-operation metrics:"; + local storage_metrics = Telemetry::collect_metrics("zeek", "storage*"); + for (_, m in storage_metrics) + { + print m$opts$metric_type, m$opts$prefix, m$opts$name, m$label_names, m$label_values, m$value; + } + print ""; + + when [] ( local close_res = Storage::Async::close_backend(b) ) + { + print "close result", close_res; + terminate(); + } + timeout 5sec + { + print "close result", close_res; + terminate(); + } + } event zeek_init() { @@ -28,29 +55,20 @@ event zeek_init() Storage::STORAGE_BACKEND_REDIS, opts, string, string) ) { print "open result", open_res; - local b = open_res$value; + b = open_res$value; - when [b, key, value] ( local put_res = Storage::Async::put(b, [ $key=key, + when [key, value] ( local put_res = Storage::Async::put(b, [ $key=key, $value=value ]) ) { print "put result", put_res; - when [b, key, value] ( local get_res = Storage::Async::get(b, key) ) + when [key, value] ( local get_res = Storage::Async::get(b, key) ) { print "get result", get_res; if ( get_res$code == Storage::SUCCESS && get_res?$value ) print "get result same as inserted", value == ( get_res$value as string ); - when [b] ( local close_res = Storage::Async::close_backend(b) ) - { - print "close result", close_res; - terminate(); - } - timeout 5sec - { - print "close request timed out"; - terminate(); - } + schedule 100 msec { print_metrics_and_close() }; } timeout 5sec { diff --git a/testing/btest/scripts/base/frameworks/storage/redis-sync.zeek b/testing/btest/scripts/base/frameworks/storage/redis-sync.zeek index 2f09ddae44..019fb39a00 100644 --- a/testing/btest/scripts/base/frameworks/storage/redis-sync.zeek +++ b/testing/btest/scripts/base/frameworks/storage/redis-sync.zeek @@ -4,13 +4,34 @@ # @TEST-PORT: REDIS_PORT # @TEST-EXEC: btest-bg-run redis-server run-redis-server ${REDIS_PORT%/tcp} -# @TEST-EXEC: zeek -b %INPUT | sed 's|=[0-9]*/tcp|=xxxx/tcp|g' > out +# @TEST-EXEC: zeek -b %INPUT | sed 's|=[0-9]*/tcp|=XXXX/tcp|g' | sed "s|-${REDIS_PORT%/tcp}-|-XXXX-|g" > out # @TEST-EXEC: btest-bg-wait -k 0 # @TEST-EXEC: btest-diff out @load base/frameworks/storage/sync @load policy/frameworks/storage/backend/redis +@load base/frameworks/telemetry + +# Make sure the telemetry output is in a fixed order. +redef running_under_test = T; + +global b : opaque of Storage::BackendHandle; + +event print_metrics_and_close() + { + print ""; + print "Post-operation metrics:"; + local storage_metrics = Telemetry::collect_metrics("zeek", "storage*"); + for (i in storage_metrics) + { + local m = storage_metrics[i]; + print m$opts$metric_type, m$opts$prefix, m$opts$name, m$label_names, m$label_values, m$value; + } + print ""; + + Storage::Sync::close_backend(b); + } event Storage::backend_opened(tag: Storage::Backend, config: any) { print "Storage::backend_opened", tag, config; @@ -35,7 +56,7 @@ event zeek_init() local res = Storage::Sync::open_backend(Storage::STORAGE_BACKEND_REDIS, opts, string, string); print "open_result", res; - local b = res$value; + b = res$value; # Put a first value. This should return Storage::SUCCESS. res = Storage::Sync::put(b, [$key=key, $value=value]); @@ -67,5 +88,9 @@ event zeek_init() if ( res$code == Storage::SUCCESS && res?$value ) print "get result same as overwritten", value2 == (res$value as string); - Storage::Sync::close_backend(b); + # Attempt to get a value that doesn't exist. + res = Storage::Sync::get(b, "testing"); + print "get result", res; + + schedule 100 msec { print_metrics_and_close() }; } diff --git a/testing/btest/scripts/base/frameworks/storage/sqlite-basic.zeek b/testing/btest/scripts/base/frameworks/storage/sqlite-basic.zeek index 977b31d71b..3bea61bad4 100644 --- a/testing/btest/scripts/base/frameworks/storage/sqlite-basic.zeek +++ b/testing/btest/scripts/base/frameworks/storage/sqlite-basic.zeek @@ -5,9 +5,39 @@ @load base/frameworks/storage/async @load policy/frameworks/storage/backend/sqlite +@load base/frameworks/telemetry + +# Make sure the telemetry output is in a fixed order. +redef running_under_test = T; redef exit_only_after_terminate = T; +global b : opaque of Storage::BackendHandle; + +event print_metrics_and_close() + { + print ""; + print "Post-operation metrics:"; + local storage_metrics = Telemetry::collect_metrics("zeek", "storage*"); + for (i in storage_metrics) + { + local m = storage_metrics[i]; + print m$opts$metric_type, m$opts$prefix, m$opts$name, m$label_names, m$label_values, m$value; + } + print ""; + + when [] ( local close_res = Storage::Async::close_backend(b) ) + { + print "closed succesfully"; + terminate(); + } + timeout 5sec + { + print "close request timed out"; + terminate(); + } + } + event Storage::backend_opened(tag: Storage::Backend, config: any) { print "Storage::backend_opened", tag, config; } @@ -28,29 +58,20 @@ event zeek_init() Storage::STORAGE_BACKEND_SQLITE, opts, string, string) ) { print "open result", open_res; - local b = open_res$value; + b = open_res$value; - when [b, key, value] ( local put_res = Storage::Async::put(b, [ $key=key, + when [key, value] ( local put_res = Storage::Async::put(b, [ $key=key, $value=value ]) ) { print "put result", put_res; - when [b, key, value] ( local get_res = Storage::Async::get(b, key) ) + when [key, value] ( local get_res = Storage::Async::get(b, key) ) { print "get result", get_res; if ( get_res$code == Storage::SUCCESS && get_res?$value ) print "get result same as inserted", value == ( get_res$value as string ); - when [b] ( local close_res = Storage::Async::close_backend(b) ) - { - print "closed succesfully"; - terminate(); - } - timeout 5sec - { - print "close request timed out"; - terminate(); - } + schedule 100 msec { print_metrics_and_close() }; } timeout 5sec { diff --git a/testing/btest/scripts/base/frameworks/storage/sqlite-metrics.zeek b/testing/btest/scripts/base/frameworks/storage/sqlite-metrics.zeek new file mode 100644 index 0000000000..9877773b60 --- /dev/null +++ b/testing/btest/scripts/base/frameworks/storage/sqlite-metrics.zeek @@ -0,0 +1,61 @@ +# @TEST-DOC: Test metrics for storage/sqlite in a sync context +# @TEST-EXEC: zeek -b %INPUT > out +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff .stderr + +@load base/frameworks/telemetry +@load base/frameworks/storage/sync +@load policy/frameworks/storage/backend/sqlite + +# Make sure the telemetry output is in a fixed order. +redef running_under_test = T; + +global b : opaque of Storage::BackendHandle; + +event print_metrics_and_close() + { + print ""; + print "Post-operation metrics:"; + local storage_metrics = Telemetry::collect_metrics("zeek", "storage*"); + for (i in storage_metrics) + { + local m = storage_metrics[i]; + print m$opts$metric_type, m$opts$prefix, m$opts$name, m$label_names, m$label_values, m$value; + } + + Storage::Sync::close_backend(b); + } + +event zeek_init() + { + # Create a database file in the .tmp directory with a 'testing' table + local opts: Storage::BackendOptions; + opts$sqlite = [ $database_path="test.sqlite", $table_name="testing" ]; + + local key = "key1234"; + local value = "value5678"; + + # Test inserting/retrieving a key/value pair that we know won't be in + # the backend yet. + local res = Storage::Sync::open_backend(Storage::STORAGE_BACKEND_SQLITE, opts, string, string); + print "open result", res; + b = res$value; + + res = Storage::Sync::put(b, [$key=key, $value=value]); + print "put result", res; + + res = Storage::Sync::get(b, key); + print "get result 1", res; + + res = Storage::Sync::erase(b, key); + print "erase result", res; + + local res2 = Storage::Sync::get(b, key); + print "get result 2", res2; + + # Schedule this part for two reasons: + # 1. To let the backend_opened event happen before we print metrics. + # 2. To print the metrics before closing so that the page_count and file_size callbacks + # run before closing. + schedule 100 msecs { print_metrics_and_close() }; + }