Skip to content

Commit

Permalink
Add tests for parallel node collection, witht parameterised tests per…
Browse files Browse the repository at this point in the history
… configuration file
  • Loading branch information
michaelsembwever committed Nov 25, 2022
1 parent b0ab791 commit f8777f8
Show file tree
Hide file tree
Showing 9 changed files with 633 additions and 40 deletions.
31 changes: 19 additions & 12 deletions ds-collector-tests/cluster-dse-k8s.make
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
# the test target will execute once for every test-collector-k8s*.conf.in configuration file found
CONFIGURATIONS := $(shell ls test-collector-dse-k8s*.conf.in)
TESTS := $(addprefix test_,${CONFIGURATIONS})

all: setup test teardown
all: setup ${TESTS} teardown


test:
${TESTS}: test_%:
# ds-collector over k8s
cp test-collector-k8s-dse.conf.in /tmp/datastax/test-collector-k8s-dse.conf
echo "" >> /tmp/datastax/test-collector-k8s-dse.conf
echo "cqlshUsername=$$(kubectl -n cass-operator get secret cluster2-superuser -o yaml | grep " username" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-k8s-dse.conf
echo "cqlshPassword=$$(kubectl -n cass-operator get secret cluster2-superuser -o yaml | grep " password" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-k8s-dse.conf
./collector/ds-collector -T -f /tmp/datastax/test-collector-k8s-dse.conf -n cluster2-dc1-default-sts-0
./collector/ds-collector -T -p -f /tmp/datastax/test-collector-k8s-dse.conf -n cluster2-dc1-default-sts-0
./collector/ds-collector -X -f /tmp/datastax/test-collector-k8s-dse.conf -n cluster2-dc1-default-sts-0
@echo "\n Testing $* \n"
cp $* /tmp/datastax/test-collector-dse-k8s.conf
@echo "" >> /tmp/datastax/test-collector-dse-k8s.conf
@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> /tmp/datastax/test-collector-dse-k8s.conf
@echo "git_sha=$$(git rev-parse HEAD)" >> /tmp/datastax/test-collector-dse-k8s.conf
echo "" >> /tmp/datastax/test-collector-dse-k8s.conf
@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> /tmp/datastax/test-collector-dse-k8s.conf
@echo "git_sha=$$(git rev-parse HEAD)" >> /tmp/datastax/test-collector-dse-k8s.conf
echo "" >> /tmp/datastax/test-collector-dse-k8s.conf
echo "cqlshUsername=$$(kubectl -n cass-operator get secret cluster2-superuser -o yaml | grep " username" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-dse-k8s.conf
echo "cqlshPassword=$$(kubectl -n cass-operator get secret cluster2-superuser -o yaml | grep " password" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-dse-k8s.conf
./collector/ds-collector -T -f /tmp/datastax/test-collector-dse-k8s.conf -n cluster2-dc1-default-sts-0
./collector/ds-collector -T -p -f /tmp/datastax/test-collector-dse-k8s.conf -n cluster2-dc1-default-sts-0
./collector/ds-collector -X -f /tmp/datastax/test-collector-dse-k8s.conf -n cluster2-dc1-default-sts-0
if ! ls /tmp/datastax/ | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the K8s cluster "; ls -l /tmp/datastax/ ; exit 1 ; fi


Expand Down Expand Up @@ -42,8 +51,6 @@ setup:
kubectl -n cass-operator apply -f k8s-manifests/example-cassdc-minimal-dse.yaml
while (! kubectl -n cass-operator get pod | grep -q "cluster2-dc1-default-sts-0") || kubectl -n cass-operator get pod | grep -q "0/2" || kubectl -n cass-operator get pod | grep -q "1/2" ; do kubectl -n cass-operator get pod ; echo "waiting 60s…" ; sleep 60 ; done

@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> test-collector-k8s-dse.conf
@echo "git_sha=$$(git rev-parse HEAD)" >> test-collector-k8s-dse.conf

