mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
adapt remaining tests to kubetest
This commit is contained in:
parent
8a20c93b21
commit
7b057d8c0f
5 changed files with 53 additions and 112 deletions
|
|
@ -8,13 +8,23 @@ with lib;
|
|||
test = {
|
||||
name = "nginx-deployment";
|
||||
description = "Test testing nginx deployment";
|
||||
testScript = ''
|
||||
kube.wait_until_succeeds("docker load --input='${config.docker.images.nginx.image}'")
|
||||
kube.wait_until_succeeds("kubectl apply -f ${config.kubernetes.result}")
|
||||
script = ''
|
||||
@pytest.mark.applymanifest('${config.kubernetes.resultYAML}')
|
||||
def test_nginx_deployment(kube):
|
||||
"""Tests whether nginx deployment gets successfully created"""
|
||||
|
||||
kube.succeed("kubectl get deployment | grep -i nginx")
|
||||
kube.wait_until_succeeds("kubectl get deployment -o go-template nginx --template={{.status.readyReplicas}} | grep 10")
|
||||
kube.wait_until_succeeds({pkgs.curl}/bin/curl http://nginx.default.svc.cluster.local | grep -i hello")
|
||||
kube.wait_for_registered(timeout=30)
|
||||
|
||||
deployments = kube.get_deployments()
|
||||
nginx_deploy = deployments.get('nginx')
|
||||
assert nginx_deploy is not None
|
||||
|
||||
status = nginx_deploy.status()
|
||||
assert status.readyReplicas == 10
|
||||
|
||||
# TODO: implement those kind of checks from the host machine into the cluster
|
||||
# via port forwarding, prepare all runtimes accordingly
|
||||
# ${pkgs.curl}/bin/curl http://nginx.default.svc.cluster.local | grep -i hello
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,13 @@ let
|
|||
};
|
||||
in
|
||||
{
|
||||
imports = [ kubenix.modules.test kubenix.modules.helm kubenix.modules.k8s ];
|
||||
imports = [ kubenix.modules.test kubenix.modules.helm kubenix.modules.k8s kubenix.modules.docker ];
|
||||
|
||||
docker.images = {
|
||||
postgresql.image = inherit postgresql;
|
||||
postgresqlExporter.image = inherit postgresqlExporter;
|
||||
bitnamiShell.image = inherit bitnamiShell;
|
||||
};
|
||||
|
||||
test = {
|
||||
name = "helm-simple";
|
||||
|
|
@ -54,19 +60,21 @@ in
|
|||
assertion =
|
||||
appsv1.StatefulSet.app-psql-postgresql-primary.metadata.namespace == "test";
|
||||
}];
|
||||
testScript = ''
|
||||
kube.wait_until_succeeds("docker load < ${postgresql}")
|
||||
kube.wait_until_succeeds("docker load < ${postgresqlExporter}")
|
||||
kube.wait_until_succeeds("docker load < ${bitnamiShell}")
|
||||
kube.wait_until_succeeds("kubectl apply -f ${config.kubernetes.result}")
|
||||
kube.wait_until_succeeds("PGPASSWORD=postgres ${pkgs.postgresql}/bin/psql -h app-psql-postgresql.test.svc.cluster.local -U postgres -l")
|
||||
script = ''
|
||||
@pytest.mark.applymanifest('${config.kubernetes.resultYAML}')
|
||||
def test_helm_deployment(kube):
|
||||
"""Tests whether helm deployment gets successfully created"""
|
||||
|
||||
kube.wait_for_registered(timeout=30)
|
||||
|
||||
# TODO: implement those kind of checks from the host machine into the cluster
|
||||
# via port forwarding, prepare all runtimes accordingly
|
||||
# PGPASSWORD=postgres ${pkgs.postgresql}/bin/psql -h app-psql-postgresql.test.svc.cluster.local -U postgres -l
|
||||
'';
|
||||
};
|
||||
|
||||
kubernetes.resources.namespaces.test = { };
|
||||
|
||||
kubernetes.helm.instances.app-psql = {
|
||||
namespace = "test";
|
||||
namespace = "some-overridden-by-kubetest";
|
||||
chart = helm.fetch {
|
||||
repo = "https://charts.bitnami.com/bitnami";
|
||||
chart = "postgresql";
|
||||
|
|
|
|||
|
|
@ -15,11 +15,25 @@ in
|
|||
message = "Custom resource should have correct version set";
|
||||
assertion = latestCrontab.apiVersion == "stable.example.com/v2";
|
||||
}];
|
||||
testScript = ''
|
||||
kube.wait_until_succeeds("kubectl apply -f ${config.kubernetes.result}")
|
||||
kube.succeed("kubectl get crds | grep -i crontabs")
|
||||
kube.succeed("kubectl get crontabs | grep -i versioned")
|
||||
kube.succeed("kubectl get crontabs | grep -i latest")
|
||||
script = ''
|
||||
@pytest.mark.applymanifest('${config.kubernetes.resultYAML}')
|
||||
def test_testing_module(kube):
|
||||
"""Tests whether deployment gets successfully created"""
|
||||
|
||||
kube.wait_for_registered(timeout=30)
|
||||
|
||||
kube.get_crds()
|
||||
crds = kube.get_crds()
|
||||
crontabs_crd = crds.get('crontabs')
|
||||
assert contrabs_crd is not None
|
||||
|
||||
# TODO: verify
|
||||
# kubectl get crontabs | grep -i versioned
|
||||
crontabs_crd_versioned = crontabs_crd.get('versioned')
|
||||
assert crontabs_crd_versioned is not None
|
||||
# kubectl get crontabs | grep -i latest
|
||||
crontabs_crd_latest = crontabs_crd.get('latest')
|
||||
assert crontabs_crd_latest is not None
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
{ config, kubenix, ... }:
|
||||
|
||||
{
|
||||
imports = [ kubenix.modules.test kubenix.modules.metacontroller ];
|
||||
|
||||
test = {
|
||||
name = "metacontroller-controllers";
|
||||
description = "Testing metacontroller custom resources";
|
||||
};
|
||||
|
||||
kubernetes.api.compositecontrollers.test = {
|
||||
spec = {
|
||||
generateSelector = true;
|
||||
parentResource = {
|
||||
apiVersion = "ctl.enisoc.com/v1";
|
||||
resource = "things";
|
||||
};
|
||||
childResources = [{
|
||||
apiVersion = "v1";
|
||||
resource = "pods";
|
||||
}];
|
||||
hooks.sync.webhook.url = "http://thing-controller.metacontroller/sync";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
{ name, config, lib, kubenix, images, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.submodules.instances.test.config;
|
||||
deployment = cfg.kubernetes.api.deployments.nginx;
|
||||
in
|
||||
{
|
||||
imports = [ kubenix.modules.test kubenix.module ];
|
||||
|
||||
test = {
|
||||
name = "module";
|
||||
description = "Test testing kubenix module";
|
||||
assertions = [{
|
||||
message = "Namespace not propagated";
|
||||
assertion = deployment.metadata.namespace == "test";
|
||||
}
|
||||
{
|
||||
message = "Version not propagated";
|
||||
assertion = cfg.kubernetes.version == config.kubernetes.version;
|
||||
}
|
||||
{
|
||||
message = "docker image should be added to exported images";
|
||||
assertion = (head config.docker.export) == images.nginx;
|
||||
}];
|
||||
testScript = ''
|
||||
kube.wait_until_succeeds("docker load < ${images.nginx}")
|
||||
kube.wait_until_succeeds("kubectl apply -f ${config.kubernetes.result}")
|
||||
|
||||
kube.succeed("kubectl get deployment -n test | grep -i test-nginx")
|
||||
kube.wait_until_succeeds("kubectl get deployment -n test -o go-template test-nginx --template={{.status.readyReplicas}} | grep 1")
|
||||
'';
|
||||
};
|
||||
|
||||
submodules.imports = [{
|
||||
module = { name, config, ... }: {
|
||||
submodule.name = "nginx";
|
||||
kubernetes.api.deployments.nginx = {
|
||||
metadata = {
|
||||
name = "${name}-nginx";
|
||||
labels.app = name;
|
||||
};
|
||||
spec = {
|
||||
replicas = 1;
|
||||
selector.matchLabels.app = "nginx";
|
||||
template.metadata.labels.app = "nginx";
|
||||
template.spec = {
|
||||
containers.nginx = {
|
||||
image = config.docker.images.nginx.path;
|
||||
imagePullPolicy = "Never";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
docker.images.nginx.image = images.nginx;
|
||||
};
|
||||
}];
|
||||
|
||||
kubernetes.api.namespaces.test = { };
|
||||
|
||||
submodules.instances.test = {
|
||||
submodule = "nginx";
|
||||
namespace = "test";
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue