Completely rework return values from storage operations

This commit is contained in:
Tim Wojtulewicz 2025-02-24 14:37:11 -07:00
parent 8ddda016ff
commit 9ed3e33f97
50 changed files with 859 additions and 586 deletions

View file

@ -63,7 +63,9 @@ event zeek_init() {
value[2] = "b";
value[3] = "c";
local b = Storage::Sync::open_backend(Storage::SQLITE, opts, Rec, tbl);
local open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, Rec, tbl);
print "open result", open_res;
local b = open_res$value;
local res = Storage::Sync::put(b, [$key=key, $value=value]);
print "put result", res;

View file

@ -10,23 +10,26 @@
# Create a typename here that can be passed down into get().
type str: string;
event zeek_init() {
event zeek_init()
{
# Create a database file in the .tmp directory with a 'testing' table
local opts : Storage::BackendOptions;
opts$sqlite = [$database_path = "storage-test.sqlite", $table_name = "testing"];
local opts: Storage::BackendOptions;
opts$sqlite = [ $database_path="storage-test.sqlite", $table_name="testing" ];
local key = "key1234";
# Test inserting/retrieving a key/value pair that we know won't be in
# the backend yet.
local b = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
print "open result", open_res;
local b = open_res$value;
local res = Storage::Sync::erase(b, key);
print "erase result", res;
local res2 = Storage::Sync::get(b, key);
if ( res2?$error )
print "get result", res2$error;
if ( res2$code != Storage::SUCCESS )
print "get result", res2;
Storage::Sync::close_backend(b);
}
}

View file

@ -20,8 +20,8 @@ event check_removed() {
# This should return an error from the sqlite backend that there aren't any more
# rows available.
local res2 = Storage::Sync::get(backend, key);
if ( res2?$error )
print "get result", res2$error;
if ( res2$code != Storage::SUCCESS )
print "get result", res2;
Storage::Sync::close_backend(backend);
terminate();
@ -31,15 +31,17 @@ event setup_test() {
local opts : Storage::BackendOptions;
opts$sqlite = [$database_path = "storage-test.sqlite", $table_name = "testing"];
backend = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
print "open result", open_res;
backend = open_res$value;
local res = Storage::Sync::put(backend, [$key=key, $value=value, $expire_time=2 secs]);
print "put result", res;
local res2 = Storage::Sync::get(backend, key);
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == (res2$val as string);
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == (res2$value as string);
schedule 5 secs { check_removed() };
}

View file

@ -17,15 +17,17 @@ event zeek_init() {
local key = "key1234";
local value = "value7890";
local b = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
print "open result", open_res;
local b = open_res$value;
local res = Storage::Sync::put(b, [$key=key, $value=value]);
print "put result", res;
local res2 = Storage::Sync::get(b, key);
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == (res2$val as string);
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == (res2$value as string);
Storage::Sync::close_backend(b);
}

View file

@ -28,7 +28,9 @@ event zeek_init()
local key = "key1234";
local value = "value5678";
local b = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
print "open result", open_res;
local b = open_res$value;
when [b, key, value] ( local res = Storage::Async::put(b, [ $key=key,
$value=value ]) )
@ -38,8 +40,8 @@ event zeek_init()
when [b, key, value] ( local res2 = Storage::Async::get(b, key) )
{
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == ( res2$val as string );
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == ( res2$value as string );
Storage::Sync::close_backend(b);
}

View file

@ -30,32 +30,49 @@ event zeek_init()
local key = "key1234";
local value = "value5678";
local b = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
when [b, key, value] ( local res = Storage::Async::put(b, [ $key=key,
$value=value ]) )
when [opts, key, value] ( local open_res = Storage::Async::open_backend(
Storage::REDIS, opts, str, str) )
{
print "put result", res;
print "open result", open_res;
local b = open_res$value;
when [b, key, value] ( local res2 = Storage::Async::get(b, key) )
when [b, key, value] ( local put_res = Storage::Async::put(b, [ $key=key,
$value=value ]) )
{
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == ( res2$val as string );
print "put result", put_res;
Storage::Sync::close_backend(b);
when [b, 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 );
terminate();
when [b] ( local close_res = Storage::Async::close_backend(b) )
{
print "close result", close_res;
terminate();
}
timeout 5sec
{
print "close request timed out";
terminate();
}
}
timeout 5sec
{
print "get request timed out";
terminate();
}
}
timeout 5sec
{
print "get request timed out";
print "put request timed out";
terminate();
}
}
timeout 5sec
{
print "put request timed out";
print "open request timed out";
terminate();
}
}

