mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 13:31:10 +00:00
Use background tasks properly in candidate-validation (#4002)
* refactor: candidate-validation background tasks * fix tests * fmt
This commit is contained in:
committed by
GitHub
parent
dc13782f9d
commit
bd734ff61b
@@ -19,6 +19,7 @@ use assert_matches::assert_matches;
|
||||
use futures::executor;
|
||||
use polkadot_node_subsystem::messages::AllMessages;
|
||||
use polkadot_node_subsystem_test_helpers as test_helpers;
|
||||
use polkadot_node_subsystem_util::reexports::SubsystemContext;
|
||||
use polkadot_primitives::v1::{HeadData, UpwardMessage};
|
||||
use sp_core::testing::TaskExecutor;
|
||||
use sp_keyring::Sr25519Keyring;
|
||||
@@ -52,11 +53,15 @@ fn correctly_checks_included_assumption() {
|
||||
candidate.para_id = para_id;
|
||||
|
||||
let pool = TaskExecutor::new();
|
||||
let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone());
|
||||
let (mut ctx, mut ctx_handle) =
|
||||
test_helpers::make_subsystem_context::<AllMessages, _>(pool.clone());
|
||||
|
||||
let (check_fut, check_result) =
|
||||
check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included)
|
||||
.remote_handle();
|
||||
let (check_fut, check_result) = check_assumption_validation_data(
|
||||
ctx.sender(),
|
||||
&candidate,
|
||||
OccupiedCoreAssumption::Included,
|
||||
)
|
||||
.remote_handle();
|
||||
|
||||
let test_fut = async move {
|
||||
assert_matches!(
|
||||
@@ -89,7 +94,7 @@ fn correctly_checks_included_assumption() {
|
||||
}
|
||||
);
|
||||
|
||||
assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => {
|
||||
assert_matches!(check_result.await, AssumptionCheckOutcome::Matches(o, v) => {
|
||||
assert_eq!(o, validation_data);
|
||||
assert_eq!(v, validation_code);
|
||||
});
|
||||
@@ -114,11 +119,15 @@ fn correctly_checks_timed_out_assumption() {
|
||||
candidate.para_id = para_id;
|
||||
|
||||
let pool = TaskExecutor::new();
|
||||
let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone());
|
||||
let (mut ctx, mut ctx_handle) =
|
||||
test_helpers::make_subsystem_context::<AllMessages, _>(pool.clone());
|
||||
|
||||
let (check_fut, check_result) =
|
||||
check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::TimedOut)
|
||||
.remote_handle();
|
||||
let (check_fut, check_result) = check_assumption_validation_data(
|
||||
ctx.sender(),
|
||||
&candidate,
|
||||
OccupiedCoreAssumption::TimedOut,
|
||||
)
|
||||
.remote_handle();
|
||||
|
||||
let test_fut = async move {
|
||||
assert_matches!(
|
||||
@@ -151,7 +160,7 @@ fn correctly_checks_timed_out_assumption() {
|
||||
}
|
||||
);
|
||||
|
||||
assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => {
|
||||
assert_matches!(check_result.await, AssumptionCheckOutcome::Matches(o, v) => {
|
||||
assert_eq!(o, validation_data);
|
||||
assert_eq!(v, validation_code);
|
||||
});
|
||||
@@ -174,11 +183,15 @@ fn check_is_bad_request_if_no_validation_data() {
|
||||
candidate.para_id = para_id;
|
||||
|
||||
let pool = TaskExecutor::new();
|
||||
let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone());
|
||||
let (mut ctx, mut ctx_handle) =
|
||||
test_helpers::make_subsystem_context::<AllMessages, _>(pool.clone());
|
||||
|
||||
let (check_fut, check_result) =
|
||||
check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included)
|
||||
.remote_handle();
|
||||
let (check_fut, check_result) = check_assumption_validation_data(
|
||||
ctx.sender(),
|
||||
&candidate,
|
||||
OccupiedCoreAssumption::Included,
|
||||
)
|
||||
.remote_handle();
|
||||
|
||||
let test_fut = async move {
|
||||
assert_matches!(
|
||||
@@ -198,7 +211,7 @@ fn check_is_bad_request_if_no_validation_data() {
|
||||
}
|
||||
);
|
||||
|
||||
assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest);
|
||||
assert_matches!(check_result.await, AssumptionCheckOutcome::BadRequest);
|
||||
};
|
||||
|
||||
let test_fut = future::join(test_fut, check_fut);
|
||||
@@ -218,11 +231,15 @@ fn check_is_bad_request_if_no_validation_code() {
|
||||
candidate.para_id = para_id;
|
||||
|
||||
let pool = TaskExecutor::new();
|
||||
let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone());
|
||||
let (mut ctx, mut ctx_handle) =
|
||||
test_helpers::make_subsystem_context::<AllMessages, _>(pool.clone());
|
||||
|
||||
let (check_fut, check_result) =
|
||||
check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::TimedOut)
|
||||
.remote_handle();
|
||||
let (check_fut, check_result) = check_assumption_validation_data(
|
||||
ctx.sender(),
|
||||
&candidate,
|
||||
OccupiedCoreAssumption::TimedOut,
|
||||
)
|
||||
.remote_handle();
|
||||
|
||||
let test_fut = async move {
|
||||
assert_matches!(
|
||||
@@ -255,7 +272,7 @@ fn check_is_bad_request_if_no_validation_code() {
|
||||
}
|
||||
);
|
||||
|
||||
assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest);
|
||||
assert_matches!(check_result.await, AssumptionCheckOutcome::BadRequest);
|
||||
};
|
||||
|
||||
let test_fut = future::join(test_fut, check_fut);
|
||||
@@ -274,11 +291,15 @@ fn check_does_not_match() {
|
||||
candidate.para_id = para_id;
|
||||
|
||||
let pool = TaskExecutor::new();
|
||||
let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone());
|
||||
let (mut ctx, mut ctx_handle) =
|
||||
test_helpers::make_subsystem_context::<AllMessages, _>(pool.clone());
|
||||
|
||||
let (check_fut, check_result) =
|
||||
check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included)
|
||||
.remote_handle();
|
||||
let (check_fut, check_result) = check_assumption_validation_data(
|
||||
ctx.sender(),
|
||||
&candidate,
|
||||
OccupiedCoreAssumption::Included,
|
||||
)
|
||||
.remote_handle();
|
||||
|
||||
let test_fut = async move {
|
||||
assert_matches!(
|
||||
@@ -298,7 +319,7 @@ fn check_does_not_match() {
|
||||
}
|
||||
);
|
||||
|
||||
assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::DoesNotMatch);
|
||||
assert_matches!(check_result.await, AssumptionCheckOutcome::DoesNotMatch);
|
||||
};
|
||||
|
||||
let test_fut = future::join(test_fut, check_fut);
|
||||
@@ -365,7 +386,6 @@ fn candidate_validation_ok_is_ok() {
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
|
||||
assert_matches!(v, ValidationResult::Valid(outputs, used_validation_data) => {
|
||||
@@ -408,7 +428,6 @@ fn candidate_validation_bad_return_is_invalid() {
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
|
||||
assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::ExecutionError(_)));
|
||||
@@ -443,8 +462,7 @@ fn candidate_validation_timeout_is_internal_error() {
|
||||
descriptor,
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap();
|
||||
));
|
||||
|
||||
assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::Timeout)));
|
||||
}
|
||||
@@ -479,7 +497,6 @@ fn candidate_validation_code_mismatch_is_invalid() {
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
|
||||
assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::CodeHashMismatch));
|
||||
@@ -518,8 +535,7 @@ fn compressed_code_works() {
|
||||
descriptor,
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap();
|
||||
));
|
||||
|
||||
assert_matches!(v, Ok(ValidationResult::Valid(_, _)));
|
||||
}
|
||||
@@ -558,8 +574,7 @@ fn code_decompression_failure_is_invalid() {
|
||||
descriptor,
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap();
|
||||
));
|
||||
|
||||
assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure)));
|
||||
}
|
||||
@@ -599,8 +614,7 @@ fn pov_decompression_failure_is_invalid() {
|
||||
descriptor,
|
||||
Arc::new(pov),
|
||||
&Default::default(),
|
||||
))
|
||||
.unwrap();
|
||||
));
|
||||
|
||||
assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user