teardown:
kubectl delete cassdcs --all-namespaces --all
Expand Down
41 changes: 29 additions & 12 deletions ds-collector-tests/cluster-one-node-vanilla-ssh-docker.make
Original file line number Diff line number Diff line change
@@ -1,24 +1,41 @@
# the test target will execute once for every test-collector-k8s*.conf.in configuration file found
CONFIGURATIONS_SSH := $(shell ls test-collector-ssh*.conf)
CONFIGURATIONS_DOCKER := $(shell ls test-collector-docker*.conf)
TESTS_SSH := $(addprefix test_ssh_,${CONFIGURATIONS_SSH})
TESTS_DOCKER := $(addprefix test_docker_,${CONFIGURATIONS_DOCKER})

all: setup test teardown
all: setup ${TESTS_SSH} ${TESTS_DOCKER} teardown


test:
${TESTS_SSH}: test_ssh_%:
# ds-collector over SSH
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -p -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -X -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing SSH $* \n"
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "git_sha=$$(git rev-parse HEAD)" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -p -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -X -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the SSH cluster" ; ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) ; exit 1 ; fi
# ds-collector over SSH with verbose mode
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -p -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -X -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing SSH verbose $* \n"
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -p -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -X -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the SSH cluster" ; ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) ; exit 1 ; fi

${TESTS_DOCKER}: test_docker_%:
# ds-collector over docker
./collector/ds-collector -T -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -T -p -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -X -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing Docker $* \n"
@echo "" >> $*
@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> $*
@echo "git_sha=$$(git rev-parse HEAD)" >> $*
echo "" >> $*
./collector/ds-collector -T -f $* -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -T -p -f $* -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -X -f $* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ls /tmp/datastax/ | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the docker cluster " ; ls -l /tmp/datastax/ ; exit 1 ; fi

Expand Down
14 changes: 10 additions & 4 deletions ds-collector-tests/cluster-vanilla-k8s.make
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# the test target will execute once for every test-collector-k8s*.conf.in configuration file found
CONFIGURATIONS := $(shell ls test-collector-k8s*.conf.in)
TESTS := $(addprefix test_,${CONFIGURATIONS})

all: setup test teardown
all: setup ${TESTS} teardown


test:
${TESTS}: test_%:
# ds-collector over k8s
cp test-collector-k8s.conf.in /tmp/datastax/test-collector-k8s.conf
@echo "\n Testing $* \n"
cp $* /tmp/datastax/test-collector-k8s.conf
@echo "" >> /tmp/datastax/test-collector-k8s.conf
@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> /tmp/datastax/test-collector-k8s.conf
@echo "git_sha=$$(git rev-parse HEAD)" >> /tmp/datastax/test-collector-k8s.conf
echo "" >> /tmp/datastax/test-collector-k8s.conf
echo "cqlshUsername=$$(kubectl -n cass-operator get secret cluster1-superuser -o yaml | grep " username" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-k8s.conf
echo "cqlshPassword=$$(kubectl -n cass-operator get secret cluster1-superuser -o yaml | grep " password" | awk -F" " '{print $$2}' | base64 -d && echo "")" >> /tmp/datastax/test-collector-k8s.conf
Expand Down
41 changes: 29 additions & 12 deletions ds-collector-tests/cluster-vanilla-ssh-docker.make
Original file line number Diff line number Diff line change
@@ -1,24 +1,41 @@
# the test target will execute once for every test-collector-k8s*.conf.in configuration file found
CONFIGURATIONS_SSH := $(shell ls test-collector-ssh*.conf)
CONFIGURATIONS_DOCKER := $(shell ls test-collector-docker*.conf)
TESTS_SSH := $(addprefix test_ssh_,${CONFIGURATIONS_SSH})
TESTS_DOCKER := $(addprefix test_docker_,${CONFIGURATIONS_DOCKER})

all: setup test teardown
all: setup ${TESTS_SSH} ${TESTS_DOCKER} teardown


test:
${TESTS_SSH}: test_ssh_%:
# ds-collector over SSH
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -p -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -X -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing SSH $* \n"
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "git_sha=$$(git rev-parse HEAD)" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 sh -c 'echo "" >> /ds-collector-tests/$*'
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -T -p -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -X -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the SSH cluster" ; ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) ; exit 1 ; fi
# ds-collector over SSH with verbose mode
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -p -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -X -f /ds-collector-tests/test-collector-ssh.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing SSH verbose $* \n"
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -T -p -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
docker exec -t ds-collector-tests_bastion_1 /collector/ds-collector -v -X -f /ds-collector-tests/$* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the SSH cluster" ; ( docker exec ds-collector-tests_bastion_1 ls /tmp/datastax/ ) ; exit 1 ; fi