View file

@ -45,7 +45,8 @@ event zeek_init()
opts$redis = [ $server_host="127.0.0.1", $server_port=to_port(getenv(
"REDIS_PORT")), $key_prefix="testing" ];
backend = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
backend = open_res$value;
}
event redis_data_written()

View file

@ -40,15 +40,18 @@ event setup_test()
opts$redis = [ $server_host="127.0.0.1", $server_port=to_port(getenv(
"REDIS_PORT")), $key_prefix="testing" ];
b = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
print "open result", open_res;
b = open_res$value;
local res = Storage::Sync::put(b, [ $key=key, $value=value, $expire_time=2secs ]);
print "put result", res;
local res2 = Storage::Sync::get(b, key);
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == ( res2$val as string );
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == ( res2$value as string );
schedule 5secs { check_removed() };
}

View file

@ -27,15 +27,18 @@ event zeek_init()
local key = "key1234";
local value = "value1234";
local b = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::REDIS, opts, str, str);
print "open_result", open_res;
local b = open_res$value;
local res = Storage::Sync::put(b, [ $key=key, $value=value ]);
print "put result", res;
local res2 = Storage::Sync::get(b, key);
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == ( res2$val as string );
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == ( res2$value as string );
local value2 = "value5678";
res = Storage::Sync::put(b, [ $key=key, $value=value2, $overwrite=T ]);
@ -43,8 +46,8 @@ event zeek_init()
res2 = Storage::Sync::get(b, key);
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value2 == ( res2$val as string );
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value2 == ( res2$value as string );
Storage::Sync::close_backend(b);
}

View file

@ -23,7 +23,10 @@ event zeek_init()
# Test inserting/retrieving a key/value pair that we know won't be in
# the backend yet.
local b = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
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 res = Storage::Async::put(b, [ $key=key,
$value=value ]) )
@ -33,8 +36,8 @@ event zeek_init()
when [b, key, value] ( local res2 = Storage::Async::get(b, key) )
{
print "get result", res2;
if ( res2?$val )
print "get result same as inserted", value == ( res2$val as string );
if ( res2$code == Storage::SUCCESS && res2?$value )
print "get result same as inserted", value == ( res2$value as string );
Storage::Sync::close_backend(b);

View file

@ -22,10 +22,11 @@ event zeek_init()
# Test inserting/retrieving a key/value pair that we know won't be in
# the backend yet.
when [opts, key, value] ( local b = Storage::Async::open_backend(
when [opts, key, value] ( local open_res = Storage::Async::open_backend(
Storage::SQLITE, opts, str, str) )
{
print "open successful";
print "open result", open_res;
local b = open_res$value;
when [b, key, value] ( local put_res = Storage::Async::put(b, [ $key=key,
$value=value ]) )
@ -35,8 +36,8 @@ event zeek_init()
when [b, key, value] ( local get_res = Storage::Async::get(b, key) )
{
print "get result", get_res;
if ( get_res?$val )
print "get result same as inserted", value == ( get_res$val as string );
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) )
{

View file

@ -17,18 +17,23 @@ event zeek_init() {
$table_name = "testing"];
# This should report an error in .stderr and reporter.log
local b = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
local open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
print "Open result", open_res;
# Open a valid database file
opts$sqlite$database_path = "test.sqlite";
b = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
open_res = Storage::Sync::open_backend(Storage::SQLITE, opts, str, str);
print "Open result 2", open_res;
local b = open_res$value;
local bad_key: count = 12345;
local value = "abcde";
Storage::Sync::put(b, [$key=bad_key, $value=value]);
local res = Storage::Sync::put(b, [$key=bad_key, $value=value]);
print "Put result with bad key type", res;
# Close the backend and then attempt to use the closed handle
Storage::Sync::close_backend(b);
local res = Storage::Sync::put(b, [$key="a", $value="b"]);
print fmt("Put result on closed handle: %d", res);
local res2 = Storage::Sync::put(b, [$key="a", $value="b"]);
print "Put result on closed handle", res2;
}