feat: allowing to activate sticky sessions on router (#546)

This commit is contained in:
Benjamin
2022-01-07 16:25:53 +01:00
committed by GitHub
parent c2c4dae6cc
commit 62a609aaab
29 changed files with 2059 additions and 1154 deletions

2
Cargo.lock generated
View File

@@ -3244,7 +3244,7 @@ dependencies = [
"passwords",
"qovery-engine",
"rand 0.7.3",
"reqwest 0.10.10",
"reqwest 0.11.4",
"retry",
"scaleway_api_rs",
"serde",

View File

@@ -24,6 +24,16 @@ metadata:
ingress.kubernetes.io/ssl-redirect: "true"
#nginx.ingress.kubernetes.io/enable-cors: "true"
#nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-csrftoken"
{%- if sticky_sessions_enabled == true %}
# https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-secure: "true"
nginx.ingress.kubernetes.io/session-cookie-name: "INGRESSCOOKIE_QOVERY"
nginx.ingress.kubernetes.io/session-cookie-max-age: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-expires: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-samesite: "Lax"
{%- endif %}
spec:
tls:
{%- if custom_domains|length > 0 %}

View File

@@ -24,6 +24,16 @@ metadata:
ingress.kubernetes.io/ssl-redirect: "true"
#nginx.ingress.kubernetes.io/enable-cors: "true"
#nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-csrftoken"
{%- if sticky_sessions_enabled == true %}
# https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-secure: "true"
nginx.ingress.kubernetes.io/session-cookie-name: "INGRESSCOOKIE_QOVERY"
nginx.ingress.kubernetes.io/session-cookie-max-age: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-expires: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-samesite: "Lax"
{%- endif %}
spec:
tls:
{%- if custom_domains|length > 0 %}

View File

@@ -24,6 +24,16 @@ metadata:
ingress.kubernetes.io/ssl-redirect: "true"
#nginx.ingress.kubernetes.io/enable-cors: "true"
#nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-csrftoken"
{%- if sticky_sessions_enabled == true %}
# https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-secure: "true"
nginx.ingress.kubernetes.io/session-cookie-name: "INGRESSCOOKIE_QOVERY"
nginx.ingress.kubernetes.io/session-cookie-max-age: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-expires: "85400" # 1 day
nginx.ingress.kubernetes.io/session-cookie-samesite: "Lax"
{%- endif %}
spec:
tls:
{%- if custom_domains|length > 0 %}

View File

@@ -20,6 +20,7 @@ pub struct Router {
action: Action,
default_domain: String,
custom_domains: Vec<CustomDomain>,
sticky_sessions_enabled: bool,
routes: Vec<Route>,
listeners: Listeners,
}
@@ -33,6 +34,7 @@ impl Router {
default_domain: &str,
custom_domains: Vec<CustomDomain>,
routes: Vec<Route>,
sticky_sessions_enabled: bool,
listeners: Listeners,
) -> Self {
Router {
@@ -42,6 +44,7 @@ impl Router {
action,
default_domain: default_domain.to_string(),
custom_domains,
sticky_sessions_enabled,
routes,
listeners,
}
@@ -212,6 +215,9 @@ impl Service for Router {
};
context.insert("spec_acme_server", lets_encrypt_url);
// Nginx
context.insert("sticky_sessions_enabled", &self.sticky_sessions_enabled);
Ok(context)
}

View File

@@ -20,6 +20,7 @@ pub struct Router {
name: String,
default_domain: String,
custom_domains: Vec<CustomDomain>,
sticky_sessions_enabled: bool,
routes: Vec<Route>,
listeners: Listeners,
}
@@ -33,6 +34,7 @@ impl Router {
default_domain: &str,
custom_domains: Vec<CustomDomain>,
routes: Vec<Route>,
sticky_sessions_enabled: bool,
listeners: Listeners,
) -> Self {
Router {
@@ -42,6 +44,7 @@ impl Router {
action,
default_domain: default_domain.to_string(),
custom_domains,
sticky_sessions_enabled,
routes,
listeners,
}
@@ -228,7 +231,8 @@ impl Service for Router {
};
context.insert("spec_acme_server", lets_encrypt_url);
eprintln!("{}", context.clone().into_json());
// Nginx
context.insert("sticky_sessions_enabled", &self.sticky_sessions_enabled);
Ok(context)
}

View File

@@ -20,6 +20,7 @@ pub struct Router {
name: String,
default_domain: String,
custom_domains: Vec<CustomDomain>,
sticky_sessions_enabled: bool,
routes: Vec<Route>,
listeners: Listeners,
}
@@ -33,6 +34,7 @@ impl Router {
default_domain: &str,
custom_domains: Vec<CustomDomain>,
routes: Vec<Route>,
sticky_sessions_enabled: bool,
listeners: Listeners,
) -> Router {
Router {
@@ -42,6 +44,7 @@ impl Router {
action,
default_domain: default_domain.to_string(),
custom_domains,
sticky_sessions_enabled,
routes,
listeners,
}
@@ -179,6 +182,9 @@ impl Service for Router {
};
context.insert("spec_acme_server", lets_encrypt_url);
// Nginx
context.insert("sticky_sessions_enabled", &self.sticky_sessions_enabled);
Ok(context)
}

View File

@@ -204,8 +204,8 @@ pub struct Application {
pub max_instances: u32,
pub start_timeout_in_seconds: u32,
pub storage: Vec<Storage>,
// Key is a String, Value is a base64 encoded String
// Use BTreeMap to get Hash trait which is not available on HashMap
/// Key is a String, Value is a base64 encoded String
/// Use BTreeMap to get Hash trait which is not available on HashMap
pub environment_vars: BTreeMap<String, String>,
}
@@ -546,6 +546,10 @@ pub struct Router {
pub action: Action,
pub default_domain: String,
pub public_port: u16,
#[serde(default)]
/// sticky_sessions_enabled: enables sticky session for the request to come to the same
/// pod replica that was responding to the request before
pub sticky_sessions_enabled: bool,
pub custom_domains: Vec<CustomDomain>,
pub routes: Vec<Route>,
}
@@ -586,6 +590,7 @@ impl Router {
self.default_domain.as_str(),
custom_domains,
routes,
self.sticky_sessions_enabled,
listeners,
));
Some(router)
@@ -600,6 +605,7 @@ impl Router {
self.default_domain.as_str(),
custom_domains,
routes,
self.sticky_sessions_enabled,
listeners,
));
Some(router)
@@ -613,6 +619,7 @@ impl Router {
self.default_domain.as_str(),
custom_domains,
routes,
self.sticky_sessions_enabled,
listeners,
));
Some(router)

View File

@@ -3271,7 +3271,7 @@ dependencies = [
"passwords",
"qovery-engine",
"rand 0.7.3",
"reqwest 0.10.8",
"reqwest 0.11.3",
"retry",
"scaleway_api_rs",
"serde",

View File

@@ -19,7 +19,7 @@ serde = "1.0"
serde_json = "1.0.57"
serde_derive = "1.0"
curl = "0.4.34"
reqwest = { version = "0.10.8", features = ["blocking"] }
reqwest = { version = "0.11.3", features = ["blocking", "json"] }
tracing = "0.1"
tracing-subscriber = "0.2"
retry = "1.0.0"

View File

@@ -185,7 +185,6 @@ pub enum ClusterTestType {
pub fn environment_3_apps_3_routers_3_databases(
context: &Context,
organization_id: &str,
test_domain: &str,
database_instance_type: &str,
database_disk_type: &str,
@@ -230,7 +229,7 @@ pub fn environment_3_apps_3_routers_3_databases(
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
applications: vec![
Application {
@@ -379,37 +378,40 @@ pub fn environment_3_apps_3_routers_3_databases(
id: generate_id(),
name: "main".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/app1".to_string(),
application_name: app_name_1.clone(),
}],
sticky_sessions_enabled: false,
},
Router {
id: generate_id(),
name: "second-router".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/app2".to_string(),
application_name: app_name_2.clone(),
}],
sticky_sessions_enabled: false,
},
Router {
id: generate_id(),
name: "third-router".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/app3".to_string(),
application_name: app_name_3.clone(),
}],
sticky_sessions_enabled: false,
},
],
databases: vec![
@@ -484,19 +486,24 @@ pub fn environment_3_apps_3_routers_3_databases(
}
}
pub fn working_minimal_environment(context: &Context, organization_id: &str, test_domain: &str) -> Environment {
pub fn working_minimal_environment(context: &Context, test_domain: &str) -> Environment {
let suffix = generate_id();
let application_id = generate_id();
let application_name = format!("{}-{}", "simple-app".to_string(), &suffix);
let router_id = generate_id();
let router_name = "main".to_string();
let application_domain = format!("{}.{}", application_id, test_domain);
let application_domain = format!(
"{}.{}.{}",
application_id,
context.cluster_id().to_string(),
test_domain
);
Environment {
execution_id: context.execution_id().to_string(),
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
applications: vec![Application {
id: application_id,
@@ -542,15 +549,26 @@ pub fn working_minimal_environment(context: &Context, organization_id: &str, tes
path: "/".to_string(),
application_name: format!("{}-{}", "simple-app".to_string(), &suffix),
}],
sticky_sessions_enabled: false,
}],
databases: vec![],
clone_from_environment_id: None,
}
}
pub fn environment_only_http_server_router_with_sticky_session(context: &Context, test_domain: &str) -> Environment {
let mut env = environment_only_http_server_router(context, test_domain.clone());
for mut router in &mut env.routers {
router.sticky_sessions_enabled = true;
}
env.clone()
}
pub fn environnement_2_app_2_routers_1_psql(
context: &Context,
organization_id: &str,
test_domain: &str,
database_instance_type: &str,
database_disk_type: &str,
@@ -573,7 +591,7 @@ pub fn environnement_2_app_2_routers_1_psql(
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
databases: vec![Database {
kind: DatabaseKind::Postgresql,
@@ -696,33 +714,35 @@ pub fn environnement_2_app_2_routers_1_psql(
id: generate_id(),
name: "main".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), &test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/".to_string(),
application_name: application_name1.to_string(),
}],
sticky_sessions_enabled: false,
},
Router {
id: generate_id(),
name: "second-router".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), &test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/coco".to_string(),
application_name: application_name2.to_string(),
}],
sticky_sessions_enabled: false,
},
],
clone_from_environment_id: None,
}
}
pub fn non_working_environment(context: &Context, organization_id: &str, test_domain: &str) -> Environment {
let mut environment = working_minimal_environment(context, organization_id, test_domain);
pub fn non_working_environment(context: &Context, test_domain: &str) -> Environment {
let mut environment = working_minimal_environment(context, test_domain);
environment.applications = environment
.applications
@@ -740,14 +760,14 @@ pub fn non_working_environment(context: &Context, organization_id: &str, test_do
// echo app environment is an environment that contains http-echo container (forked from hashicorp)
// ECHO_TEXT var will be the content of the application root path
pub fn echo_app_environment(context: &Context, organization_id: &str, test_domain: &str) -> Environment {
pub fn echo_app_environment(context: &Context, test_domain: &str) -> Environment {
let suffix = generate_id();
Environment {
execution_id: context.execution_id().to_string(),
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
applications: vec![Application {
id: generate_id(),
@@ -789,27 +809,28 @@ pub fn echo_app_environment(context: &Context, organization_id: &str, test_domai
id: generate_id(),
name: "main".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/".to_string(),
application_name: format!("{}-{}", "echo-app".to_string(), &suffix),
}],
sticky_sessions_enabled: false,
}],
databases: vec![],
clone_from_environment_id: None,
}
}
pub fn environment_only_http_server(context: &Context, organization_id: &str) -> Environment {
pub fn environment_only_http_server(context: &Context) -> Environment {
let suffix = generate_id();
Environment {
execution_id: context.execution_id().to_string(),
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
applications: vec![Application {
id: generate_id(),
@@ -851,14 +872,14 @@ pub fn environment_only_http_server(context: &Context, organization_id: &str) ->
}
}
pub fn environment_only_http_server_router(context: &Context, organization_id: &str, test_domain: &str) -> Environment {
pub fn environment_only_http_server_router(context: &Context, test_domain: &str) -> Environment {
let suffix = generate_id();
Environment {
execution_id: context.execution_id().to_string(),
id: generate_id(),
owner_id: generate_id(),
project_id: generate_id(),
organization_id: organization_id.to_string(),
organization_id: context.organization_id().to_string(),
action: Action::Create,
applications: vec![Application {
id: generate_id(),
@@ -898,19 +919,53 @@ pub fn environment_only_http_server_router(context: &Context, organization_id: &
id: generate_id(),
name: "main".to_string(),
action: Action::Create,
default_domain: format!("{}.{}", generate_id(), test_domain),
default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id(), test_domain),
public_port: 443,
custom_domains: vec![],
routes: vec![Route {
path: "/".to_string(),
application_name: format!("{}-{}", "mini-http".to_string(), &suffix),
}],
sticky_sessions_enabled: false,
}],
databases: vec![],
clone_from_environment_id: None,
}
}
/// Test if stick session are activated on given routers via cookie.
pub fn routers_sessions_are_sticky(routers: Vec<Router>) -> bool {
let mut is_ok = true;
let http_client = reqwest::blocking::Client::builder()
.danger_accept_invalid_certs(true) // this test ignores certificate validity (not its purpose)
.build()
.expect("Cannot build reqwest client");
for router in routers.iter() {
for route in router.routes.iter() {
let http_request_result = http_client
.get(format!("https://{}{}", router.default_domain, route.path))
.send();
if http_request_result.is_err() {
return false;
}
let http_response = http_request_result.expect("cannot retrieve HTTP request result");
is_ok &= match http_response.headers().get("Set-Cookie") {
None => false,
Some(value) => match value.to_str() {
Err(_) => false,
Ok(s) => s.contains("INGRESSCOOKIE_QOVERY=") && s.contains("Max-Age=85400"),
},
};
}
}
is_ok
}
pub fn test_db(
context: Context,
logger: Box<dyn Logger>,
@@ -934,10 +989,14 @@ pub fn test_db(
let database_password = generate_id();
let db_kind_str = db_kind.name().to_string();
let database_host = format!(
"{}-{}.{}",
"{}-{}.{}.{}",
db_kind_str.clone(),
generate_id(),
secrets.clone().DEFAULT_TEST_DOMAIN.unwrap()
context.cluster_id(),
secrets
.clone()
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
);
let dyn_db_fqdn = match is_public.clone() {
true => database_host.clone(),
@@ -1018,26 +1077,11 @@ pub fn test_db(
TransactionResult::UnrecoverableError(_, _) => assert!(false),
}
let kube_cluster_id = match provider_kind {
Kind::Aws => secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set"),
Kind::Do => secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
Kind::Scw => secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set"),
};
match database_mode.clone() {
DatabaseMode::CONTAINER => {
match get_pvc(
context.clone(),
provider_kind.clone(),
kube_cluster_id.as_str(),
environment.clone(),
secrets.clone(),
) {
@@ -1049,8 +1093,8 @@ pub fn test_db(
};
match get_svc(
context.clone(),
provider_kind.clone(),
kube_cluster_id.as_str(),
environment.clone(),
secrets.clone(),
) {
@@ -1074,12 +1118,7 @@ pub fn test_db(
};
}
DatabaseMode::MANAGED => {
match get_svc(
provider_kind.clone(),
kube_cluster_id.as_str(),
environment.clone(),
secrets.clone(),
) {
match get_svc(context, provider_kind.clone(), environment.clone(), secrets.clone()) {
Ok(svc) => {
let service = svc
.items
@@ -1126,16 +1165,12 @@ pub fn get_environment_test_kubernetes<'a>(
match provider_kind {
Kind::Aws => {
let cluster_id = secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_KUBE_TEST_CLUSTER_ID is not set");
k = Box::new(
EKS::new(
context.clone(),
cluster_id.as_str(),
context.cluster_id(),
uuid::Uuid::new_v4(),
format!("qovery-{}", cluster_id.as_str()).as_str(),
format!("qovery-{}", context.cluster_id()).as_str(),
AWS_KUBERNETES_VERSION,
secrets
.AWS_DEFAULT_REGION
@@ -1152,16 +1187,12 @@ pub fn get_environment_test_kubernetes<'a>(
);
}
Kind::Do => {
let cluster_id = secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set");
k = Box::new(
DOKS::new(
context.clone(),
cluster_id.to_string(),
context.cluster_id().to_string(),
uuid::Uuid::new_v4(),
format!("qovery-{}", cluster_id),
format!("qovery-{}", context.cluster_id()),
DO_KUBERNETES_VERSION.to_string(),
Region::from_str(
secrets
@@ -1174,23 +1205,19 @@ pub fn get_environment_test_kubernetes<'a>(
cloud_provider,
dns_provider,
DO::kubernetes_nodes(),
DO::kubernetes_cluster_options(secrets.clone(), Option::from(cluster_id.to_string())),
DO::kubernetes_cluster_options(secrets.clone(), Option::from(context.cluster_id().to_string())),
logger,
)
.unwrap(),
);
}
Kind::Scw => {
let cluster_id = secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set");
k = Box::new(
Kapsule::new(
context.clone(),
cluster_id.to_string(),
context.cluster_id().to_string(),
uuid::Uuid::new_v4(),
format!("qovery-{}", cluster_id),
format!("qovery-{}", context.cluster_id()),
SCW_KUBERNETES_VERSION.to_string(),
Zone::from_str(
secrets

View File

@@ -56,12 +56,7 @@ use qovery_engine::object_storage::ObjectStorage;
use qovery_engine::runtime::block_on;
use time::Instant;
pub fn context() -> Context {
// TODO(benjaminch): Migrate this
context_full("id-for-test", "name-for-test")
}
pub fn context_full(organization_id: &str, cluster_id: &str) -> Context {
pub fn context(organization_id: &str, cluster_id: &str) -> Context {
let organization_id = organization_id.to_string();
let cluster_id = cluster_id.to_string();
let execution_id = execution_id();
@@ -481,16 +476,17 @@ fn curl_path(path: &str) -> bool {
}
pub fn kubernetes_config_path(
context: Context,
provider_kind: Kind,
workspace_directory: &str,
kubernetes_cluster_id: &str,
secrets: FuncTestsSecrets,
) -> Result<String, SimpleError> {
let kubernetes_config_bucket_name = format!("qovery-kubeconfigs-{}", kubernetes_cluster_id);
let kubernetes_config_object_key = format!("{}.yaml", kubernetes_cluster_id);
let kubernetes_config_file_path = format!("{}/kubernetes_config_{}", workspace_directory, kubernetes_cluster_id);
let kubernetes_config_bucket_name = format!("qovery-kubeconfigs-{}", context.cluster_id());
let kubernetes_config_object_key = format!("{}.yaml", context.cluster_id());
let kubernetes_config_file_path = format!("{}/kubernetes_config_{}", workspace_directory, context.cluster_id());
let _ = get_kubernetes_config_file(
context,
provider_kind,
kubernetes_config_bucket_name,
kubernetes_config_object_key,
@@ -502,6 +498,7 @@ pub fn kubernetes_config_path(
}
fn get_kubernetes_config_file<P>(
context: Context,
provider_kind: Kind,
kubernetes_config_bucket_name: String,
kubernetes_config_object_key: String,
@@ -540,7 +537,7 @@ where
match Region::from_str(region_raw.as_str()) {
Ok(region) => {
let spaces = Spaces::new(
context(),
context.clone(),
"fake".to_string(),
"fake".to_string(),
secrets
@@ -792,8 +789,8 @@ fn aws_s3_get_object(
}
pub fn is_pod_restarted_env(
context: Context,
provider_kind: Kind,
kube_cluster_id: &str,
environment_check: Environment,
pod_to_check: &str,
secrets: FuncTestsSecrets,
@@ -804,7 +801,7 @@ pub fn is_pod_restarted_env(
&environment_check.id.clone(),
);
let kubernetes_config = kubernetes_config_path(provider_kind.clone(), "/tmp", kube_cluster_id, secrets.clone());
let kubernetes_config = kubernetes_config_path(context, provider_kind.clone(), "/tmp", secrets.clone());
match kubernetes_config {
Ok(path) => {
@@ -827,10 +824,10 @@ pub fn is_pod_restarted_env(
}
pub fn get_pods(
context: Context,
provider_kind: Kind,
environment_check: Environment,
pod_to_check: &str,
kube_cluster_id: &str,
secrets: FuncTestsSecrets,
) -> Result<KubernetesList<KubernetesPod>, SimpleError> {
let namespace_name = format!(
@@ -839,7 +836,7 @@ pub fn get_pods(
&environment_check.id.clone(),
);
let kubernetes_config = kubernetes_config_path(provider_kind.clone(), "/tmp", kube_cluster_id, secrets.clone());
let kubernetes_config = kubernetes_config_path(context, provider_kind.clone(), "/tmp", secrets.clone());
cmd::kubectl::kubectl_exec_get_pods(
kubernetes_config.unwrap().as_str(),
@@ -900,8 +897,8 @@ pub fn generate_cluster_id(region: &str) -> String {
}
pub fn get_pvc(
context: Context,
provider_kind: Kind,
kube_cluster_id: &str,
environment_check: Environment,
secrets: FuncTestsSecrets,
) -> Result<PVC, SimpleError> {
@@ -911,7 +908,7 @@ pub fn get_pvc(
&environment_check.id.clone(),
);
let kubernetes_config = kubernetes_config_path(provider_kind.clone(), "/tmp", kube_cluster_id, secrets.clone());
let kubernetes_config = kubernetes_config_path(context, provider_kind.clone(), "/tmp", secrets.clone());
match kubernetes_config {
Ok(path) => {
@@ -929,8 +926,8 @@ pub fn get_pvc(
}
pub fn get_svc(
context: Context,
provider_kind: Kind,
kube_cluster_id: &str,
environment_check: Environment,
secrets: FuncTestsSecrets,
) -> Result<SVC, SimpleError> {
@@ -940,7 +937,7 @@ pub fn get_svc(
&environment_check.id.clone(),
);
let kubernetes_config = kubernetes_config_path(provider_kind.clone(), "/tmp", kube_cluster_id, secrets.clone());
let kubernetes_config = kubernetes_config_path(context, provider_kind.clone(), "/tmp", secrets.clone());
match kubernetes_config {
Ok(path) => {

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
extern crate test_utilities;
use self::test_utilities::common::Infrastructure;
use self::test_utilities::common::{routers_sessions_are_sticky, Infrastructure};
use self::test_utilities::utilities::{
engine_run_test, generate_id, get_pods, get_pvc, is_pod_restarted_env, logger, FuncTestsSecrets,
};
@@ -28,16 +28,22 @@ fn deploy_a_working_environment_with_no_router_on_aws_eks() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -79,16 +85,22 @@ fn deploy_a_working_environment_and_pause_it_eks() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -106,14 +118,10 @@ fn deploy_a_working_environment_and_pause_it_eks() {
};
let ret = get_pods(
context.clone(),
Kind::Aws,
environment.clone(),
selector.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -127,29 +135,16 @@ fn deploy_a_working_environment_and_pause_it_eks() {
// Check that we have actually 0 pods running for this app
let ret = get_pods(
context.clone(),
Kind::Aws,
environment.clone(),
selector.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
assert_eq!(ret.unwrap().items.is_empty(), true);
let kubernetes_config = kubernetes_config_path(
Kind::Aws,
"/tmp",
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_ACCESS_KEY_ID is not set")
.as_str(),
secrets.clone(),
);
let kubernetes_config = kubernetes_config_path(context.clone(), Kind::Aws, "/tmp", secrets.clone());
let mut pdbs = kubernetes_get_all_pdbs(
kubernetes_config.as_ref().expect("Unable to get kubeconfig").clone(),
vec![
@@ -192,14 +187,10 @@ fn deploy_a_working_environment_and_pause_it_eks() {
};
let ret = get_pods(
context.clone(),
Kind::Aws,
environment.clone(),
selector.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -264,17 +255,23 @@ fn deploy_a_not_working_environment_with_no_router_on_aws_eks() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::non_working_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -316,16 +313,22 @@ fn build_with_buildpacks_and_deploy_a_working_environment() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -385,16 +388,22 @@ fn build_worker_with_buildpacks_and_deploy_a_working_environment() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -413,8 +422,8 @@ fn build_worker_with_buildpacks_and_deploy_a_working_environment() {
publicly_accessible: true,
protocol: Protocol::HTTP,
}];
app.commit_id = "4f35f4ab3e98426c5a3eaa91e788ff8ab466f19a".to_string();
app.branch = "buildpack-process".to_string();
app.commit_id = "f59237d603829636138e2f22a0549e33b5dd6e1f".to_string();
app.branch = "simple-node-app".to_string();
app.dockerfile_path = None;
app
})
@@ -454,16 +463,22 @@ fn deploy_a_working_environment_with_domain() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_deletion = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -503,18 +518,24 @@ fn deploy_a_working_environment_with_storage_on_aws_eks() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let logger = logger();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -551,16 +572,7 @@ fn deploy_a_working_environment_with_storage_on_aws_eks() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Aws,
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Aws, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -590,19 +602,25 @@ fn redeploy_same_app_with_ebs() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let logger = logger();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -642,16 +660,7 @@ fn redeploy_same_app_with_ebs() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Aws,
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Aws, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -661,12 +670,8 @@ fn redeploy_same_app_with_ebs() {
let app_name = format!("{}-0", &environment_check1.applications[0].name);
let (_, number) = is_pod_restarted_env(
context.clone(),
Kind::Aws,
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
environment_check1,
app_name.clone().as_str(),
secrets.clone(),
@@ -679,12 +684,8 @@ fn redeploy_same_app_with_ebs() {
};
let (_, number2) = is_pod_restarted_env(
context.clone(),
Kind::Aws,
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
environment_check2,
app_name.as_str(),
secrets.clone(),
@@ -711,21 +712,26 @@ fn deploy_a_not_working_environment_and_after_working_environment() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
// let mut context_envs = generate_contexts_and_environments(3, test_utilities::aws::working_minimal_environment);
let logger = logger();
let context = context();
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -793,15 +799,21 @@ fn deploy_ok_fail_fail_ok_environment() {
// working env
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -896,16 +908,22 @@ fn deploy_a_non_working_environment_with_no_failover_on_aws_eks() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::non_working_environment(
&context,
let logger = logger();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
@@ -946,43 +964,31 @@ fn deploy_a_non_working_environment_with_a_working_failover_on_aws_eks() {
let _enter = span.enter();
// context for non working environment
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let logger = logger();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::working_minimal_environment(&context, test_domain.as_str());
// context for deletion
let context_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::working_minimal_environment(
&context_deletion,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::working_minimal_environment(&context_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
let ea_delete = EnvironmentAction::Environment(delete_env.clone());
let ea = EnvironmentAction::EnvironmentWithFailover(environment.clone(), failover_environment.clone());
@@ -1010,56 +1016,39 @@ fn deploy_2_non_working_environments_with_2_working_failovers_on_aws_eks() {
init();
let logger = logger();
let secrets = FuncTestsSecrets::new();
// context for non working environment
let context_failover_1 = context();
let context_failover_1 = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let context_failover_2 = context_failover_1.clone_not_same_execution_id();
let context_first_fail_deployment_1 = context_failover_1.clone_not_same_execution_id();
let context_second_fail_deployment_2 = context_failover_1.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let failover_environment_1 = test_utilities::common::echo_app_environment(
&context_failover_1,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let fail_app_1 = test_utilities::common::non_working_environment(
&context_first_fail_deployment_1,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let mut failover_environment_2 = test_utilities::common::echo_app_environment(
&context_failover_2,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let fail_app_2 = test_utilities::common::non_working_environment(
&context_second_fail_deployment_2,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let failover_environment_1 =
test_utilities::common::echo_app_environment(&context_failover_1, test_domain.as_str());
let fail_app_1 =
test_utilities::common::non_working_environment(&context_first_fail_deployment_1, test_domain.as_str());
let mut failover_environment_2 =
test_utilities::common::echo_app_environment(&context_failover_2, test_domain.as_str());
let fail_app_2 =
test_utilities::common::non_working_environment(&context_second_fail_deployment_2, test_domain.as_str());
failover_environment_2.applications = failover_environment_2
.applications
@@ -1074,15 +1063,7 @@ fn deploy_2_non_working_environments_with_2_working_failovers_on_aws_eks() {
// context for deletion
let context_deletion = context_failover_1.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::echo_app_environment(
&context_deletion,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let mut delete_env = test_utilities::common::echo_app_environment(&context_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
let ea_delete = EnvironmentAction::Environment(delete_env.clone());
@@ -1120,43 +1101,31 @@ fn deploy_a_non_working_environment_with_a_non_working_failover_on_aws_eks() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let logger = logger();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set")
.as_str(),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::non_working_environment(
&context,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let context_for_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::non_working_environment(
&context_for_deletion,
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID is not set")
.as_str(),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::non_working_environment(&context_for_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
// environment action initialize
let ea_delete = EnvironmentAction::Environment(delete_env.clone());
@@ -1176,3 +1145,64 @@ fn deploy_a_non_working_environment_with_a_non_working_failover_on_aws_eks() {
return test_name.to_string();
})
}
#[cfg(feature = "test-aws-self-hosted")]
#[named]
#[test]
fn aws_eks_deploy_a_working_environment_with_sticky_session() {
let test_name = function_name!();
engine_run_test(|| {
init();
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.AWS_TEST_ORGANIZATION_ID
.as_ref()
.expect("AWS_TEST_ORGANIZATION_ID in secrets")
.as_str(),
secrets
.AWS_TEST_CLUSTER_ID
.as_ref()
.expect("AWS_TEST_CLUSTER_ID is not set in secrets")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::environment_only_http_server_router_with_sticky_session(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
.as_str(),
);
let mut environment_for_delete = environment.clone();
environment_for_delete.action = Action::Delete;
let env_action = EnvironmentAction::Environment(environment.clone());
let env_action_for_delete = EnvironmentAction::Environment(environment_for_delete.clone());
match environment.deploy_environment(Kind::Aws, &context, &env_action, logger.clone()) {
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
// checking if cookie is properly set on the app
assert!(routers_sessions_are_sticky(environment.routers.clone()));
match environment_for_delete.delete_environment(Kind::Aws, &context_for_delete, &env_action_for_delete, logger)
{
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
test_name.to_string()
})
}

View File

@@ -1,7 +1,9 @@
extern crate test_utilities;
use self::test_utilities::aws::{AWS_KUBERNETES_MAJOR_VERSION, AWS_KUBERNETES_MINOR_VERSION};
use self::test_utilities::utilities::{context, engine_run_test, logger, FuncTestsSecrets};
use self::test_utilities::utilities::{
context, engine_run_test, generate_cluster_id, generate_id, logger, FuncTestsSecrets,
};
use ::function_name::named;
use qovery_engine::cloud_provider::aws::kubernetes::VpcQoveryNetworkMode;
use qovery_engine::cloud_provider::aws::kubernetes::VpcQoveryNetworkMode::{WithNatGateways, WithoutNatGateways};
@@ -22,7 +24,7 @@ fn create_and_destroy_eks_cluster(
cluster_test(
test_name,
Kind::Aws,
context(),
context(generate_id().as_str(), generate_cluster_id(region.clone()).as_str()),
logger(),
region,
secrets,

View File

@@ -10,11 +10,11 @@ use test_utilities::utilities::{context, engine_run_test, generate_cluster_id, g
#[named]
#[test]
fn create_upgrade_and_destroy_eks_cluster_with_env_in_eu_west_3() {
let context = context();
let secrets = FuncTestsSecrets::new();
let region = "eu-west-3";
let organization_id = generate_id();
let cluster_id = generate_cluster_id(region);
let context = context(organization_id.as_str(), cluster_id.as_str());
let secrets = FuncTestsSecrets::new();
let cluster_domain = format!(
"{}.{}",
cluster_id.as_str(),
@@ -25,11 +25,7 @@ fn create_upgrade_and_destroy_eks_cluster_with_env_in_eu_west_3() {
.as_str()
);
let environment = test_utilities::common::working_minimal_environment(
&context,
organization_id.as_str(),
cluster_domain.as_str(),
);
let environment = test_utilities::common::working_minimal_environment(&context, cluster_domain.as_str());
let env_action = EnvironmentAction::Environment(environment.clone());
engine_run_test(|| {

View File

@@ -36,15 +36,20 @@ fn deploy_an_environment_with_3_databases_and_3_apps() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::environment_3_apps_3_routers_3_databases(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_deletion = context.clone_not_same_execution_id();
let environment = test_utilities::common::environment_3_apps_3_routers_3_databases(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -93,15 +98,20 @@ fn deploy_an_environment_with_db_and_pause_it() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_deletion = context.clone_not_same_execution_id();
let environment = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context,
secrets
.clone()
.DEFAULT_TEST_DOMAIN
@@ -132,13 +142,10 @@ fn deploy_an_environment_with_db_and_pause_it() {
// Check that we have actually 0 pods running for this db
let app_name = format!("postgresql{}-0", environment.databases[0].name);
let ret = get_pods(
context.clone(),
ProviderKind::Do,
environment.clone(),
app_name.clone().as_str(),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -171,10 +178,19 @@ fn postgresql_failover_dev_environment_with_all_options() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let logger = logger();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_deletion = context.clone_not_same_execution_id();
let test_domain = secrets
.clone()
.DEFAULT_TEST_DOMAIN
@@ -182,10 +198,6 @@ fn postgresql_failover_dev_environment_with_all_options() {
let environment = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
DO_SELF_HOSTED_DATABASE_INSTANCE_TYPE,
DO_SELF_HOSTED_DATABASE_DISK_TYPE,
@@ -212,10 +224,6 @@ fn postgresql_failover_dev_environment_with_all_options() {
.collect::<Vec<qovery_engine::models::Application>>();
let mut environment_delete = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context_for_deletion,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
DO_SELF_HOSTED_DATABASE_INSTANCE_TYPE,
DO_SELF_HOSTED_DATABASE_DISK_TYPE,
@@ -237,11 +245,8 @@ fn postgresql_failover_dev_environment_with_all_options() {
// TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY
let database_name = format!("postgresql-{}-0", &environment_check.databases[0].name);
match is_pod_restarted_env(
context.clone(),
ProviderKind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment_check.clone(),
database_name.as_str(),
secrets.clone(),
@@ -256,11 +261,8 @@ fn postgresql_failover_dev_environment_with_all_options() {
};
// TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY EVEN IF FAIL
match is_pod_restarted_env(
context.clone(),
ProviderKind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment_check.clone(),
database_name.as_str(),
secrets.clone(),
@@ -297,8 +299,17 @@ fn postgresql_deploy_a_working_development_environment_with_all_options() {
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_deletion = context.clone_not_same_execution_id();
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
@@ -307,10 +318,6 @@ fn postgresql_deploy_a_working_development_environment_with_all_options() {
let environment = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
DO_SELF_HOSTED_DATABASE_INSTANCE_TYPE,
DO_SELF_HOSTED_DATABASE_DISK_TYPE,
@@ -319,10 +326,6 @@ fn postgresql_deploy_a_working_development_environment_with_all_options() {
//let env_to_check = environment.clone();
let mut environment_delete = test_utilities::common::environnement_2_app_2_routers_1_psql(
&context_for_deletion,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
DO_SELF_HOSTED_DATABASE_INSTANCE_TYPE,
DO_SELF_HOSTED_DATABASE_DISK_TYPE,
@@ -380,16 +383,21 @@ fn postgresql_deploy_a_working_environment_and_redeploy() {
let logger = logger();
let secrets = FuncTestsSecrets::new();
let context = context();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_redeploy = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.clone()
.DEFAULT_TEST_DOMAIN
@@ -490,11 +498,8 @@ fn postgresql_deploy_a_working_environment_and_redeploy() {
// TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY
let database_name = format!("postgresql-{}-0", &environment_check.databases[0].name);
match is_pod_restarted_env(
context.clone(),
ProviderKind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment_check,
database_name.as_str(),
secrets.clone(),
@@ -554,14 +559,20 @@ fn test_postgresql_configuration(
#[named]
#[test]
fn private_postgresql_v10_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -576,14 +587,20 @@ fn private_postgresql_v10_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_postgresql_v10_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -598,14 +615,20 @@ fn public_postgresql_v10_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_postgresql_v11_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -620,14 +643,20 @@ fn private_postgresql_v11_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_postgresql_v11_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -641,14 +670,20 @@ fn public_postgresql_v11_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_postgresql_v12_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -662,14 +697,20 @@ fn private_postgresql_v12_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_postgresql_v12_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -683,14 +724,20 @@ fn public_postgresql_v12_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_postgresql_v13_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -704,14 +751,20 @@ fn private_postgresql_v13_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_postgresql_v13_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -757,14 +810,20 @@ fn test_mongodb_configuration(
#[named]
#[test]
fn private_mongodb_v3_6_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -779,14 +838,20 @@ fn private_mongodb_v3_6_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mongodb_v3_6_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -801,14 +866,20 @@ fn public_mongodb_v3_6_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_mongodb_v4_0_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -823,14 +894,20 @@ fn private_mongodb_v4_0_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mongodb_v4_0_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -845,14 +922,20 @@ fn public_mongodb_v4_0_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_mongodb_v4_2_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -866,14 +949,20 @@ fn private_mongodb_v4_2_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mongodb_v4_2_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -887,14 +976,20 @@ fn public_mongodb_v4_2_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_mongodb_v4_4_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -908,14 +1003,20 @@ fn private_mongodb_v4_4_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mongodb_v4_4_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -961,14 +1062,20 @@ fn test_mysql_configuration(
#[named]
#[test]
fn private_mysql_v5_7_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -983,14 +1090,20 @@ fn private_mysql_v5_7_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mysql_v5_7_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1005,14 +1118,20 @@ fn public_mysql_v5_7_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_mysql_v8_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1026,14 +1145,20 @@ fn private_mysql_v8_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_mysql_v8_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1081,14 +1206,20 @@ fn test_redis_configuration(
#[named]
#[test]
fn private_redis_v5_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1103,14 +1234,20 @@ fn private_redis_v5_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_redis_v5_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1125,14 +1262,20 @@ fn public_redis_v5_deploy_a_working_dev_environment() {
#[named]
#[test]
fn private_redis_v6_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -1146,14 +1289,20 @@ fn private_redis_v6_deploy_a_working_dev_environment() {
#[named]
#[test]
fn public_redis_v6_deploy_a_working_dev_environment() {
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()

View File

@@ -1,5 +1,6 @@
extern crate test_utilities;
use self::test_utilities::common::routers_sessions_are_sticky;
use self::test_utilities::digitalocean::{clean_environments, DO_TEST_REGION};
use self::test_utilities::utilities::{
engine_run_test, generate_id, get_pods, get_pvc, init, is_pod_restarted_env, logger, FuncTestsSecrets,
@@ -27,16 +28,21 @@ fn digitalocean_doks_deploy_a_working_environment_with_no_router() {
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let logger = logger();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -84,16 +90,21 @@ fn digitalocean_doks_deploy_a_not_working_environment_with_no_router() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::non_working_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -140,15 +151,20 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -166,13 +182,10 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() {
};
let ret = get_pods(
context.clone(),
Kind::Do,
environment.clone(),
selector.as_str(),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -186,13 +199,10 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() {
// Check that we have actually 0 pods running for this app
let ret = get_pods(
context.clone(),
Kind::Do,
environment.clone(),
selector.clone().as_str(),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -207,13 +217,10 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() {
};
let ret = get_pods(
context.clone(),
Kind::Do,
environment.clone(),
selector.as_str(),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -246,15 +253,20 @@ fn digitalocean_doks_build_with_buildpacks_and_deploy_a_working_environment() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -319,15 +331,20 @@ fn digitalocean_doks_deploy_a_working_environment_with_domain() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -373,16 +390,21 @@ fn digitalocean_doks_deploy_a_working_environment_with_storage() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -419,15 +441,7 @@ fn digitalocean_doks_deploy_a_working_environment_with_storage() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Do, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -461,17 +475,22 @@ fn digitalocean_doks_redeploy_same_app() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -512,15 +531,7 @@ fn digitalocean_doks_redeploy_same_app() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Do, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -530,11 +541,8 @@ fn digitalocean_doks_redeploy_same_app() {
let app_name = format!("{}-0", &environment_check1.applications[0].name);
let (_, number) = is_pod_restarted_env(
context.clone(),
Kind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment_check1,
app_name.clone().as_str(),
secrets.clone(),
@@ -547,11 +555,8 @@ fn digitalocean_doks_redeploy_same_app() {
};
let (_, number2) = is_pod_restarted_env(
context.clone(),
Kind::Do,
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
environment_check2,
app_name.as_str(),
secrets.clone(),
@@ -586,18 +591,23 @@ fn digitalocean_doks_deploy_a_not_working_environment_and_then_working_environme
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -668,16 +678,21 @@ fn digitalocean_doks_deploy_ok_fail_fail_ok_environment() {
let _enter = span.enter();
let logger = logger();
let secrets = FuncTestsSecrets::new();
// working env
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -778,14 +793,19 @@ fn digitalocean_doks_deploy_a_non_working_environment_with_no_failover() {
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::non_working_environment(
&context,
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -834,40 +854,29 @@ fn digitalocean_doks_deploy_a_non_working_environment_with_a_working_failover()
let logger = logger();
// context for non working environment
let context = context();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::working_minimal_environment(&context, test_domain.as_str());
// context for deletion
let context_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::working_minimal_environment(
&context_deletion,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::working_minimal_environment(&context_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
let env_action_delete = EnvironmentAction::Environment(delete_env.clone());
@@ -910,39 +919,28 @@ fn digitalocean_doks_deploy_a_non_working_environment_with_a_non_working_failove
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set"),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::non_working_environment(
&context,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let context_for_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::non_working_environment(
&context_for_deletion,
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set"),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::non_working_environment(&context_for_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
// environment action initialize
@@ -973,3 +971,67 @@ fn digitalocean_doks_deploy_a_non_working_environment_with_a_non_working_failove
test_name.to_string()
})
}
#[cfg(feature = "test-do-self-hosted")]
#[named]
#[test]
fn digitalocean_doks_deploy_a_working_environment_with_sticky_session() {
let test_name = function_name!();
engine_run_test(|| {
init();
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID in secrets")
.as_str(),
secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set in secrets")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::environment_only_http_server_router_with_sticky_session(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
.as_str(),
);
let mut environment_for_delete = environment.clone();
environment_for_delete.action = Action::Delete;
let env_action = EnvironmentAction::Environment(environment.clone());
let env_action_for_delete = EnvironmentAction::Environment(environment_for_delete.clone());
match environment.deploy_environment(Kind::Do, &context, &env_action, logger.clone()) {
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
// checking cookie is properly set on the app
assert!(routers_sessions_are_sticky(environment.routers.clone()));
match environment_for_delete.delete_environment(Kind::Do, &context_for_delete, &env_action_for_delete, logger) {
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
if let Err(e) = clean_environments(&context, vec![environment.clone()], secrets.clone(), DO_TEST_REGION) {
warn!("cannot clean environments, error: {:?}", e);
}
test_name.to_string()
})
}

View File

@@ -2,7 +2,9 @@ extern crate test_utilities;
use self::test_utilities::common::ClusterDomain;
use self::test_utilities::digitalocean::{DO_KUBERNETES_MAJOR_VERSION, DO_KUBERNETES_MINOR_VERSION};
use self::test_utilities::utilities::{context, engine_run_test, logger, FuncTestsSecrets};
use self::test_utilities::utilities::{
context, engine_run_test, generate_cluster_id, generate_id, logger, FuncTestsSecrets,
};
use ::function_name::named;
use qovery_engine::cloud_provider::digitalocean::application::Region;
use qovery_engine::cloud_provider::Kind;
@@ -21,7 +23,7 @@ fn create_and_destroy_doks_cluster(
cluster_test(
test_name,
Kind::Do,
context(),
context(generate_id().as_str(), generate_cluster_id(region.as_str()).as_str()),
logger(),
region.as_str(),
secrets,

View File

@@ -11,7 +11,7 @@ const TEST_REGION: Region = Region::Amsterdam3;
#[test]
fn test_delete_bucket_hard_delete_strategy() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(
@@ -42,7 +42,7 @@ fn test_delete_bucket_hard_delete_strategy() {
#[test]
fn test_delete_bucket_empty_strategy() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(
@@ -78,7 +78,7 @@ fn test_delete_bucket_empty_strategy() {
#[test]
fn test_create_bucket() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(
@@ -109,7 +109,7 @@ fn test_create_bucket() {
#[test]
fn test_recreate_bucket() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(
@@ -147,7 +147,7 @@ fn test_recreate_bucket() {
#[test]
fn test_put_file() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(
@@ -193,7 +193,7 @@ fn test_put_file() {
#[test]
fn test_get_file() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let spaces = Spaces::new(

View File

@@ -27,8 +27,18 @@ fn create_digitalocean_kubernetes_doks_test_cluster() {
let span = span!(Level::INFO, "utility", name = test_name);
let _enter = span.enter();
let organization_id = secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set");
let cluster_id = secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set");
let cluster_name = format!("qovery-{}", cluster_id.clone());
let logger = logger();
let context = context();
let context = context(organization_id.as_str(), cluster_id.as_str());
let engine = DO::docker_cr_engine(&context, logger.clone());
let session = engine.session().unwrap();
let mut tx = session.transaction();
@@ -37,12 +47,6 @@ fn create_digitalocean_kubernetes_doks_test_cluster() {
let nodes = DO::kubernetes_nodes();
let cloudflare = dns_provider_cloudflare(&context, ClusterDomain::Default);
let cluster_id = secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set");
let cluster_name = format!("qovery-{}", cluster_id.clone());
let kubernetes = DOKS::new(
context.clone(),
cluster_id.to_string(),
@@ -89,8 +93,18 @@ fn destroy_digitalocean_kubernetes_doks_test_cluster() {
let span = span!(Level::INFO, "utility", name = test_name);
let _enter = span.enter();
let organization_id = secrets
.DIGITAL_OCEAN_TEST_ORGANIZATION_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_ORGANIZATION_ID is not set");
let cluster_id = secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set");
let cluster_name = format!("qovery-{}", cluster_id.clone());
let logger = logger();
let context = context();
let context = context(organization_id.as_str(), cluster_id.as_str());
let engine = DO::docker_cr_engine(&context, logger.clone());
let session = engine.session().unwrap();
let mut tx = session.transaction();
@@ -99,12 +113,6 @@ fn destroy_digitalocean_kubernetes_doks_test_cluster() {
let nodes = DO::kubernetes_nodes();
let cloudflare = dns_provider_cloudflare(&context, ClusterDomain::Default);
let cluster_id = secrets
.DIGITAL_OCEAN_TEST_CLUSTER_ID
.as_ref()
.expect("DIGITAL_OCEAN_TEST_CLUSTER_ID is not set");
let cluster_name = format!("qovery-{}", cluster_id);
let kubernetes = DOKS::new(
context.clone(),
cluster_id.to_string(),

View File

@@ -10,12 +10,12 @@ use test_utilities::utilities::{context, engine_run_test, generate_cluster_id, g
#[named]
#[test]
fn create_upgrade_and_destroy_doks_cluster_with_env_in_ams_3() {
let context = context();
let logger = logger();
let region = Region::Amsterdam3;
let secrets = FuncTestsSecrets::new();
let organization_id = generate_id();
let cluster_id = generate_cluster_id(region.as_str());
let context = context(organization_id.as_str(), cluster_id.as_str());
let logger = logger();
let secrets = FuncTestsSecrets::new();
let cluster_domain = format!(
"{}.{}",
cluster_id.as_str(),
@@ -26,11 +26,7 @@ fn create_upgrade_and_destroy_doks_cluster_with_env_in_ams_3() {
.as_str()
);
let environment = test_utilities::common::working_minimal_environment(
&context,
organization_id.as_str(),
cluster_domain.as_str(),
);
let environment = test_utilities::common::working_minimal_environment(&context, cluster_domain.as_str());
let env_action = EnvironmentAction::Environment(environment.clone());
engine_run_test(|| {

View File

@@ -29,7 +29,7 @@ fn test_delete_image() {
#[test]
fn test_get_registry_namespace() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
let scw_default_project_id = secrets.SCALEWAY_DEFAULT_PROJECT_ID.unwrap_or("undefined".to_string());
@@ -87,7 +87,7 @@ fn test_get_registry_namespace() {
#[test]
fn test_create_registry_namespace() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
let scw_default_project_id = secrets.SCALEWAY_DEFAULT_PROJECT_ID.unwrap_or("undefined".to_string());
@@ -138,7 +138,7 @@ fn test_create_registry_namespace() {
#[test]
fn test_delete_registry_namespace() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
let scw_default_project_id = secrets.SCALEWAY_DEFAULT_PROJECT_ID.unwrap_or("undefined".to_string());
@@ -184,7 +184,7 @@ fn test_delete_registry_namespace() {
#[test]
fn test_get_or_create_registry_namespace() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
let scw_default_project_id = secrets.SCALEWAY_DEFAULT_PROJECT_ID.unwrap_or("undefined".to_string());

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,6 @@
extern crate test_utilities;
use self::test_utilities::common::routers_sessions_are_sticky;
use self::test_utilities::scaleway::{clean_environments, SCW_TEST_ZONE};
use self::test_utilities::utilities::{
context, engine_run_test, generate_id, get_pods, get_pvc, init, is_pod_restarted_env, logger, FuncTestsSecrets,
@@ -27,16 +28,22 @@ fn scaleway_kapsule_deploy_a_working_environment_with_no_router() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -85,17 +92,23 @@ fn scaleway_kapsule_deploy_a_not_working_environment_with_no_router() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::non_working_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -143,16 +156,22 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -170,14 +189,10 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() {
};
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -191,14 +206,10 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() {
// Check that we have actually 0 pods running for this app
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -213,14 +224,10 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() {
};
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -253,16 +260,22 @@ fn scaleway_kapsule_build_with_buildpacks_and_deploy_a_working_environment() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -328,16 +341,22 @@ fn scaleway_kapsule_deploy_a_working_environment_with_domain() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -382,18 +401,24 @@ fn scaleway_kapsule_deploy_a_working_environment_with_storage() {
let span = span!(Level::INFO, "test", name = test_name,);
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let logger = logger();
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -430,16 +455,7 @@ fn scaleway_kapsule_deploy_a_working_environment_with_storage() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Scw,
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Scw, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -464,7 +480,7 @@ fn scaleway_kapsule_deploy_a_working_environment_with_storage() {
#[cfg(feature = "test-scw-self-hosted")]
#[named]
#[test]
fn deploy_a_working_environment_and_pause_it_k() {
fn deploy_a_working_environment_and_pause_it() {
let test_name = function_name!();
engine_run_test(|| {
init();
@@ -472,16 +488,22 @@ fn deploy_a_working_environment_and_pause_it_k() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID is not set")
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -499,14 +521,10 @@ fn deploy_a_working_environment_and_pause_it_k() {
};
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -520,14 +538,10 @@ fn deploy_a_working_environment_and_pause_it_k() {
// Check that we have actually 0 pods running for this app
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -542,14 +556,10 @@ fn deploy_a_working_environment_and_pause_it_k() {
};
let ret = get_pods(
context.clone(),
Kind::Scw,
environment.clone(),
selector.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
secrets.clone(),
);
assert_eq!(ret.is_ok(), true);
@@ -577,18 +587,24 @@ fn scaleway_kapsule_redeploy_same_app() {
let _enter = span.enter();
let logger = logger();
let context = context();
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_bis = context.clone_not_same_execution_id();
let context_for_deletion = context.clone_not_same_execution_id();
let mut environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.clone()
.DEFAULT_TEST_DOMAIN
@@ -630,16 +646,7 @@ fn scaleway_kapsule_redeploy_same_app() {
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
match get_pvc(
Kind::Scw,
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
environment.clone(),
secrets.clone(),
) {
match get_pvc(context.clone(), Kind::Scw, environment.clone(), secrets.clone()) {
Ok(pvc) => assert_eq!(
pvc.items.expect("No items in pvc")[0].spec.resources.requests.storage,
format!("{}Gi", storage_size)
@@ -649,12 +656,8 @@ fn scaleway_kapsule_redeploy_same_app() {
let app_name = format!("{}-0", &environment_check1.applications[0].name);
let (_, number) = is_pod_restarted_env(
context.clone(),
Kind::Scw,
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
environment_check1,
app_name.clone().as_str(),
secrets.clone(),
@@ -667,12 +670,8 @@ fn scaleway_kapsule_redeploy_same_app() {
};
let (_, number2) = is_pod_restarted_env(
context.clone(),
Kind::Scw,
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set")
.as_str(),
environment_check2,
app_name.as_str(),
secrets.clone(),
@@ -707,19 +706,25 @@ fn scaleway_kapsule_deploy_a_not_working_environment_and_then_working_environmen
let _enter = span.enter();
let logger = logger();
let context = context();
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
let secrets = FuncTestsSecrets::new();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let context_for_not_working = context.clone_not_same_execution_id();
let context_for_delete = context.clone_not_same_execution_id();
// env part generation
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -792,15 +797,22 @@ fn scaleway_kapsule_deploy_ok_fail_fail_ok_environment() {
let logger = logger();
// working env
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::working_minimal_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -901,15 +913,22 @@ fn scaleway_kapsule_deploy_a_non_working_environment_with_no_failover() {
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let environment = test_utilities::common::non_working_environment(
&context,
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
@@ -958,43 +977,32 @@ fn scaleway_kapsule_deploy_a_non_working_environment_with_a_working_failover() {
let logger = logger();
// context for non working environment
let context = context();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::working_minimal_environment(
&context,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::working_minimal_environment(&context, test_domain.as_str());
// context for deletion
let context_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::working_minimal_environment(
&context_deletion,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::working_minimal_environment(&context_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
let env_action_delete = EnvironmentAction::Environment(delete_env.clone());
@@ -1037,42 +1045,31 @@ fn scaleway_kapsule_deploy_a_non_working_environment_with_a_non_working_failover
let _enter = span.enter();
let logger = logger();
let context = context();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID")
.as_str(),
);
let test_domain = secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets");
let environment = test_utilities::common::non_working_environment(
&context,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let failover_environment = test_utilities::common::non_working_environment(
&context,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let failover_environment = test_utilities::common::non_working_environment(&context, test_domain.as_str());
let context_for_deletion = context.clone_not_same_execution_id();
let mut delete_env = test_utilities::common::non_working_environment(
&context_for_deletion,
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID")
.as_str(),
test_domain.as_str(),
);
let mut delete_env =
test_utilities::common::non_working_environment(&context_for_deletion, test_domain.as_str());
delete_env.action = Action::Delete;
// environment action initialize
@@ -1103,3 +1100,68 @@ fn scaleway_kapsule_deploy_a_non_working_environment_with_a_non_working_failover
test_name.to_string()
})
}
#[cfg(feature = "test-scw-self-hosted")]
#[named]
#[test]
fn scaleway_kapsule_deploy_a_working_environment_with_sticky_session() {
let test_name = function_name!();
engine_run_test(|| {
init();
let span = span!(Level::INFO, "test", name = test_name);
let _enter = span.enter();
let logger = logger();
let secrets = FuncTestsSecrets::new();
let context = context(
secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID is not set in secrets")
.as_str(),
secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set in secrets")
.as_str(),
);
let context_for_delete = context.clone_not_same_execution_id();
let environment = test_utilities::common::environment_only_http_server_router_with_sticky_session(
&context,
secrets
.DEFAULT_TEST_DOMAIN
.as_ref()
.expect("DEFAULT_TEST_DOMAIN is not set in secrets")
.as_str(),
);
let mut environment_for_delete = environment.clone();
environment_for_delete.action = Action::Delete;
let env_action = EnvironmentAction::Environment(environment.clone());
let env_action_for_delete = EnvironmentAction::Environment(environment_for_delete.clone());
match environment.deploy_environment(Kind::Scw, &context, &env_action, logger.clone()) {
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
// checking cookie is properly set on the app
assert!(routers_sessions_are_sticky(environment.routers.clone()));
match environment_for_delete.delete_environment(Kind::Scw, &context_for_delete, &env_action_for_delete, logger)
{
TransactionResult::Ok => assert!(true),
TransactionResult::Rollback(_) => assert!(false),
TransactionResult::UnrecoverableError(_, _) => assert!(false),
};
if let Err(e) = clean_environments(&context, vec![environment.clone()], secrets.clone(), SCW_TEST_ZONE) {
warn!("cannot clean environments, error: {:?}", e);
}
test_name.to_string()
})
}

View File

@@ -1,7 +1,9 @@
extern crate test_utilities;
use self::test_utilities::scaleway::{SCW_KUBERNETES_MAJOR_VERSION, SCW_KUBERNETES_MINOR_VERSION};
use self::test_utilities::utilities::{context, engine_run_test, logger, FuncTestsSecrets};
use self::test_utilities::utilities::{
context, engine_run_test, generate_cluster_id, generate_id, logger, FuncTestsSecrets,
};
use ::function_name::named;
use qovery_engine::cloud_provider::aws::kubernetes::VpcQoveryNetworkMode;
use qovery_engine::cloud_provider::scaleway::application::Zone;
@@ -22,7 +24,7 @@ fn create_and_destroy_kapsule_cluster(
cluster_test(
test_name,
Kind::Scw,
context(),
context(generate_id().as_str(), generate_cluster_id(zone.as_str()).as_str()),
logger(),
zone.as_str(),
secrets,

View File

@@ -11,7 +11,7 @@ use tempfile::NamedTempFile;
#[test]
fn test_delete_bucket_hard_delete_strategy() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
@@ -46,7 +46,7 @@ fn test_delete_bucket_hard_delete_strategy() {
#[test]
fn test_delete_bucket_empty_strategy() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
@@ -86,7 +86,7 @@ fn test_delete_bucket_empty_strategy() {
#[test]
fn test_create_bucket() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
@@ -122,7 +122,7 @@ fn test_create_bucket() {
#[test]
fn test_recreate_bucket() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
@@ -164,7 +164,7 @@ fn test_recreate_bucket() {
#[test]
fn test_put_file() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());
@@ -216,7 +216,7 @@ fn test_put_file() {
#[test]
fn test_get_file() {
// setup:
let context = context();
let context = context("fake_orga_id", "fake_cluster_id");
let secrets = FuncTestsSecrets::new();
let scw_access_key = secrets.SCALEWAY_ACCESS_KEY.unwrap_or("undefined".to_string());
let scw_secret_key = secrets.SCALEWAY_SECRET_KEY.unwrap_or("undefined".to_string());

View File

@@ -27,8 +27,17 @@ fn create_scaleway_kubernetes_kapsule_test_cluster() {
let span = span!(Level::INFO, "utility", name = test_name);
let _enter = span.enter();
let organization_id = secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID");
let cluster_id = secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID");
let logger = logger();
let context = context();
let context = context(organization_id.as_str(), cluster_id.as_str());
let engine = Scaleway::docker_cr_engine(&context, logger.clone());
let session = engine.session().unwrap();
let mut tx = session.transaction();
@@ -37,11 +46,6 @@ fn create_scaleway_kubernetes_kapsule_test_cluster() {
let nodes = Scaleway::kubernetes_nodes();
let cloudflare = dns_provider_cloudflare(&context, ClusterDomain::Default);
let cluster_id = secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID");
let kubernetes = Kapsule::new(
context.clone(),
cluster_id.to_string(),
@@ -88,8 +92,17 @@ fn destroy_scaleway_kubernetes_kapsule_test_cluster() {
let span = span!(Level::INFO, "utility", name = test_name);
let _enter = span.enter();
let organization_id = secrets
.SCALEWAY_TEST_ORGANIZATION_ID
.as_ref()
.expect("SCALEWAY_TEST_ORGANIZATION_ID");
let cluster_id = secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID");
let logger = logger();
let context = context();
let context = context(organization_id.as_str(), cluster_id.as_str());
let engine = Scaleway::docker_cr_engine(&context, logger.clone());
let session = engine.session().unwrap();
let mut tx = session.transaction();
@@ -98,11 +111,6 @@ fn destroy_scaleway_kubernetes_kapsule_test_cluster() {
let nodes = Scaleway::kubernetes_nodes();
let cloudflare = dns_provider_cloudflare(&context, ClusterDomain::Default);
let cluster_id = secrets
.SCALEWAY_TEST_CLUSTER_ID
.as_ref()
.expect("SCALEWAY_TEST_CLUSTER_ID is not set");
let kubernetes = Kapsule::new(
context.clone(),
cluster_id.to_string(),

View File

@@ -11,11 +11,11 @@ use test_utilities::utilities::{context, engine_run_test, generate_cluster_id, g
#[test]
fn create_and_destroy_kapsule_cluster_with_env_in_par_2() {
let logger = logger();
let context = context();
let zone = Zone::Paris2;
let secrets = FuncTestsSecrets::new();
let organization_id = generate_id();
let cluster_id = generate_cluster_id(zone.as_str());
let context = context(organization_id.as_str(), cluster_id.as_str());
let secrets = FuncTestsSecrets::new();
let cluster_domain = format!(
"{}.{}",
cluster_id.as_str(),
@@ -26,11 +26,7 @@ fn create_and_destroy_kapsule_cluster_with_env_in_par_2() {
.as_str()
);
let environment = test_utilities::common::working_minimal_environment(
&context,
organization_id.as_str(),
cluster_domain.as_str(),
);
let environment = test_utilities::common::working_minimal_environment(&context, cluster_domain.as_str());
let env_action = EnvironmentAction::Environment(environment.clone());
engine_run_test(|| {