mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-23 21:26:26 +00:00
Do so that meilisearch versions get downloaded
This commit is contained in:
@ -8,19 +8,41 @@ use crate::{
|
||||
client::Client,
|
||||
command::{run_commands, Command},
|
||||
},
|
||||
test::TestDeriveArgs,
|
||||
test::{versions::expand_assets_with_versions, TestDeriveArgs},
|
||||
};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum VersionOrLatest {
|
||||
Version(Version),
|
||||
Latest,
|
||||
}
|
||||
|
||||
impl<'a> Deserialize<'a> for VersionOrLatest {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'a>,
|
||||
{
|
||||
let s: &str = Deserialize::deserialize(deserializer)?;
|
||||
|
||||
if s.eq_ignore_ascii_case("latest") {
|
||||
Ok(VersionOrLatest::Latest)
|
||||
} else {
|
||||
let version = Version::parse(s).map_err(serde::de::Error::custom)?;
|
||||
Ok(VersionOrLatest::Version(version))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum CommandOrUpgrade {
|
||||
Command(Command),
|
||||
Upgrade { upgrade: Version },
|
||||
Upgrade { upgrade: VersionOrLatest },
|
||||
}
|
||||
|
||||
enum CommandOrUpgradeVec {
|
||||
Commands(Vec<Command>),
|
||||
Upgrade(Version),
|
||||
Upgrade(VersionOrLatest),
|
||||
}
|
||||
|
||||
/// A test workload.
|
||||
@ -34,17 +56,15 @@ pub struct TestWorkload {
|
||||
|
||||
impl TestWorkload {
|
||||
pub async fn run(
|
||||
&self,
|
||||
&mut self,
|
||||
args: &TestDeriveArgs,
|
||||
assets_client: &Client,
|
||||
meili_client: &Client,
|
||||
) -> anyhow::Result<()> {
|
||||
// Fetch assets
|
||||
fetch_assets(assets_client, &self.assets, &args.common.asset_folder).await?;
|
||||
|
||||
// Group commands between upgrades
|
||||
let mut commands_or_upgrade = Vec::new();
|
||||
let mut current_commands = Vec::new();
|
||||
let mut all_versions = vec![args.initial_version.clone()];
|
||||
for command_or_upgrade in &self.commands {
|
||||
match command_or_upgrade {
|
||||
CommandOrUpgrade::Command(command) => current_commands.push(command.clone()),
|
||||
@ -54,10 +74,17 @@ impl TestWorkload {
|
||||
current_commands = Vec::new();
|
||||
}
|
||||
commands_or_upgrade.push(CommandOrUpgradeVec::Upgrade(upgrade.clone()));
|
||||
if let VersionOrLatest::Version(upgrade) = upgrade {
|
||||
all_versions.push(upgrade.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch assets
|
||||
expand_assets_with_versions(&mut self.assets, &all_versions).await?;
|
||||
fetch_assets(assets_client, &self.assets, &args.common.asset_folder).await?;
|
||||
|
||||
for command_or_upgrade in commands_or_upgrade {
|
||||
match command_or_upgrade {
|
||||
CommandOrUpgradeVec::Commands(commands) => {
|
||||
|
Reference in New Issue
Block a user