diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/.stderr b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/.stderr new file mode 100644 index 0000000000..e3f6131b1d --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/.stderr @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +received termination signal diff --git a/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/out b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/out new file mode 100644 index 0000000000..c9184cdc98 --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.storage.sqlite-basic-sync-in-when/out @@ -0,0 +1,6 @@ +### 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, [code=Storage::SUCCESS, error_str=, value=value5678] +get result same as inserted, T +closed succesfully diff --git a/testing/btest/scripts/base/frameworks/storage/sqlite-basic-sync-in-when.zeek b/testing/btest/scripts/base/frameworks/storage/sqlite-basic-sync-in-when.zeek new file mode 100644 index 0000000000..9679ab56eb --- /dev/null +++ b/testing/btest/scripts/base/frameworks/storage/sqlite-basic-sync-in-when.zeek @@ -0,0 +1,74 @@ +# @TEST-DOC: Basic functionality for storage: opening/closing an sqlite backend, storing/retrieving data, using sync methods in when conditions +# @TEST-EXEC: zeek -b %INPUT > out +# @TEST-EXEC: btest-diff out +# @TEST-EXEC: btest-diff .stderr + +@load base/frameworks/storage/sync +@load policy/frameworks/storage/backend/sqlite + +redef exit_only_after_terminate = T; + +# Create a typename here that can be passed down into get(). +type str: string; + +event Storage::backend_opened(tag: string, config: any) { + print "Storage::backend_opened", tag, config; +} + +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. + when [opts, key, value] ( local open_res = Storage::Sync::open_backend( + Storage::SQLITE, opts, str, str) ) + { + print "open result", open_res; + local b = open_res$value; + + when [b, key, value] ( local put_res = Storage::Sync::put(b, [ $key=key, + $value=value ]) ) + { + print "put result", put_res; + + when [b, key, value] ( local get_res = Storage::Sync::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::Sync::close_backend(b) ) + { + print "closed succesfully"; + terminate(); + } + timeout 5sec + { + print "close request timed out"; + terminate(); + } + } + timeout 5sec + { + print "get request timed out"; + terminate(); + } + } + timeout 5sec + { + print "put request timed out"; + terminate(); + } + } + timeout 5sec + { + print "open request timed out"; + terminate(); + } + }