diff --git a/src/output/emitters.rs b/src/output/emitters.rs index d818b65..8c6316c 100644 --- a/src/output/emitters.rs +++ b/src/output/emitters.rs @@ -9,7 +9,7 @@ use std::clone::Clone; use std::io; use std::io::Write; use std::path::Path; -use std::sync::atomic; +use std::sync::atomic::{self, Ordering}; use std::sync::Arc; use tokio::fs::File; @@ -104,14 +104,13 @@ impl JsonEmitter { let out_artifact = models::OutputArtifactSpec { descendant: object.clone(), now: now_tz, - sequence_number: self.next_sequence_no(), + sequence_number: self.incr_seqno(), }; serde_json::json!(out_artifact) } - fn next_sequence_no(&self) -> u64 { - self.sequence_no.fetch_add(1, atomic::Ordering::SeqCst); - self.sequence_no.load(atomic::Ordering::SeqCst) + fn incr_seqno(&self) -> u64 { + self.sequence_no.fetch_add(1, Ordering::AcqRel) } pub async fn emit(&self, object: &models::OutputArtifactDescendant) -> Result<(), WriterError> { @@ -142,7 +141,7 @@ mod tests { "major": models::SPEC_VERSION.0, "minor": models::SPEC_VERSION.1, }, - "sequenceNumber": 1 + "sequenceNumber": 0 }); let buffer = Arc::new(Mutex::new(vec![])); @@ -167,14 +166,14 @@ mod tests { "major": models::SPEC_VERSION.0, "minor": models::SPEC_VERSION.1, }, - "sequenceNumber": 1 + "sequenceNumber": 0 }); let expected_2 = json!({ "schemaVersion": { "major": models::SPEC_VERSION.0, "minor": models::SPEC_VERSION.1, }, - "sequenceNumber": 2 + "sequenceNumber": 1 }); let buffer = Arc::new(Mutex::new(vec![])); diff --git a/src/output/measurement.rs b/src/output/measurement.rs index c641d8b..b21dd6e 100644 --- a/src/output/measurement.rs +++ b/src/output/measurement.rs @@ -5,7 +5,7 @@ // https://opensource.org/licenses/MIT. use std::future::Future; -use std::sync::atomic; +use std::sync::atomic::{self, Ordering}; use std::sync::Arc; use chrono::DateTime; @@ -22,7 +22,7 @@ use tv::{dut, emitters, models, state}; /// ref: https://github.com/opencomputeproject/ocp-diag-core/tree/main/json_spec#measurementseriesstart pub struct MeasurementSeries { state: Arc>, - seq_no: Arc>, + seq_no: Arc, start: MeasurementSeriesStart, } @@ -30,7 +30,7 @@ impl MeasurementSeries { pub(crate) fn new(series_id: &str, name: &str, state: Arc>) -> Self { Self { state, - seq_no: Arc::new(Mutex::new(atomic::AtomicU64::new(0))), + seq_no: Arc::new(atomic::AtomicU64::new(0)), start: MeasurementSeriesStart::new(name, series_id), } } @@ -41,20 +41,13 @@ impl MeasurementSeries { ) -> Self { Self { state, - seq_no: Arc::new(Mutex::new(atomic::AtomicU64::new(0))), + seq_no: Arc::new(atomic::AtomicU64::new(0)), start, } } - async fn current_sequence_no(&self) -> u64 { - self.seq_no.lock().await.load(atomic::Ordering::SeqCst) - } - - async fn increment_sequence_no(&self) { - self.seq_no - .lock() - .await - .fetch_add(1, atomic::Ordering::SeqCst); + fn incr_seqno(&self) -> u64 { + self.seq_no.fetch_add(1, Ordering::AcqRel) } /// Starts the measurement series. @@ -107,14 +100,18 @@ impl MeasurementSeries { /// # }); /// ``` pub async fn end(&self) -> Result<(), emitters::WriterError> { - let end = - MeasurementSeriesEnd::new(self.start.get_series_id(), self.current_sequence_no().await); + let end = MeasurementSeriesEnd::new( + self.start.get_series_id(), + self.seq_no.load(Ordering::Acquire), + ); + self.state .lock() .await .emitter .emit(&end.to_artifact()) .await?; + Ok(()) } @@ -139,19 +136,15 @@ impl MeasurementSeries { /// # }); /// ``` pub async fn add_measurement(&self, value: Value) -> Result<(), emitters::WriterError> { - let element = MeasurementSeriesElement::new( - self.current_sequence_no().await, - value, - &self.start, - None, - ); - self.increment_sequence_no().await; + let element = MeasurementSeriesElement::new(self.incr_seqno(), value, &self.start, None); + self.state .lock() .await .emitter .emit(&element.to_artifact()) .await?; + Ok(()) } @@ -182,20 +175,21 @@ impl MeasurementSeries { metadata: Vec<(&str, Value)>, ) -> Result<(), emitters::WriterError> { let element = MeasurementSeriesElement::new( - self.current_sequence_no().await, + self.incr_seqno(), value, &self.start, Some(Map::from_iter( metadata.iter().map(|(k, v)| (k.to_string(), v.clone())), )), ); - self.increment_sequence_no().await; + self.state .lock() .await .emitter .emit(&element.to_artifact()) .await?; + Ok(()) } diff --git a/src/output/run.rs b/src/output/run.rs index 2e72bda..5dc99f4 100644 --- a/src/output/run.rs +++ b/src/output/run.rs @@ -84,6 +84,8 @@ impl TestRun { /// # }); /// ``` pub async fn start(self) -> Result { + // TODO: test run should not be responsible to emit the schema version. + // That should sit with the emitter (and/or some context which only runs once) let version = SchemaVersion::new(); self.state .lock() diff --git a/src/output/step.rs b/src/output/step.rs index 749a0a8..48ec132 100644 --- a/src/output/step.rs +++ b/src/output/step.rs @@ -5,7 +5,7 @@ // https://opensource.org/licenses/MIT. use serde_json::Value; -use std::sync::atomic; +use std::sync::atomic::{self, Ordering}; use std::sync::Arc; use tokio::sync::Mutex; @@ -56,7 +56,7 @@ impl TestStep { Ok(StartedTestStep { step: self, - measurement_id_no: Arc::new(atomic::AtomicU64::new(0)), + measurement_id_seqno: Arc::new(atomic::AtomicU64::new(0)), }) } @@ -101,7 +101,7 @@ impl TestStep { pub struct StartedTestStep { step: TestStep, - measurement_id_no: Arc, + measurement_id_seqno: Arc, } impl StartedTestStep { @@ -489,11 +489,9 @@ impl StartedTestStep { /// # }); /// ``` pub fn measurement_series(&self, name: &str) -> MeasurementSeries { - self.measurement_id_no - .fetch_add(1, atomic::Ordering::SeqCst); let series_id: String = format!( "series_{}", - self.measurement_id_no.load(atomic::Ordering::SeqCst) + self.measurement_id_seqno.fetch_add(1, Ordering::AcqRel) ); MeasurementSeries::new(&series_id, name, self.step.state.clone()) diff --git a/tests/output/macros.rs b/tests/output/macros.rs index 4eeaf22..6da7b9d 100644 --- a/tests/output/macros.rs +++ b/tests/output/macros.rs @@ -109,7 +109,7 @@ async fn test_ocptv_error_macro_with_symptom_and_message() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "error", |run| async move { @@ -127,7 +127,7 @@ async fn test_ocptv_error_macro_with_symptom() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "error", |run| async move { @@ -146,7 +146,7 @@ async fn test_ocptv_log_debug() -> Result<()> { "severity": "DEBUG" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "log", |run| async move { @@ -166,7 +166,7 @@ async fn test_ocptv_log_info() -> Result<()> { "severity": "INFO" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "log", |run| async move { @@ -185,7 +185,7 @@ async fn test_ocptv_log_warning() -> Result<()> { "severity": "WARNING" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "log", |run| async move { @@ -204,7 +204,7 @@ async fn test_ocptv_log_error() -> Result<()> { "severity": "ERROR" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "log", |run| async move { @@ -223,7 +223,7 @@ async fn test_ocptv_log_fatal() -> Result<()> { "severity": "FATAL" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }); check_output_run(&expected, "log", |run| async move { @@ -242,7 +242,7 @@ async fn test_ocptv_error_macro_with_symptom_and_message_in_step() -> Result<()> "symptom":"symptom" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "error", |step| async move { @@ -260,7 +260,7 @@ async fn test_ocptv_error_macro_with_symptom_in_step() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "error", |step| async move { @@ -279,7 +279,7 @@ async fn test_ocptv_log_debug_in_step() -> Result<()> { "severity": "DEBUG" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "log", |step| async move { @@ -298,7 +298,7 @@ async fn test_ocptv_log_info_in_step() -> Result<()> { "severity": "INFO" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "log", |step| async move { @@ -317,7 +317,7 @@ async fn test_ocptv_log_warning_in_step() -> Result<()> { "severity":"WARNING" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "log", |step| async move { @@ -336,7 +336,7 @@ async fn test_ocptv_log_error_in_step() -> Result<()> { "severity": "ERROR" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "log", |step| async move { @@ -355,7 +355,7 @@ async fn test_ocptv_log_fatal_in_step() -> Result<()> { "severity": "FATAL" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }); check_output_step(&expected, "log", |step| async move { diff --git a/tests/output/runner.rs b/tests/output/runner.rs index 82426fc..3b4146d 100644 --- a/tests/output/runner.rs +++ b/tests/output/runner.rs @@ -26,18 +26,18 @@ use tv::{ }; fn json_schema_version() -> serde_json::Value { - // seqno for schemaVersion is always 1 + // seqno for schemaVersion is always 0 json!({ "schemaVersion": { "major": tv::SPEC_VERSION.0, "minor": tv::SPEC_VERSION.1 }, - "sequenceNumber": 1 + "sequenceNumber": 0 }) } fn json_run_default_start() -> serde_json::Value { - // seqno for the default test run start is always 2 + // seqno for the default test run start is always 1 json!({ "testRunArtifact": { "testRunStart": { @@ -49,7 +49,7 @@ fn json_run_default_start() -> serde_json::Value { "version": "1.0" } }, - "sequenceNumber": 2 + "sequenceNumber": 1 }) } @@ -66,14 +66,14 @@ fn json_run_pass(seqno: i32) -> serde_json::Value { } fn json_step_default_start() -> serde_json::Value { - // seqno for the default test run start is always 3 + // seqno for the default test run start is always 2 json!({ "testStepArtifact": { "testStepStart": { "name": "first step" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }) } @@ -151,7 +151,7 @@ async fn test_testrun_start_and_end() -> Result<()> { let expected = [ json_schema_version(), json_run_default_start(), - json_run_pass(3), + json_run_pass(2), ]; check_output_run(&expected, |_| async { Ok(()) }.boxed()).await @@ -169,9 +169,9 @@ async fn test_testrun_with_log() -> Result<()> { "severity": "INFO" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; check_output_run(&expected, |run| { @@ -203,9 +203,9 @@ async fn test_testrun_with_log_with_details() -> Result<()> { } } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; check_output_run(&expected, |run| { @@ -234,9 +234,9 @@ async fn test_testrun_with_error() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; check_output_run(&expected, |run| { @@ -257,9 +257,9 @@ async fn test_testrun_with_error_with_message() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; check_output_run(&expected, |run| { @@ -288,9 +288,9 @@ async fn test_testrun_with_error_with_details() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; check_output_run(&expected, |run| { @@ -321,9 +321,9 @@ async fn test_testrun_with_error_with_details() -> Result<()> { // "severity": "INFO" // } // }, -// "sequenceNumber": 3 +// "sequenceNumber": 2 // }), -// json_run_pass(4), +// json_run_pass(3), // ]; // check_output(&expected, |run_builder| async { @@ -349,8 +349,8 @@ async fn test_testrun_with_step() -> Result<()> { json_schema_version(), json_run_default_start(), json_step_default_start(), - json_step_complete(4), - json_run_pass(5), + json_step_complete(3), + json_run_pass(4), ]; check_output_step(&expected, |_| async { Ok(()) }.boxed()).await @@ -369,10 +369,10 @@ async fn test_testrun_step_log() -> Result<()> { "severity": "INFO" } }, - "sequenceNumber": 4 + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -397,7 +397,6 @@ async fn test_testrun_step_log_with_details() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "log": { "message": "This is a log message with INFO severity", @@ -407,10 +406,11 @@ async fn test_testrun_step_log_with_details() -> Result<()> { "line": 1 } } - } + }, + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -437,15 +437,15 @@ async fn test_testrun_step_error() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "error": { "symptom": "symptom" } - } + }, + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -466,16 +466,16 @@ async fn test_testrun_step_error_with_message() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "error": { "message": "Error message", "symptom": "symptom" } - } + }, + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -496,7 +496,6 @@ async fn test_testrun_step_error_with_details() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "error": { "message": "Error message", @@ -510,10 +509,11 @@ async fn test_testrun_step_error_with_details() -> Result<()> { }, "symptom": "symptom" } - } + }, + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -541,7 +541,7 @@ async fn test_testrun_step_error_with_details() -> Result<()> { // json_run_default_start(), // json_step_default_start(), // json!({ -// "sequenceNumber": 4, +// "sequenceNumber": 3, // "testStepArtifact": { // "log": { // "message": "This is a log message with INFO severity", @@ -549,8 +549,8 @@ async fn test_testrun_step_error_with_details() -> Result<()> { // } // } // }), -// json_step_complete(5), -// json_run_pass(6), +// json_step_complete(4), +// json_run_pass(5), // ]; // check_output_run(&expected, |run| { @@ -579,15 +579,15 @@ async fn test_step_with_measurement() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurement": { "name": "name", "value": 50 } - } + }, + "sequenceNumber": 3, }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -608,7 +608,6 @@ async fn test_step_with_measurement_builder() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurement": { "hardwareInfoId": "id", @@ -625,10 +624,11 @@ async fn test_step_with_measurement_builder() -> Result<()> { }], "value": 50 } - } + }, + "sequenceNumber": 3 }), - json_step_complete(5), - json_run_pass(6), + json_step_complete(4), + json_run_pass(5), ]; check_output_step(&expected, |step| { @@ -655,26 +655,25 @@ async fn test_step_with_measurement_series() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": - "series_1", + "measurementSeriesId": "series_0", "totalCount": 0 } - } + }, + "sequenceNumber": 4, }), - json_step_complete(6), - json_run_pass(7), + json_step_complete(5), + json_run_pass(6), ]; check_output_step(&expected, |step| { @@ -697,43 +696,43 @@ async fn test_step_with_multiple_measurement_series() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 0 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_2", + "measurementSeriesId": "series_1", "name": "name" } - } + }, + "sequenceNumber": 5 }), json!({ - "sequenceNumber": 7, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_2", + "measurementSeriesId": "series_1", "totalCount": 0 } - } + }, + "sequenceNumber": 6 }), - json_step_complete(8), - json_run_pass(9), + json_step_complete(7), + json_run_pass(8), ]; check_output_step(&expected, |step| { @@ -760,23 +759,23 @@ async fn test_step_with_measurement_series_with_details() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { "measurementSeriesId": "series_id", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesEnd": { "measurementSeriesId": "series_id", "totalCount": 0 } - } + }, + "sequenceNumber": 4 }), - json_step_complete(6), - json_run_pass(7), + json_step_complete(5), + json_run_pass(6), ]; check_output_step(&expected, |step| { @@ -800,7 +799,6 @@ async fn test_step_with_measurement_series_with_details_and_start_builder() -> R json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { "hardwareInfoId": { @@ -820,19 +818,20 @@ async fn test_step_with_measurement_series_with_details_and_start_builder() -> R "value": 30 }] } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesEnd": { "measurementSeriesId": "series_id", "totalCount": 0 } - } + }, + "sequenceNumber": 4 }), - json_step_complete(6), - json_run_pass(7), + json_step_complete(5), + json_run_pass(6), ]; check_output_step(&expected, |step| { @@ -862,35 +861,35 @@ async fn test_step_with_measurement_series_element() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesElement": { "index": 0, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 60 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 1 } - } + }, + "sequenceNumber": 5 }), - json_step_complete(7), - json_run_pass(8), + json_step_complete(6), + json_run_pass(7), ]; check_output_step(&expected, |step| { @@ -914,55 +913,55 @@ async fn test_step_with_measurement_series_element_index_no() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesElement": { "index": 0, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 60 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesElement": { "index": 1, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 70 } - } + }, + "sequenceNumber": 5 }), json!({ - "sequenceNumber": 7, "testStepArtifact": { "measurementSeriesElement": { "index": 2, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 80 } - } + }, + "sequenceNumber": 6 }), json!({ - "sequenceNumber": 8, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 3 } - } + }, + "sequenceNumber": 7 }), - json_step_complete(9), - json_run_pass(10), + json_step_complete(8), + json_run_pass(9), ]; check_output_step(&expected, |step| { @@ -989,38 +988,38 @@ async fn test_step_with_measurement_series_element_with_metadata() -> Result<()> json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3, }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesElement": { "index": 0, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "metadata": { "key": "value" }, "value": 60 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 1 } - } + }, + "sequenceNumber": 5 }), - json_step_complete(7), - json_run_pass(8), + json_step_complete(6), + json_run_pass(7), ]; check_output_step(&expected, |step| { @@ -1046,58 +1045,58 @@ async fn test_step_with_measurement_series_element_with_metadata_index_no() -> R json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesElement": { "index": 0, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "metadata": {"key": "value"}, "value": 60 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesElement": { "index": 1, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "metadata": {"key2": "value2"}, "value": 70 } - } + }, + "sequenceNumber": 5 }), json!({ - "sequenceNumber": 7, "testStepArtifact": { "measurementSeriesElement": { "index": 2, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "metadata": {"key3": "value3"}, "value": 80 } - } + }, + "sequenceNumber": 6 }), json!({ - "sequenceNumber": 8, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 3 } - } + }, + "sequenceNumber": 7 }), - json_step_complete(9), - json_run_pass(10), + json_step_complete(8), + json_run_pass(9), ]; check_output_step(&expected, |step| { @@ -1130,55 +1129,55 @@ async fn test_step_with_measurement_series_scope() -> Result<()> { json_run_default_start(), json_step_default_start(), json!({ - "sequenceNumber": 4, "testStepArtifact": { "measurementSeriesStart": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "name": "name" } - } + }, + "sequenceNumber": 3 }), json!({ - "sequenceNumber": 5, "testStepArtifact": { "measurementSeriesElement": { "index": 0, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 60 } - } + }, + "sequenceNumber": 4 }), json!({ - "sequenceNumber": 6, "testStepArtifact": { "measurementSeriesElement": { "index": 1, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 70 } - } + }, + "sequenceNumber": 5 }), json!({ - "sequenceNumber": 7, "testStepArtifact": { "measurementSeriesElement": { "index": 2, - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "value": 80 } - } + }, + "sequenceNumber": 6 }), json!({ - "sequenceNumber": 8, "testStepArtifact": { "measurementSeriesEnd": { - "measurementSeriesId": "series_1", + "measurementSeriesId": "series_0", "totalCount": 3 } - } + }, + "sequenceNumber": 7 }), - json_step_complete(9), - json_run_pass(10), + json_step_complete(8), + json_run_pass(9), ]; check_output_step(&expected, |step| { @@ -1217,9 +1216,9 @@ async fn test_config_builder_with_file() -> Result<()> { "symptom": "symptom" } }, - "sequenceNumber": 3 + "sequenceNumber": 2 }), - json_run_pass(4), + json_run_pass(3), ]; let fs = assert_fs::TempDir::new()?; @@ -1259,7 +1258,7 @@ async fn test_testrun_instantiation_with_new() -> Result<()> { let expected = [ json_schema_version(), json_run_default_start(), - json_run_pass(3), + json_run_pass(2), ]; let buffer: Arc>> = Arc::new(Mutex::new(vec![])); @@ -1279,7 +1278,6 @@ async fn test_testrun_metadata() -> Result<()> { let expected = [ json_schema_version(), json!({ - "sequenceNumber": 2, "testRunArtifact": { "testRunStart": { "dutInfo": { @@ -1290,9 +1288,10 @@ async fn test_testrun_metadata() -> Result<()> { "parameters": {}, "version": "1.0" } - } + }, + "sequenceNumber": 1 }), - json_run_pass(3), + json_run_pass(2), ]; check_output(&expected, |run_builder| async { @@ -1330,9 +1329,9 @@ async fn test_testrun_builder() -> Result<()> { "version": "1.0" } }, - "sequenceNumber": 2 + "sequenceNumber": 1 }), - json_run_pass(3), + json_run_pass(2), ]; check_output(&expected, |run_builder| async {