mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-03-31 16:23:08 +00:00
Drop unused source readiness policy
This commit is contained in:
parent
3f8e287c68
commit
3ea3fffd1f
@ -6,7 +6,6 @@ use tracing::{debug, info};
|
|||||||
use super::{
|
use super::{
|
||||||
Application, AttachSource, DeploymentPolicy, DynError, ExternalNodeSource,
|
Application, AttachSource, DeploymentPolicy, DynError, ExternalNodeSource,
|
||||||
HttpReadinessRequirement, NodeControlCapability, ObservabilityCapability, ScenarioSources,
|
HttpReadinessRequirement, NodeControlCapability, ObservabilityCapability, ScenarioSources,
|
||||||
SourceReadinessPolicy,
|
|
||||||
builder_ops::CoreBuilderAccess,
|
builder_ops::CoreBuilderAccess,
|
||||||
expectation::Expectation,
|
expectation::Expectation,
|
||||||
runtime::{
|
runtime::{
|
||||||
@ -44,7 +43,6 @@ pub struct Scenario<E: Application, Caps = ()> {
|
|||||||
expectation_cooldown: Duration,
|
expectation_cooldown: Duration,
|
||||||
deployment_policy: DeploymentPolicy,
|
deployment_policy: DeploymentPolicy,
|
||||||
sources: ScenarioSources,
|
sources: ScenarioSources,
|
||||||
source_readiness_policy: SourceReadinessPolicy,
|
|
||||||
source_orchestration_plan: SourceOrchestrationPlan,
|
source_orchestration_plan: SourceOrchestrationPlan,
|
||||||
capabilities: Caps,
|
capabilities: Caps,
|
||||||
}
|
}
|
||||||
@ -58,7 +56,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
|
|||||||
expectation_cooldown: Duration,
|
expectation_cooldown: Duration,
|
||||||
deployment_policy: DeploymentPolicy,
|
deployment_policy: DeploymentPolicy,
|
||||||
sources: ScenarioSources,
|
sources: ScenarioSources,
|
||||||
source_readiness_policy: SourceReadinessPolicy,
|
|
||||||
source_orchestration_plan: SourceOrchestrationPlan,
|
source_orchestration_plan: SourceOrchestrationPlan,
|
||||||
capabilities: Caps,
|
capabilities: Caps,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
@ -70,7 +67,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
|
|||||||
expectation_cooldown,
|
expectation_cooldown,
|
||||||
deployment_policy,
|
deployment_policy,
|
||||||
sources,
|
sources,
|
||||||
source_readiness_policy,
|
|
||||||
source_orchestration_plan,
|
source_orchestration_plan,
|
||||||
capabilities,
|
capabilities,
|
||||||
}
|
}
|
||||||
@ -116,15 +112,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
|
|||||||
self.deployment_policy
|
self.deployment_policy
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
|
||||||
/// Selected source readiness policy.
|
|
||||||
///
|
|
||||||
/// This is currently reserved for future mixed-source orchestration and
|
|
||||||
/// does not change runtime behavior yet.
|
|
||||||
pub const fn source_readiness_policy(&self) -> SourceReadinessPolicy {
|
|
||||||
self.source_readiness_policy
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn sources(&self) -> &ScenarioSources {
|
pub fn sources(&self) -> &ScenarioSources {
|
||||||
&self.sources
|
&self.sources
|
||||||
@ -151,7 +138,6 @@ pub struct Builder<E: Application, Caps = ()> {
|
|||||||
expectation_cooldown: Option<Duration>,
|
expectation_cooldown: Option<Duration>,
|
||||||
deployment_policy: DeploymentPolicy,
|
deployment_policy: DeploymentPolicy,
|
||||||
sources: ScenarioSources,
|
sources: ScenarioSources,
|
||||||
source_readiness_policy: SourceReadinessPolicy,
|
|
||||||
capabilities: Caps,
|
capabilities: Caps,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,11 +242,6 @@ macro_rules! impl_common_builder_methods {
|
|||||||
self.map_core_builder(|builder| builder.with_external_node(node))
|
self.map_core_builder(|builder| builder.with_external_node(node))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
|
||||||
pub fn with_source_readiness_policy(self, policy: SourceReadinessPolicy) -> Self {
|
|
||||||
self.map_core_builder(|builder| builder.with_source_readiness_policy(policy))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn with_external_only_sources(self) -> Self {
|
pub fn with_external_only_sources(self) -> Self {
|
||||||
self.map_core_builder(|builder| builder.with_external_only_sources())
|
self.map_core_builder(|builder| builder.with_external_only_sources())
|
||||||
@ -350,7 +331,6 @@ impl<E: Application, Caps: Default> Builder<E, Caps> {
|
|||||||
expectation_cooldown: None,
|
expectation_cooldown: None,
|
||||||
deployment_policy: DeploymentPolicy::default(),
|
deployment_policy: DeploymentPolicy::default(),
|
||||||
sources: ScenarioSources::default(),
|
sources: ScenarioSources::default(),
|
||||||
source_readiness_policy: SourceReadinessPolicy::default(),
|
|
||||||
capabilities: Caps::default(),
|
capabilities: Caps::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -453,7 +433,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
|
|||||||
expectation_cooldown,
|
expectation_cooldown,
|
||||||
deployment_policy,
|
deployment_policy,
|
||||||
sources,
|
sources,
|
||||||
source_readiness_policy,
|
|
||||||
..
|
..
|
||||||
} = self;
|
} = self;
|
||||||
|
|
||||||
@ -466,7 +445,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
|
|||||||
expectation_cooldown,
|
expectation_cooldown,
|
||||||
deployment_policy,
|
deployment_policy,
|
||||||
sources,
|
sources,
|
||||||
source_readiness_policy,
|
|
||||||
capabilities,
|
capabilities,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -579,16 +557,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
|
||||||
/// Configure source readiness policy metadata.
|
|
||||||
///
|
|
||||||
/// This is currently reserved for future mixed-source orchestration and
|
|
||||||
/// does not change runtime behavior yet.
|
|
||||||
pub fn with_source_readiness_policy(mut self, policy: SourceReadinessPolicy) -> Self {
|
|
||||||
self.source_readiness_policy = policy;
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn with_external_only_sources(mut self) -> Self {
|
pub fn with_external_only_sources(mut self) -> Self {
|
||||||
self.sources = self.sources.into_external_only();
|
self.sources = self.sources.into_external_only();
|
||||||
@ -612,8 +580,7 @@ impl<E: Application, Caps> Builder<E, Caps> {
|
|||||||
let descriptors = parts.resolve_deployment()?;
|
let descriptors = parts.resolve_deployment()?;
|
||||||
let run_plan = parts.run_plan();
|
let run_plan = parts.run_plan();
|
||||||
let run_metrics = RunMetrics::new(run_plan.duration);
|
let run_metrics = RunMetrics::new(run_plan.duration);
|
||||||
let source_orchestration_plan =
|
let source_orchestration_plan = build_source_orchestration_plan(parts.sources())?;
|
||||||
build_source_orchestration_plan(parts.sources(), parts.source_readiness_policy)?;
|
|
||||||
|
|
||||||
initialize_components(
|
initialize_components(
|
||||||
&descriptors,
|
&descriptors,
|
||||||
@ -640,7 +607,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
|
|||||||
run_plan.expectation_cooldown,
|
run_plan.expectation_cooldown,
|
||||||
parts.deployment_policy,
|
parts.deployment_policy,
|
||||||
parts.sources,
|
parts.sources,
|
||||||
parts.source_readiness_policy,
|
|
||||||
source_orchestration_plan,
|
source_orchestration_plan,
|
||||||
parts.capabilities,
|
parts.capabilities,
|
||||||
))
|
))
|
||||||
@ -661,7 +627,6 @@ struct BuilderParts<E: Application, Caps> {
|
|||||||
expectation_cooldown: Option<Duration>,
|
expectation_cooldown: Option<Duration>,
|
||||||
deployment_policy: DeploymentPolicy,
|
deployment_policy: DeploymentPolicy,
|
||||||
sources: ScenarioSources,
|
sources: ScenarioSources,
|
||||||
source_readiness_policy: SourceReadinessPolicy,
|
|
||||||
capabilities: Caps,
|
capabilities: Caps,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -676,7 +641,6 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
|
|||||||
expectation_cooldown,
|
expectation_cooldown,
|
||||||
deployment_policy,
|
deployment_policy,
|
||||||
sources,
|
sources,
|
||||||
source_readiness_policy,
|
|
||||||
capabilities,
|
capabilities,
|
||||||
..
|
..
|
||||||
} = builder;
|
} = builder;
|
||||||
@ -690,7 +654,6 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
|
|||||||
expectation_cooldown,
|
expectation_cooldown,
|
||||||
deployment_policy,
|
deployment_policy,
|
||||||
sources,
|
sources,
|
||||||
source_readiness_policy,
|
|
||||||
capabilities,
|
capabilities,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -715,10 +678,8 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
|
|||||||
|
|
||||||
fn build_source_orchestration_plan(
|
fn build_source_orchestration_plan(
|
||||||
sources: &ScenarioSources,
|
sources: &ScenarioSources,
|
||||||
readiness_policy: SourceReadinessPolicy,
|
|
||||||
) -> Result<SourceOrchestrationPlan, ScenarioBuildError> {
|
) -> Result<SourceOrchestrationPlan, ScenarioBuildError> {
|
||||||
SourceOrchestrationPlan::try_from_sources(sources, readiness_policy)
|
SourceOrchestrationPlan::try_from_sources(sources).map_err(source_plan_error_to_build_error)
|
||||||
.map_err(source_plan_error_to_build_error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn source_plan_error_to_build_error(error: SourceOrchestrationPlanError) -> ScenarioBuildError {
|
fn source_plan_error_to_build_error(error: SourceOrchestrationPlanError) -> ScenarioBuildError {
|
||||||
|
|||||||
@ -51,7 +51,7 @@ pub use runtime::{
|
|||||||
wait_for_http_ports_with_host_and_requirement, wait_for_http_ports_with_requirement,
|
wait_for_http_ports_with_host_and_requirement, wait_for_http_ports_with_requirement,
|
||||||
wait_http_readiness, wait_until_stable,
|
wait_http_readiness, wait_until_stable,
|
||||||
};
|
};
|
||||||
pub use sources::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
|
pub use sources::{AttachSource, ExternalNodeSource, ScenarioSources};
|
||||||
pub use workload::Workload;
|
pub use workload::Workload;
|
||||||
|
|
||||||
pub use crate::env::Application;
|
pub use crate::env::Application;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
use crate::scenario::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
|
use crate::scenario::{AttachSource, ExternalNodeSource, ScenarioSources};
|
||||||
|
|
||||||
/// Explicit descriptor for managed node sourcing.
|
/// Explicit descriptor for managed node sourcing.
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||||
@ -33,7 +33,6 @@ pub(crate) enum SourceOrchestrationMode {
|
|||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||||
pub struct SourceOrchestrationPlan {
|
pub struct SourceOrchestrationPlan {
|
||||||
mode: SourceOrchestrationMode,
|
mode: SourceOrchestrationMode,
|
||||||
readiness_policy: SourceReadinessPolicy,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Validation failure while building orchestration plan from sources.
|
/// Validation failure while building orchestration plan from sources.
|
||||||
@ -46,14 +45,10 @@ pub enum SourceOrchestrationPlanError {
|
|||||||
impl SourceOrchestrationPlan {
|
impl SourceOrchestrationPlan {
|
||||||
pub fn try_from_sources(
|
pub fn try_from_sources(
|
||||||
sources: &ScenarioSources,
|
sources: &ScenarioSources,
|
||||||
readiness_policy: SourceReadinessPolicy,
|
|
||||||
) -> Result<Self, SourceOrchestrationPlanError> {
|
) -> Result<Self, SourceOrchestrationPlanError> {
|
||||||
let mode = mode_from_sources(sources);
|
let mode = mode_from_sources(sources);
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self { mode })
|
||||||
mode,
|
|
||||||
readiness_policy,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
@ -74,14 +69,13 @@ impl SourceOrchestrationPlan {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{SourceOrchestrationMode, SourceOrchestrationPlan};
|
use super::{SourceOrchestrationMode, SourceOrchestrationPlan};
|
||||||
use crate::scenario::{AttachSource, ScenarioSources, SourceReadinessPolicy};
|
use crate::scenario::{AttachSource, ScenarioSources};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn attached_sources_are_planned() {
|
fn attached_sources_are_planned() {
|
||||||
let sources = ScenarioSources::attached(AttachSource::compose(vec!["node-0".to_string()]));
|
let sources = ScenarioSources::attached(AttachSource::compose(vec!["node-0".to_string()]));
|
||||||
let plan =
|
let plan = SourceOrchestrationPlan::try_from_sources(&sources)
|
||||||
SourceOrchestrationPlan::try_from_sources(&sources, SourceReadinessPolicy::AllReady)
|
.expect("attached sources should build a source orchestration plan");
|
||||||
.expect("attached sources should build a source orchestration plan");
|
|
||||||
|
|
||||||
assert!(matches!(
|
assert!(matches!(
|
||||||
plan.mode(),
|
plan.mode(),
|
||||||
|
|||||||
@ -41,10 +41,7 @@ pub enum SourceResolveError {
|
|||||||
pub fn build_source_orchestration_plan<E: Application, Caps>(
|
pub fn build_source_orchestration_plan<E: Application, Caps>(
|
||||||
scenario: &Scenario<E, Caps>,
|
scenario: &Scenario<E, Caps>,
|
||||||
) -> Result<SourceOrchestrationPlan, SourceOrchestrationPlanError> {
|
) -> Result<SourceOrchestrationPlan, SourceOrchestrationPlanError> {
|
||||||
SourceOrchestrationPlan::try_from_sources(
|
SourceOrchestrationPlan::try_from_sources(scenario.sources())
|
||||||
scenario.sources(),
|
|
||||||
scenario.source_readiness_policy(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resolves runtime source nodes via unified providers from orchestration plan.
|
/// Resolves runtime source nodes via unified providers from orchestration plan.
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
mod model;
|
mod model;
|
||||||
|
|
||||||
pub use model::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
|
pub use model::{AttachSource, ExternalNodeSource, ScenarioSources};
|
||||||
|
|||||||
@ -70,19 +70,6 @@ impl ExternalNodeSource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Planned readiness strategy for mixed managed/attached/external sources.
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Default)]
|
|
||||||
pub enum SourceReadinessPolicy {
|
|
||||||
/// Phase 1 default: require every known node to pass readiness checks.
|
|
||||||
#[default]
|
|
||||||
AllReady,
|
|
||||||
/// Optional relaxed policy for large/partial environments.
|
|
||||||
Quorum,
|
|
||||||
/// Future policy for per-source constraints (for example managed minimum
|
|
||||||
/// plus overall quorum).
|
|
||||||
SourceAware,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Source model that makes invalid managed+attached combinations
|
/// Source model that makes invalid managed+attached combinations
|
||||||
/// unrepresentable by type.
|
/// unrepresentable by type.
|
||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user