${TESTS_DOCKER}: test_docker_%:
# ds-collector over docker
./collector/ds-collector -T -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -T -p -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -X -f test-collector-docker.conf -n ds-collector-tests_cassandra-00_1
@echo "\n Testing Docker $* \n"
@echo "" >> $*
@echo "git_branch=$$(git rev-parse --abbrev-ref HEAD)" >> $*
@echo "git_sha=$$(git rev-parse HEAD)" >> $*
echo "" >> $*
./collector/ds-collector -T -f $* -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -T -p -f $* -n ds-collector-tests_cassandra-00_1
./collector/ds-collector -X -f $* -n ds-collector-tests_cassandra-00_1
# test archives exist
if ! ls /tmp/datastax/ | grep -q ".tar.gz" ; then echo "Failed to generate artefacts in the docker cluster " ; ls -l /tmp/datastax/ ; exit 1 ; fi

Expand Down
133 changes: 133 additions & 0 deletions ds-collector-tests/test-collector-docker-parallel.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#
# tlp_collector configuration file
#
#

# base cassandra log and configuration directories
# update if you aren't using the default directory
#
#logHome="/var/log/cassandra"
#configHome="/etc/cassandra"
basedir="/tmp/datastax-ds-collector-docker-test/"

# When the Cassandra nodes are inside docker containers
# Use docker commands to connect to nodes instead of ssh
# hostFile and hostName settings then need to use docker container IDs
#
# It is typical to also `skipSudo=true` (see below) on docker containers.
#
use_docker="true"

# When the Cassandra nodes are inside kubernetes pods
# Use kubectl commands to connect to nodes instead of ssh
# hostFile and hostName settings then need to use k8s pod names
#
# It is typical to also `skipSudo=true` (see below)
#
#use_k8s="true"
#k8s_namespace="default"

# base ssh options, do not override defaults
# without completing a connection test
#
#sshOptionHostkeyCheck="false"
#sshOptionAgentForwarding="true"
#sshOptionVerbose="false"
#sshOptionConnectTimeout="true"
#sshOptionConnectAttempts="true"

# if an identity file to authenticate to the target nodes
# is needed, specify it in sshIdentity
#
#sshIdentity=""

# if using password authentication for ssh and scp, specify
# it in sshPassword (requires sshpass command)
#
#sshPassword="root"

# add additional binary path if needed
#
addPath="/opt/java/openjdk/bin"

# specify additional ssh options as needed for your environment
# complete a connection test before adding extra options
#
#sshArgs=""
#scpArgs=""

# if you want to specify a file containing a list of hosts
# use the qualified path to the list in hostFile
#
#hostFile=""

# if you only have a single target node you want to collect from
# you can enter the connection details here
# setting a hostFile above will take precedence
#
#hostName=""

# if you want nodes to be collected in parallel, specify
# all – for collecting all nodes at the same time, fastest and dangerous
# rack – not yet supported
# none – every node sequentially, the default behaviour
#
parallel_mode="all"

# the user name to use when connecting to the target nodes(),
# the user should have sudo access.
# commenting userName will set the default to root
#
#userName="ubuntu"

# the provided issue id to reference the artifacts
# a generic issueId will be generated if not provided here
#
issueId="TEST_DS_COLLECTOR-001"

# the JMX port to connect to when when gathering metrics via JMX
# this will be the value that JMX_PORT is set to in the cassandra-env.sh file
#
#jmxPort="7199"
#jmxUsername=""
#jmxPassword=""

# skip iostat and vmstat collection
#
#skipStat="true"

# skip any calls that require sudo
#
#skipSudo="true"

# skip pushing artifacts to s3
#
skipS3="true"

# uploads are encrypted by default
#
encrypt_uploads="false"

# skip deleting artifact from central host after successful push to s3
# this will keep a local copy of the artifact on the central host
#
keepArtifact="true"

# s3 key
# default key provided, only use to override
#
#keyId=""
#keySecret=""

# s3 auth
# default is to use s3Auth to upload
#

# cqlsh authentication
# Used to extract the schema
#cqlshUsername=""
#cqlshPassword=""

# cqlsh SSL encryption
#
#$cqlshSSL="false"
Loading

0 comments on commit f8777f8

Please sign in to comment.