diff --git a/Cargo.lock b/Cargo.lock index f2207718..1489a6d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -258,8 +258,8 @@ dependencies = [ [[package]] name = "test_scenarios_rust" -version = "0.2.0" -source = "git+https://github.com/qorix-group/testing_tools.git?tag=v0.2.0#a847c7464cfa47e000141631d1223b92560d2e58" +version = "0.3.0" +source = "git+https://github.com/eclipse-score/testing_tools.git?tag=v0.3.0#a2f9cded3deb636f5dc800bf7a47131487119721" dependencies = [ "tracing", "tracing-subscriber", diff --git a/MODULE.bazel b/MODULE.bazel index 23cf6e22..70720540 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -106,18 +106,6 @@ bazel_dep(name = "aspect_rules_lint", version = "1.10.2") bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2") ## additional settings / config -crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate") -crate.from_cargo( - name = "score_persistency_crates", - cargo_lockfile = "//:Cargo.lock", - manifests = [ - "//:Cargo.toml", - "//src/rust/rust_kvs:Cargo.toml", - "//src/rust/rust_kvs_tool:Cargo.toml", - "//tests/rust_test_scenarios:Cargo.toml", - ], -) - bazel_dep(name = "rust_qnx8_toolchain", version = "1.0.0", dev_dependency = True) archive_override( module_name = "rust_qnx8_toolchain", @@ -127,8 +115,6 @@ archive_override( ], ) -use_repo(crate, "score_persistency_crates") - ## temporary overrides / tools # Testing utils dependency. # Direct usage of tag in git_override reports false problem in editor, using hash of a tag @@ -169,3 +155,6 @@ register_toolchains( "@score_toolchains_rust//toolchains/aarch64-unknown-qnx8_0:toolchain_aarch64_qnx8_0", dev_dependency = True, ) + +# S-CORE crates +bazel_dep(name = "score_crates", version = "0.0.6") diff --git a/src/rust/rust_kvs/BUILD b/src/rust/rust_kvs/BUILD index 2b1f3220..9682b384 100644 --- a/src/rust/rust_kvs/BUILD +++ b/src/rust/rust_kvs/BUILD @@ -11,15 +11,15 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") -load("@score_persistency_crates//:defs.bzl", "all_crate_deps") rust_library( name = "rust_kvs", srcs = glob(["src/**/*.rs"]), visibility = ["//visibility:public"], - deps = all_crate_deps( - normal = True, - ), + deps = [ + "@score_crates//:adler32", + "@score_crates//:tinyjson", + ], ) rust_test( @@ -29,8 +29,5 @@ rust_test( "unit_tests", "ut", ], - deps = all_crate_deps( - normal = True, - normal_dev = True, - ), + deps = ["@score_crates//:tempfile"], ) diff --git a/src/rust/rust_kvs_tool/BUILD b/src/rust/rust_kvs_tool/BUILD index a28b0b8a..5e84e158 100644 --- a/src/rust/rust_kvs_tool/BUILD +++ b/src/rust/rust_kvs_tool/BUILD @@ -11,7 +11,6 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@rules_rust//rust:defs.bzl", "rust_binary") -load("@score_persistency_crates//:defs.bzl", "all_crate_deps") rust_binary( name = "kvs_tool", @@ -20,9 +19,9 @@ rust_binary( ], crate_name = "rust_kvs_tool", visibility = ["//visibility:public"], - deps = all_crate_deps( - normal = True, - ) + [ + deps = [ "//src/rust/rust_kvs", + "@score_crates//:pico_args", + "@score_crates//:tinyjson", ], ) diff --git a/tests/python_test_cases/BUILD b/tests/python_test_cases/BUILD index 132ff9ee..b2950bc2 100644 --- a/tests/python_test_cases/BUILD +++ b/tests/python_test_cases/BUILD @@ -48,7 +48,6 @@ score_py_pytest( data = [ ":python_tc_venv", "//tests/cpp_test_scenarios", - "//tests/rust_test_scenarios", ], env = { "RUST_BACKTRACE": "1", @@ -66,7 +65,6 @@ score_py_pytest( ], data = [ ":python_tc_venv", - "//tests/cpp_test_scenarios", "//tests/rust_test_scenarios", ], env = { diff --git a/tests/rust_test_scenarios/BUILD b/tests/rust_test_scenarios/BUILD index 1e50658a..6f98b1b5 100644 --- a/tests/rust_test_scenarios/BUILD +++ b/tests/rust_test_scenarios/BUILD @@ -11,7 +11,6 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@rules_rust//rust:defs.bzl", "rust_binary") -load("@score_persistency_crates//:defs.bzl", "all_crate_deps") rust_binary( name = "rust_test_scenarios", @@ -20,6 +19,11 @@ rust_binary( deps = [ "//src/rust/rust_kvs", - "@score_persistency_crates//:tinyjson", - ] + all_crate_deps(normal = True), + "@score_crates//:serde", + "@score_crates//:serde_json", + "@score_crates//:tinyjson", + "@score_crates//:tracing", + "@score_crates//:tracing_subscriber", + "@score_test_scenarios//test_scenarios_rust", + ], ) diff --git a/tests/rust_test_scenarios/Cargo.toml b/tests/rust_test_scenarios/Cargo.toml index c2719f5a..ad4b2fc0 100644 --- a/tests/rust_test_scenarios/Cargo.toml +++ b/tests/rust_test_scenarios/Cargo.toml @@ -11,7 +11,7 @@ tracing = "0.1.41" tracing-subscriber = { version = "0.3.20", features = ["json"] } serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" -test_scenarios_rust = { git = "https://github.com/qorix-group/testing_tools.git", tag = "v0.2.0" } +test_scenarios_rust = { git = "https://github.com/eclipse-score/testing_tools.git", tag = "v0.3.0" } [lints] diff --git a/tests/rust_test_scenarios/src/cit/default_values.rs b/tests/rust_test_scenarios/src/cit/default_values.rs index 85d7beca..2dc3323f 100644 --- a/tests/rust_test_scenarios/src/cit/default_values.rs +++ b/tests/rust_test_scenarios/src/cit/default_values.rs @@ -13,13 +13,12 @@ impl Scenario for DefaultValues { "default_values" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Key used for tests. let key = "test_number"; // Create KVS instance with provided params. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -61,13 +60,12 @@ impl Scenario for RemoveKey { "remove_key" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Key used for tests. let key = "test_number"; // Create KVS instance with provided params. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -109,12 +107,11 @@ impl Scenario for ResetAllKeys { "reset_all_keys" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { let num_values = 5; // Create KVS instance with provided params. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -175,13 +172,12 @@ impl Scenario for ResetSingleKey { "reset_single_key" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { let num_values = 5; let reset_index = 2; // Create KVS instance with provided params. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -243,10 +239,9 @@ impl Scenario for Checksum { "checksum" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Create KVS instance with provided params. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); let kvs_path; let hash_path; { diff --git a/tests/rust_test_scenarios/src/cit/multiple_kvs.rs b/tests/rust_test_scenarios/src/cit/multiple_kvs.rs index 3b178758..ba39cc21 100644 --- a/tests/rust_test_scenarios/src/cit/multiple_kvs.rs +++ b/tests/rust_test_scenarios/src/cit/multiple_kvs.rs @@ -11,15 +11,14 @@ impl Scenario for MultipleInstanceIds { "multiple_instance_ids" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Values. let keyname = "number".to_string(); let value1 = 111.1; let value2 = 222.2; // Parameters. - let input_string = input.as_ref().expect("Test input is expected"); - let v: Value = serde_json::from_str(input_string).expect("Failed to parse input string"); + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); let params1 = KvsParameters::from_value(&v["kvs_parameters_1"]).expect("Failed to parse parameters"); let params2 = @@ -68,14 +67,13 @@ impl Scenario for SameInstanceIdSameValue { "same_instance_id_same_value" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Values. let keyname = "number".to_string(); let value = 111.1; // Parameters. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { // Create first KVS instance. let kvs1 = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -120,15 +118,14 @@ impl Scenario for SameInstanceIdDifferentValue { "same_instance_id_diff_value" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Values. let keyname = "number".to_string(); let value1 = 111.1; let value2 = 222.2; // Parameters. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { // Create first KVS instance. let kvs1 = kvs_instance(params.clone()).expect("Failed to create KVS instance"); diff --git a/tests/rust_test_scenarios/src/cit/persistency.rs b/tests/rust_test_scenarios/src/cit/persistency.rs index 2878fbd7..0d9b6929 100644 --- a/tests/rust_test_scenarios/src/cit/persistency.rs +++ b/tests/rust_test_scenarios/src/cit/persistency.rs @@ -12,7 +12,7 @@ impl Scenario for ExplicitFlush { "explicit_flush" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // List of keys and corresponding values. let num_values = 5; let mut key_values = Vec::new(); @@ -23,8 +23,7 @@ impl Scenario for ExplicitFlush { } // Check parameters. - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); { // First KVS instance object - used for setting and flushing data. let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); diff --git a/tests/rust_test_scenarios/src/cit/snapshots.rs b/tests/rust_test_scenarios/src/cit/snapshots.rs index 73227de5..a4f9907a 100644 --- a/tests/rust_test_scenarios/src/cit/snapshots.rs +++ b/tests/rust_test_scenarios/src/cit/snapshots.rs @@ -11,9 +11,8 @@ impl Scenario for SnapshotCount { "count" } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let v: Value = serde_json::from_str(input_string).expect("Failed to parse input string"); + fn run(&self, input: &str) -> Result<(), String> { + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); let count = serde_json::from_value(v["count"].clone()).expect("Failed to parse \"count\" field"); let params = KvsParameters::from_value(&v).expect("Failed to parse parameters"); @@ -44,9 +43,8 @@ impl Scenario for SnapshotMaxCount { "max_count" } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let v: Value = serde_json::from_str(input_string).expect("Failed to parse input string"); + fn run(&self, input: &str) -> Result<(), String> { + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); let params = KvsParameters::from_value(&v).expect("Failed to parse parameters"); let kvs = kvs_instance(params.clone()).expect("Failed to create KVS instance"); @@ -62,9 +60,8 @@ impl Scenario for SnapshotRestore { "restore" } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let v: Value = serde_json::from_str(input_string).expect("Failed to parse input string"); + fn run(&self, input: &str) -> Result<(), String> { + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); let count = serde_json::from_value(v["count"].clone()).expect("Failed to parse \"count\" field"); let snapshot_id = serde_json::from_value(v["snapshot_id"].clone()) @@ -104,9 +101,8 @@ impl Scenario for SnapshotPaths { "paths" } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let v: Value = serde_json::from_str(input_string).expect("Failed to parse input string"); + fn run(&self, input: &str) -> Result<(), String> { + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); let count = serde_json::from_value(v["count"].clone()).expect("Failed to parse \"count\" field"); let snapshot_id = serde_json::from_value(v["snapshot_id"].clone()) diff --git a/tests/rust_test_scenarios/src/cit/supported_datatypes.rs b/tests/rust_test_scenarios/src/cit/supported_datatypes.rs index d34bb24b..b09d501f 100644 --- a/tests/rust_test_scenarios/src/cit/supported_datatypes.rs +++ b/tests/rust_test_scenarios/src/cit/supported_datatypes.rs @@ -13,9 +13,8 @@ impl Scenario for SupportedDatatypesKeys { "keys" } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + fn run(&self, input: &str) -> Result<(), String> { + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); let kvs = kvs_instance(params).expect("Failed to create KVS instance"); // Set key-value pairs. Unit type is used for value - only key is used later on. @@ -59,9 +58,8 @@ impl Scenario for SupportedDatatypesValues { } } - fn run(&self, input: Option) -> Result<(), String> { - let input_string = input.as_ref().expect("Test input is expected"); - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + fn run(&self, input: &str) -> Result<(), String> { + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); let kvs = kvs_instance(params).expect("Failed to create KVS instance"); kvs.set_value(self.name(), self.value.clone()) diff --git a/tests/rust_test_scenarios/src/main.rs b/tests/rust_test_scenarios/src/main.rs index 28e80f6a..e698bb89 100644 --- a/tests/rust_test_scenarios/src/main.rs +++ b/tests/rust_test_scenarios/src/main.rs @@ -6,8 +6,35 @@ mod helpers; mod test_basic; use crate::cit::cit_scenario_group; use crate::test_basic::BasicScenario; +use std::time::{SystemTime, UNIX_EPOCH}; +use tracing::Level; +use tracing_subscriber::fmt::time::FormatTime; +use tracing_subscriber::FmtSubscriber; -fn main() { +struct NumericUnixTime; + +impl FormatTime for NumericUnixTime { + fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<'_>) -> std::fmt::Result { + let now = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap_or_default(); + write!(w, "{}", now.as_secs()) + } +} + +fn init_tracing_subscriber() { + let subscriber = FmtSubscriber::builder() + .with_max_level(Level::TRACE) + .with_thread_ids(true) + .with_timer(NumericUnixTime) + .json() + .finish(); + + tracing::subscriber::set_global_default(subscriber) + .expect("Setting default subscriber failed!"); +} + +fn main() -> Result<(), String> { let raw_arguments: Vec = std::env::args().collect(); // Basic group. @@ -29,6 +56,7 @@ fn main() { )); // Run. + init_tracing_subscriber(); let test_context = TestContext::new(root_group); - run_cli_app(&raw_arguments, &test_context); + run_cli_app(&raw_arguments, &test_context) } diff --git a/tests/rust_test_scenarios/src/test_basic.rs b/tests/rust_test_scenarios/src/test_basic.rs index 5f60b32f..76d4074e 100644 --- a/tests/rust_test_scenarios/src/test_basic.rs +++ b/tests/rust_test_scenarios/src/test_basic.rs @@ -15,12 +15,10 @@ impl Scenario for BasicScenario { "basic" } - fn run(&self, input: Option) -> Result<(), String> { + fn run(&self, input: &str) -> Result<(), String> { // Print and parse parameters. - let input_string = input.as_ref().expect("Test input is expected"); - eprintln!("{input_string}"); - - let params = KvsParameters::from_json(input_string).expect("Failed to parse parameters"); + eprintln!("{input}"); + let params = KvsParameters::from_json(input).expect("Failed to parse parameters"); // Set builder parameters. let mut builder = KvsBuilder::new(params.instance_id);