From 507f6284548d0af204980bc81e40fe23e00f0e3d Mon Sep 17 00:00:00 2001 From: Martynas Gurskas Date: Mon, 7 Aug 2023 11:51:12 +0300 Subject: [PATCH] Update moose tracker to v0.5.1 Notable changes include the removal of the `Phase` field in all events, the addition of `TransferDirection` and `protocol_version` fields Signed-off-by: Martynas Gurskas --- drop-analytics/src/file_impl.rs | 18 +++++----- drop-analytics/src/lib.rs | 21 ++++++----- drop-analytics/src/mock_impl.rs | 8 ++--- drop-analytics/src/moose_impl.rs | 43 +++++++++++----------- drop-transfer/src/protocol/mod.rs | 11 ++++++ drop-transfer/src/service.rs | 32 ++++++----------- drop-transfer/src/transfer.rs | 10 +++--- drop-transfer/src/ws/client/mod.rs | 8 +++-- drop-transfer/src/ws/client/v2.rs | 7 ++-- drop-transfer/src/ws/client/v4.rs | 7 ++-- drop-transfer/src/ws/client/v5.rs | 7 ++-- drop-transfer/src/ws/server/mod.rs | 5 +-- drop-transfer/src/ws/server/v2.rs | 7 ++-- drop-transfer/src/ws/server/v4.rs | 7 ++-- drop-transfer/src/ws/server/v5.rs | 7 ++-- test/scenarios.py | 57 +++++++----------------------- 16 files changed, 117 insertions(+), 138 deletions(-) diff --git a/drop-analytics/src/file_impl.rs b/drop-analytics/src/file_impl.rs index 4c13c3e..1363871 100644 --- a/drop-analytics/src/file_impl.rs +++ b/drop-analytics/src/file_impl.rs @@ -3,7 +3,7 @@ use std::{fs::File, io::Write, path::Path}; use serde::{Deserialize, Serialize}; use slog::Logger; -use crate::{FileInfo, Phase, TransferInfo, MOOSE_STATUS_SUCCESS, MOOSE_VALUE_NONE}; +use crate::{FileInfo, TransferDirection, TransferInfo, MOOSE_STATUS_SUCCESS, MOOSE_VALUE_NONE}; #[derive(Serialize, Deserialize)] #[serde(tag = "type")] @@ -20,7 +20,6 @@ enum MooseEventType { #[derive(Serialize, Deserialize)] struct InitEvent { - phase: Phase, result: i32, app_version: String, prod: bool, @@ -28,17 +27,17 @@ struct InitEvent { #[derive(Serialize, Deserialize)] struct BatchEvent { - phase: Phase, transfer_id: String, info: TransferInfo, + protocol_version: i32, } #[derive(Serialize, Deserialize)] struct FileEvent { - phase: Phase, result: i32, transfer_id: String, transfer_time: i32, + direction: TransferDirection, info: FileInfo, } @@ -86,14 +85,13 @@ impl FileImpl { } impl super::Moose for FileImpl { - fn service_quality_initialization_init(&self, res: Result<(), i32>, phase: crate::Phase) { + fn service_quality_initialization_init(&self, res: Result<(), i32>) { let result = match res { Ok(_) => MOOSE_STATUS_SUCCESS, Err(e) => e, }; let event = self.write_event(MooseEventType::Init(InitEvent { - phase, result, app_version: self.app_version.clone(), prod: self.prod, @@ -109,14 +107,14 @@ impl super::Moose for FileImpl { } fn service_quality_transfer_batch( &self, - phase: crate::Phase, transfer_id: String, info: TransferInfo, + protocol_version: i32, ) { let event = self.write_event(MooseEventType::Batch(BatchEvent { - phase, transfer_id, info, + protocol_version, })); if event.is_err() { @@ -130,9 +128,9 @@ impl super::Moose for FileImpl { fn service_quality_transfer_file( &self, res: Result<(), i32>, - phase: crate::Phase, transfer_id: String, transfer_time: i32, + direction: TransferDirection, info: Option, ) { let result = match res { @@ -141,10 +139,10 @@ impl super::Moose for FileImpl { }; let event = self.write_event(MooseEventType::File(FileEvent { - phase, result, transfer_id, transfer_time, + direction, info: info.unwrap_or_default(), })); diff --git a/drop-analytics/src/lib.rs b/drop-analytics/src/lib.rs index 8b9014f..6c28e12 100644 --- a/drop-analytics/src/lib.rs +++ b/drop-analytics/src/lib.rs @@ -19,11 +19,11 @@ const MOOSE_STATUS_SUCCESS: i32 = 0; const MOOSE_VALUE_NONE: i32 = -1; #[derive(Clone, Copy, Debug, Serialize, Deserialize)] -pub enum Phase { - #[serde(rename = "start")] - Start, - #[serde(rename = "end")] - End, +pub enum TransferDirection { + #[serde(rename = "upload")] + Upload, + #[serde(rename = "download")] + Download, } #[derive(Serialize, Deserialize)] @@ -43,14 +43,19 @@ pub struct FileInfo { } pub trait Moose: Send + Sync { - fn service_quality_initialization_init(&self, res: Result<(), i32>, phase: Phase); - fn service_quality_transfer_batch(&self, phase: Phase, transfer_id: String, info: TransferInfo); + fn service_quality_initialization_init(&self, res: Result<(), i32>); + fn service_quality_transfer_batch( + &self, + transfer_id: String, + info: TransferInfo, + protocol_version: i32, + ); fn service_quality_transfer_file( &self, res: Result<(), i32>, - phase: Phase, transfer_id: String, transfer_time: i32, + direction: TransferDirection, info: Option, ); diff --git a/drop-analytics/src/mock_impl.rs b/drop-analytics/src/mock_impl.rs index b7b70d3..bdb307e 100644 --- a/drop-analytics/src/mock_impl.rs +++ b/drop-analytics/src/mock_impl.rs @@ -1,24 +1,24 @@ -use crate::{FileInfo, TransferInfo}; +use crate::{FileInfo, TransferDirection, TransferInfo}; pub struct MockImpl; impl super::Moose for MockImpl { - fn service_quality_initialization_init(&self, _res: Result<(), i32>, _phase: crate::Phase) {} + fn service_quality_initialization_init(&self, _res: Result<(), i32>) {} fn service_quality_transfer_batch( &self, - _phase: crate::Phase, _transfer_id: String, _info: TransferInfo, + _protocol_version: i32, ) { } fn service_quality_transfer_file( &self, _res: Result<(), i32>, - _phase: crate::Phase, _transfer_id: String, _transfer_time: i32, + _direction: TransferDirection, _info: Option, ) { } diff --git a/drop-analytics/src/moose_impl.rs b/drop-analytics/src/moose_impl.rs index 9d04c25..0cc3e60 100644 --- a/drop-analytics/src/moose_impl.rs +++ b/drop-analytics/src/moose_impl.rs @@ -8,13 +8,13 @@ use mooselibdropapp as moose; use serde_json::Value; use slog::{error, info, warn, Logger}; -use crate::{FileInfo, TransferInfo, MOOSE_STATUS_SUCCESS, MOOSE_VALUE_NONE}; +use crate::{FileInfo, TransferDirection, TransferInfo, MOOSE_STATUS_SUCCESS, MOOSE_VALUE_NONE}; const DROP_MOOSE_APP_NAME: &str = "norddrop"; /// Version of the tracker used, should be updated everytime the tracker library /// is updated -const DROP_MOOSE_TRACKER_VERSION: &str = "0.4.0"; +const DROP_MOOSE_TRACKER_VERSION: &str = "0.5.1"; pub struct MooseImpl { logger: slog::Logger, @@ -22,11 +22,11 @@ pub struct MooseImpl { struct MooseInitCallback { logger: slog::Logger, - init_tx: SyncSender>, + init_tx: SyncSender>, } impl moose::InitCallback for MooseInitCallback { - fn on_init(&self, result_code: &Result) { + fn after_init(&self, result_code: &Result) { info!(self.logger, "[Moose] Init callback: {:?}", result_code); let _ = self.init_tx.send(*result_code); } @@ -125,34 +125,28 @@ impl Drop for MooseImpl { } impl super::Moose for MooseImpl { - fn service_quality_initialization_init(&self, res: Result<(), i32>, phase: super::Phase) { + fn service_quality_initialization_init(&self, res: Result<(), i32>) { let errno = match res { Ok(()) => MOOSE_STATUS_SUCCESS, Err(err) => err, }; - moose!( - self.logger, - send_serviceQuality_initialization_init, - errno, - phase.into() - ); + moose!(self.logger, send_serviceQuality_initialization_init, errno); } fn service_quality_transfer_batch( &self, - phase: super::Phase, transfer_id: String, info: TransferInfo, + protocol_version: i32, ) { moose!( self.logger, send_serviceQuality_transfer_batch, - phase.into(), - mooselibdropapp::LibdropappEventTrigger::LibdropappEventTriggerNone, info.extension_list, info.mime_type_list, info.file_count, + protocol_version, info.file_size_list, transfer_id, info.transfer_size_kb @@ -162,9 +156,9 @@ impl super::Moose for MooseImpl { fn service_quality_transfer_file( &self, res: Result<(), i32>, - phase: crate::Phase, transfer_id: String, transfer_time: i32, + direction: TransferDirection, info: Option, ) { let errno = match res { @@ -178,10 +172,9 @@ impl super::Moose for MooseImpl { self.logger, send_serviceQuality_transfer_file, errno, - phase.into(), - mooselibdropapp::LibdropappEventTrigger::LibdropappEventTriggerNone, info.extension, info.mime_type, + direction.into(), transfer_id, info.size_kb, transfer_time @@ -220,11 +213,15 @@ impl super::Moose for MooseImpl { } } -impl From for mooselibdropapp::LibdropappEventPhase { - fn from(value: super::Phase) -> Self { - match value { - crate::Phase::Start => mooselibdropapp::LibdropappEventPhase::LibdropappEventPhaseStart, - crate::Phase::End => mooselibdropapp::LibdropappEventPhase::LibdropappEventPhaseEnd, +impl From for moose::LibdropappTransferDirection { + fn from(direction: super::TransferDirection) -> Self { + match direction { + super::TransferDirection::Upload => { + moose::LibdropappTransferDirection::LibdropappTransferDirectionUpload + } + super::TransferDirection::Download => { + moose::LibdropappTransferDirection::LibdropappTransferDirectionDownload + } } } } @@ -251,9 +248,9 @@ fn populate_context(logger: &Logger) { if let Ok(foreign_context) = moose::fetch_specific_context(foreign_tracker_name) { let context = parse_foreign_context(&foreign_context); set_context_fields!( - set_context_device_brand, context.brand; set_context_device_type, context.x_type; set_context_device_model, context.model; + set_context_device_brand, context.brand; set_context_device_fp, context.fp; set_context_device_resolution, context.resolution; set_context_device_os, context.os; diff --git a/drop-transfer/src/protocol/mod.rs b/drop-transfer/src/protocol/mod.rs index 5a3cf02..077d865 100644 --- a/drop-transfer/src/protocol/mod.rs +++ b/drop-transfer/src/protocol/mod.rs @@ -18,3 +18,14 @@ pub enum Version { #[strum(serialize = "v5")] V5, } + +impl From for i32 { + fn from(version: Version) -> Self { + match version { + Version::V1 => 1, + Version::V2 => 2, + Version::V4 => 4, + Version::V5 => 5, + } + } +} diff --git a/drop-transfer/src/service.rs b/drop-transfer/src/service.rs index 1e68a8f..f677384 100644 --- a/drop-transfer/src/service.rs +++ b/drop-transfer/src/service.rs @@ -5,7 +5,7 @@ use std::{ sync::Arc, }; -use drop_analytics::Moose; +use drop_analytics::{Moose, TransferDirection}; use drop_config::DropConfig; use drop_storage::Storage; use slog::{debug, error, warn, Logger}; @@ -51,9 +51,9 @@ macro_rules! moose_try_file { Err(e) => { $moose.service_quality_transfer_file( Err(u32::from(&e) as i32), - drop_analytics::Phase::Start, $xfer_id.to_string(), 0, + TransferDirection::Download, $file_info, ); @@ -97,24 +97,14 @@ impl Service { }; let res = task(); - moose.service_quality_initialization_init(res.to_status(), drop_analytics::Phase::Start); + moose.service_quality_initialization_init(res.to_status()); res } pub async fn stop(self) -> Result<(), Error> { - let task = async { - self.stop.cancel(); - self.join_handle.await.map_err(|_| Error::ServiceStop) - }; - - let res = task.await; - - self.state - .moose - .service_quality_initialization_init(res.to_status(), drop_analytics::Phase::End); - - res + self.stop.cancel(); + self.join_handle.await.map_err(|_| Error::ServiceStop) } pub fn purge_transfers(&self, transfer_ids: Vec) -> Result<(), Error> { @@ -169,12 +159,6 @@ impl Service { } pub async fn send_request(&mut self, xfer: crate::Transfer) { - self.state.moose.service_quality_transfer_batch( - drop_analytics::Phase::Start, - xfer.id().to_string(), - xfer.info(), - ); - if let Err(err) = self.state.storage.insert_transfer(&xfer.storage_info()) { error!(self.logger, "Failed to insert transfer into storage: {err}",); } @@ -372,12 +356,16 @@ impl Service { xfer.files().values().for_each(|file| { let status: u32 = From::from(&Error::Canceled); + let direction = match xfer.is_incoming() { + true => TransferDirection::Download, + false => TransferDirection::Upload, + }; self.state.moose.service_quality_transfer_file( Err(status as _), - drop_analytics::Phase::End, xfer.id().to_string(), 0, + direction, file.info(), ) }); diff --git a/drop-transfer/src/transfer.rs b/drop-transfer/src/transfer.rs index 7f5adc8..40e5449 100644 --- a/drop-transfer/src/transfer.rs +++ b/drop-transfer/src/transfer.rs @@ -87,15 +87,17 @@ impl Transfer { } } - pub fn storage_info(&self) -> StorageInfo { + pub fn is_incoming(&self) -> bool { // TODO(msz): this insane check wouldn't be needed if we had two different // `Transfer` types - let is_incoming = match self.files.values().next() { + match self.files.values().next() { Some(files) => matches!(files.kind, FileKind::FileToRecv { .. }), None => true, // TODO(msz): Arbitrarily chosen, there is no way to differentiate here - }; + } + } - let files = if is_incoming { + pub fn storage_info(&self) -> StorageInfo { + let files = if self.is_incoming() { let files = self .files .values() diff --git a/drop-transfer/src/ws/client/mod.rs b/drop-transfer/src/ws/client/mod.rs index d2a3b0a..ce017fb 100644 --- a/drop-transfer/src/ws/client/mod.rs +++ b/drop-transfer/src/ws/client/mod.rs @@ -11,6 +11,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use futures::{SinkExt, StreamExt}; use hyper::{http::HeaderValue, StatusCode}; use slog::{debug, error, info, warn, Logger}; @@ -68,6 +69,9 @@ pub(crate) async fn run(state: Arc, xfer: crate::Transfer, logger: Logger }; info!(logger, "Client connected, using version: {ver}"); + state + .moose + .service_quality_transfer_batch(xfer.id().to_string(), xfer.info(), ver.into()); let ctx = RunContext { logger: &logger, @@ -361,9 +365,9 @@ async fn start_upload( state.moose.service_quality_transfer_file( Ok(()), - drop_analytics::Phase::Start, xfer.id().to_string(), 0, + TransferDirection::Upload, xfile.info(), ); @@ -391,9 +395,9 @@ async fn start_upload( state.moose.service_quality_transfer_file( result.to_status(), - drop_analytics::Phase::End, xfer.id().to_string(), transfer_time.elapsed().as_millis() as i32, + TransferDirection::Upload, xfile.info(), ); diff --git a/drop-transfer/src/ws/client/v2.rs b/drop-transfer/src/ws/client/v2.rs index c496036..def263d 100644 --- a/drop-transfer/src/ws/client/v2.rs +++ b/drop-transfer/src/ws/client/v2.rs @@ -6,6 +6,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use futures::SinkExt; use slog::{debug, error, warn}; use tokio::{sync::mpsc::Sender, task::JoinHandle}; @@ -130,9 +131,9 @@ impl HandlerLoop<'_, PING> { if let Some(file) = self.xfer.files().get(&file_id) { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -162,9 +163,9 @@ impl HandlerLoop<'_, PING> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -321,9 +322,9 @@ impl handler::HandlerLoop for HandlerLoop<'_, PING> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ) }); diff --git a/drop-transfer/src/ws/client/v4.rs b/drop-transfer/src/ws/client/v4.rs index 4f53493..c61221b 100644 --- a/drop-transfer/src/ws/client/v4.rs +++ b/drop-transfer/src/ws/client/v4.rs @@ -6,6 +6,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use futures::SinkExt; use slog::{debug, error, warn}; use tokio::{sync::mpsc::Sender, task::JoinHandle}; @@ -119,9 +120,9 @@ impl HandlerLoop<'_> { if let Some(file) = self.xfer.files().get(&file_id) { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -152,9 +153,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -371,9 +372,9 @@ impl handler::HandlerLoop for HandlerLoop<'_> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ) }); diff --git a/drop-transfer/src/ws/client/v5.rs b/drop-transfer/src/ws/client/v5.rs index 479f437..498554a 100644 --- a/drop-transfer/src/ws/client/v5.rs +++ b/drop-transfer/src/ws/client/v5.rs @@ -6,6 +6,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use futures::SinkExt; use slog::{debug, error, info, warn}; use tokio::{sync::mpsc::Sender, task::JoinHandle}; @@ -120,9 +121,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -181,9 +182,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ); @@ -400,9 +401,9 @@ impl handler::HandlerLoop for HandlerLoop<'_> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Upload, file.info(), ) }); diff --git a/drop-transfer/src/ws/server/mod.rs b/drop-transfer/src/ws/server/mod.rs index 20f9dda..1c730c1 100644 --- a/drop-transfer/src/ws/server/mod.rs +++ b/drop-transfer/src/ws/server/mod.rs @@ -14,6 +14,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use drop_auth::Nonce; use futures::{SinkExt, StreamExt}; use handler::{Downloader, HandlerInit, HandlerLoop, Request}; @@ -625,9 +626,9 @@ impl FileXferTask { state.moose.service_quality_transfer_file( Ok(()), - drop_analytics::Phase::Start, self.xfer.id().to_string(), 0, + TransferDirection::Download, self.file.info(), ); @@ -652,9 +653,9 @@ impl FileXferTask { state.moose.service_quality_transfer_file( result.to_status(), - drop_analytics::Phase::End, self.xfer.id().to_string(), transfer_time.elapsed().as_millis() as i32, + TransferDirection::Download, self.file.info(), ); diff --git a/drop-transfer/src/ws/server/v2.rs b/drop-transfer/src/ws/server/v2.rs index 7ca2e40..cf40d33 100644 --- a/drop-transfer/src/ws/server/v2.rs +++ b/drop-transfer/src/ws/server/v2.rs @@ -9,6 +9,7 @@ use std::{ }; use anyhow::Context; +use drop_analytics::TransferDirection; use drop_config::DropConfig; use futures::{SinkExt, StreamExt}; use sha1::Digest; @@ -218,9 +219,9 @@ impl HandlerLoop<'_, PING> { if let Some(file) = self.xfer.files().get(&file_id) { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -276,9 +277,9 @@ impl HandlerLoop<'_, PING> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -355,9 +356,9 @@ impl handler::HandlerLoop for HandlerLoop<'_, PING> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); }); diff --git a/drop-transfer/src/ws/server/v4.rs b/drop-transfer/src/ws/server/v4.rs index 701d3c1..10d5e62 100644 --- a/drop-transfer/src/ws/server/v4.rs +++ b/drop-transfer/src/ws/server/v4.rs @@ -11,6 +11,7 @@ use std::{ use anyhow::Context; use async_cell::sync::AsyncCell; +use drop_analytics::TransferDirection; use drop_config::DropConfig; use futures::{SinkExt, StreamExt}; use slog::{debug, error, info, warn}; @@ -276,9 +277,9 @@ impl HandlerLoop<'_> { if let Some(file) = self.xfer.files().get(&file_id) { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -337,9 +338,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -448,9 +449,9 @@ impl handler::HandlerLoop for HandlerLoop<'_> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); }); diff --git a/drop-transfer/src/ws/server/v5.rs b/drop-transfer/src/ws/server/v5.rs index 5fa8feb..c99f72c 100644 --- a/drop-transfer/src/ws/server/v5.rs +++ b/drop-transfer/src/ws/server/v5.rs @@ -11,6 +11,7 @@ use std::{ use anyhow::Context; use async_cell::sync::AsyncCell; +use drop_analytics::TransferDirection; use drop_config::DropConfig; use futures::{SinkExt, StreamExt}; use slog::{debug, error, info, warn}; @@ -304,9 +305,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -371,9 +372,9 @@ impl HandlerLoop<'_> { self.state.moose.service_quality_transfer_file( Err(drop_core::Status::FileRejected as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); @@ -482,9 +483,9 @@ impl handler::HandlerLoop for HandlerLoop<'_> { .for_each(|file| { self.state.moose.service_quality_transfer_file( Err(u32::from(&crate::Error::Canceled) as i32), - drop_analytics::Phase::End, self.xfer.id().to_string(), 0, + TransferDirection::Download, file.info(), ); }); diff --git a/test/scenarios.py b/test/scenarios.py index e1a5868..dccc23d 100644 --- a/test/scenarios.py +++ b/test/scenarios.py @@ -85,14 +85,12 @@ [ """{ "type": "init", - "phase": "start", "result": 0, "app_version": "*", "prod": false }""", """{ "type": "batch", - "phase": "start", "transfer_id": "*", "info": { "mime_type_list": "unknown", @@ -100,14 +98,15 @@ "file_size_list": "10240", "transfer_size_kb": 10240, "file_count": 1 - } + }, + "protocol_version": 5 }""", """{ "type": "file", - "phase": "start", "result": 0, "transfer_id": "*", "transfer_time": "*", + "direction": "upload", "info": { "mime_type": "unknown", "extension": "unknown", @@ -116,22 +115,15 @@ }""", """{ "type": "file", - "phase": "end", "result": 0, "transfer_id": "*", "transfer_time": "*", + "direction": "upload", "info": { "mime_type": "unknown", "extension": "unknown", "size_kb": 10240 } - }""", - """{ - "type": "init", - "phase": "end", - "result": 0, - "app_version": "*", - "prod": false }""", ] ), @@ -217,14 +209,12 @@ [ """{ "type": "init", - "phase": "start", "result": 0, "app_version": "*", "prod": false }""", """{ "type": "file", - "phase": "start", "result": 0, "transfer_id": "*", "transfer_time": "*", @@ -236,10 +226,10 @@ }""", """{ "type": "file", - "phase": "end", "result": 0, "transfer_id": "*", "transfer_time": "*", + "direction": "download", "info": { "mime_type": "", "extension": "", @@ -248,22 +238,15 @@ }""", """{ "type": "file", - "phase": "end", "result": 1, "transfer_id": "*", "transfer_time": "*", + "direction": "download", "info": { "mime_type": "", "extension": "", "size_kb": 0 } - }""", - """{ - "type": "init", - "phase": "end", - "result": 0, - "app_version": "*", - "prod": false }""", ] ), @@ -3321,14 +3304,12 @@ [ """{ "type": "init", - "phase": "start", "result": 0, "app_version": "*", "prod": false }""", """{ "type": "batch", - "phase": "start", "transfer_id": "*", "info": { "mime_type_list": "unknown", @@ -3336,14 +3317,15 @@ "file_size_list": "10240", "transfer_size_kb": 10240, "file_count": 1 - } + }, + "protocol_version": 5 }""", """{ "type": "file", - "phase": "start", "result": 0, "transfer_id": "*", "transfer_time": "*", + "direction": "upload", "info": { "mime_type": "unknown", "extension": "unknown", @@ -3352,22 +3334,15 @@ }""", """{ "type": "file", - "phase": "end", "result": 28, "transfer_id": "*", "transfer_time": "*", + "direction": "upload", "info": { "mime_type": "unknown", "extension": "unknown", "size_kb": 10240 } - }""", - """{ - "type": "init", - "phase": "end", - "result": 0, - "app_version": "*", - "prod": false }""", ] ), @@ -3448,17 +3423,16 @@ [ """{ "type": "init", - "phase": "start", "result": 0, "app_version": "*", "prod": false }""", """{ "type": "file", - "phase": "start", "result": 0, "transfer_id": "*", "transfer_time": "*", + "direction": "download", "info": { "mime_type": "", "extension": "", @@ -3467,22 +3441,15 @@ }""", """{ "type": "file", - "phase": "end", "result": 1, "transfer_id": "*", "transfer_time": "*", + "direction": "download", "info": { "mime_type": "", "extension": "", "size_kb": 0 } - }""", - """{ - "type": "init", - "phase": "end", - "result": 0, - "app_version": "*", - "prod": false }""", ] ),