add some more checks
All checks were successful
Rust/sat-rs/pipeline/pr-main This commit looks good

This commit is contained in:
Robin Müller 2024-03-11 18:00:16 +01:00
parent 4afc360873
commit d3ad6cf96a
Signed by: muellerr
GPG Key ID: A649FB78196E3849

View File

@ -74,7 +74,7 @@ pub struct ActiveActionRequest {
pub trait ActiveRequestMapProvider: Default { pub trait ActiveRequestMapProvider: Default {
fn insert(&mut self, request_id: &RequestId, request: ActiveActionRequest); fn insert(&mut self, request_id: &RequestId, request: ActiveActionRequest);
fn get(&self, request_id: RequestId) -> Option<ActiveActionRequest>; fn get(&self, request_id: RequestId) -> Option<&ActiveActionRequest>;
fn get_mut(&mut self, request_id: RequestId) -> Option<&mut ActiveActionRequest>; fn get_mut(&mut self, request_id: RequestId) -> Option<&mut ActiveActionRequest>;
fn remove(&mut self, request_id: RequestId) -> bool; fn remove(&mut self, request_id: RequestId) -> bool;
@ -255,15 +255,12 @@ pub mod std_mod {
pub struct DefaultActiveRequestMap(HashMap<RequestId, ActiveActionRequest>); pub struct DefaultActiveRequestMap(HashMap<RequestId, ActiveActionRequest>);
impl ActiveRequestMapProvider for DefaultActiveRequestMap { impl ActiveRequestMapProvider for DefaultActiveRequestMap {
// type Iter = hashbrown::hash_map::Iter<'a, RequestId, ActiveActionRequest>;
// type IterMut = hashbrown::hash_map::IterMut<'a, RequestId, ActiveActionRequest>;
fn insert(&mut self, request_id: &RequestId, request: ActiveActionRequest) { fn insert(&mut self, request_id: &RequestId, request: ActiveActionRequest) {
self.0.insert(*request_id, request); self.0.insert(*request_id, request);
} }
fn get(&self, request_id: RequestId) -> Option<ActiveActionRequest> { fn get(&self, request_id: RequestId) -> Option<&ActiveActionRequest> {
self.0.get(&request_id).cloned() self.0.get(&request_id)
} }
fn get_mut(&mut self, request_id: RequestId) -> Option<&mut ActiveActionRequest> { fn get_mut(&mut self, request_id: RequestId) -> Option<&mut ActiveActionRequest> {
@ -359,6 +356,10 @@ pub mod std_mod {
); );
} }
pub fn request_active(&self, request_id: RequestId) -> bool {
self.active_requests.get(request_id).is_some()
}
#[cfg(feature = "std")] #[cfg(feature = "std")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))] #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
pub fn update_time_from_now(&mut self) -> Result<(), SystemTimeError> { pub fn update_time_from_now(&mut self) -> Result<(), SystemTimeError> {
@ -695,6 +696,7 @@ mod tests {
request_id: RequestId, request_id: RequestId,
_action_id: ActionId, _action_id: ActionId,
) -> VerificationToken<TcStateStarted> { ) -> VerificationToken<TcStateStarted> {
assert!(!self.handler.request_active(request_id));
// let action_req = ActionRequest::new(action_id, ActionRequestVariant::NoData); // let action_req = ActionRequest::new(action_id, ActionRequestVariant::NoData);
let token = self.add_tc_with_req_id(request_id.into()); let token = self.add_tc_with_req_id(request_id.into());
let token = self let token = self
@ -719,7 +721,7 @@ mod tests {
.verif_reporter .verif_reporter
.verification_info(&verification::RequestId::from(request_id)) .verification_info(&verification::RequestId::from(request_id))
.expect("no verification info found"); .expect("no verification info found");
self.assert_request_completion_common(&verif_info, step, true) self.assert_request_completion_common(request_id, &verif_info, step, true);
} }
pub fn assert_request_completion_failure( pub fn assert_request_completion_failure(
@ -733,13 +735,14 @@ mod tests {
.verif_reporter .verif_reporter
.verification_info(&verification::RequestId::from(request_id)) .verification_info(&verification::RequestId::from(request_id))
.expect("no verification info found"); .expect("no verification info found");
self.assert_request_completion_common(&verif_info, step, false); self.assert_request_completion_common(request_id, &verif_info, step, false);
assert_eq!(verif_info.fail_enum.unwrap(), fail_enum.raw() as u64); assert_eq!(verif_info.fail_enum.unwrap(), fail_enum.raw() as u64);
assert_eq!(verif_info.failure_data.unwrap(), fail_data); assert_eq!(verif_info.failure_data.unwrap(), fail_data);
} }
pub fn assert_request_completion_common( pub fn assert_request_completion_common(
&self, &self,
request_id: RequestId,
verif_info: &VerificationStatus, verif_info: &VerificationStatus,
step: Option<u16>, step: Option<u16>,
completion_success: bool, completion_success: bool,
@ -753,6 +756,7 @@ mod tests {
verif_info.completed.expect("request is not completed"), verif_info.completed.expect("request is not completed"),
completion_success completion_success
); );
assert!(!self.handler.request_active(request_id));
} }
pub fn assert_request_step_failure(&self, step: u16, request_id: RequestId) { pub fn assert_request_step_failure(&self, step: u16, request_id: RequestId) {
@ -764,22 +768,33 @@ mod tests {
assert!(!verif_info.step_status.unwrap()); assert!(!verif_info.step_status.unwrap());
assert_eq!(step, verif_info.step); assert_eq!(step, verif_info.step);
} }
pub fn add_routed_request(
&mut self,
request_id: verification::RequestId,
action_id: ActionId,
token: VerificationToken<TcStateStarted>,
timeout: Duration,
) {
if self.handler.request_active(request_id.into()) {
panic!("request already present");
}
self.handler
.add_routed_request(request_id, action_id, token, timeout);
if !self.handler.request_active(request_id.into()) {
panic!("request should be active now");
}
}
delegate! { delegate! {
to self.handler { to self.handler {
pub fn request_active(&self, request_id: RequestId) -> bool;
pub fn handle_action_reply( pub fn handle_action_reply(
&mut self, &mut self,
action_reply_with_ids: ActionReplyPusWithIds, action_reply_with_ids: ActionReplyPusWithIds,
time_stamp: &[u8], time_stamp: &[u8],
) -> Result<(), EcssTmtcError>; ) -> Result<(), EcssTmtcError>;
pub fn add_routed_request(
&mut self,
request_id: verification::RequestId,
action_id: ActionId,
token: VerificationToken<TcStateStarted>,
timeout: Duration,
);
pub fn update_time_from_now(&mut self) -> Result<(), SystemTimeError>; pub fn update_time_from_now(&mut self) -> Result<(), SystemTimeError>;
@ -865,6 +880,7 @@ mod tests {
token, token,
Duration::from_millis(1), Duration::from_millis(1),
); );
assert!(reply_testbench.request_active(request_id));
let action_reply = ActionReplyPusWithIds { let action_reply = ActionReplyPusWithIds {
request_id, request_id,
action_id, action_id,