kata-containers/tests/integration/kubernetes/k8s-port-forward.bats
Fabiano Fidêncio 11e0099fb5 tests: Move k8s tests to this repo
The first part of simplifying things to have all our tests using GitHub
actions is moving the k8s tests to this repo, as those will be the first
vict^W targets to be migrated to GitHub actions.

Those tests have been slightly adapted, mainly related to what they load
/ import, so they are more self-contained and do not require us bringing
a lot of scripts from the tests repo here.

A few scripts were also dropped along the way, as we no longer plan to
deploy kubernetes as part of every single run, but rather assume there
will always be k8s running whenever we land to run those tests.

It's important to mention that a few tests were not added here:

* k8s-block-volume:
* k8s-file-volume:
* k8s-volume:
* k8s-ro-volume:
  These tests depend on some sort of volume being created on the
  kubernetes node where the test will run, and this won't fly as the
  tests will run from a GitHub runner, targetting a different machine
  where kubernetes will be running.
  * https://github.com/kata-containers/kata-containers/issues/6566

* k8s-hugepages: This test depends a whole lot on the host where it
  lands and right now we cannot assume anything about that anymore, as
  the tests will run from a GitHub runner, targetting a different
  machine where kubernetes will be running.
  * https://github.com/kata-containers/kata-containers/issues/6567

* k8s-expose-ip: This is simply hanging when running on AKS and has to
  be debugged in order to figure out the root cause of that, and then
  adapted to also work on AKS.
  * https://github.com/kata-containers/kata-containers/issues/6578

Till those issues are solved, we'll keep running a jenkins job with
hose tests to avoid any possible regression.

Last but not least, I've decided to **not** keep the history when
bringing those tests here, otherwise we'd end up polluting a lot the
history of this repo, without any clear benefit on doing so.

Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
2023-03-31 21:55:41 +02:00

72 lines
1.8 KiB
Bash

#!/usr/bin/env bats
#
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
load "${BATS_TEST_DIRNAME}/../../common.bash"
load "${BATS_TEST_DIRNAME}/tests_common.sh"
source "/etc/os-release" || source "/usr/lib/os-release"
issue="https://github.com/kata-containers/runtime/issues/1834"
setup() {
skip "test not working see: ${issue}"
get_pod_config_dir
}
@test "Port forwarding" {
skip "test not working see: ${issue}"
deployment_name="redis-master"
# Create deployment
kubectl apply -f "${pod_config_dir}/redis-master-deployment.yaml"
# Check deployment
kubectl wait --for=condition=Available --timeout=$timeout deployment/"$deployment_name"
kubectl expose deployment/"$deployment_name"
# Get pod name
pod_name=$(kubectl get pods --output=jsonpath={.items..metadata.name})
kubectl wait --for=condition=Ready --timeout=$timeout pod "$pod_name"
# View replicaset
kubectl get rs
# Create service
kubectl apply -f "${pod_config_dir}/redis-master-service.yaml"
# Check service
kubectl get svc | grep redis
# Check redis service
port_redis=$(kubectl get pods $pod_name --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}')
# Verify that redis is running in the pod and listening on port
port=6379
[ "$port_redis" -eq "$port" ]
# Forward a local port to a port on the pod
(2&>1 kubectl port-forward "$pod_name" 7000:"$port"> /dev/null) &
# Run redis-cli
retries="10"
ok="0"
for _ in $(seq 1 "$retries"); do
if sudo -E redis-cli -p 7000 ping | grep -q "PONG" ; then
ok="1"
break;
fi
sleep 1
done
[ "$ok" -eq "1" ]
}
teardown() {
skip "test not working see: ${issue}"
kubectl delete -f "${pod_config_dir}/redis-master-deployment.yaml"
kubectl delete -f "${pod_config_dir}/redis-master-service.yaml"
}