aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStaffan Olsson <staffan@repos.se>2018-01-22 11:01:55 +0100
committerStaffan Olsson <staffan@repos.se>2018-01-22 11:01:55 +0100
commite8bde62c99b5163cb20e57edeb1a957da892077d (patch)
treed73420a4af37f8bd4373238289939c1b193b0fd7
parentb6a10048146574cac582feb8d5128e24297d353c (diff)
downloadkubernetes-kafka-e8bde62c99b5163cb20e57edeb1a957da892077d.tar.gz
kubernetes-kafka-e8bde62c99b5163cb20e57edeb1a957da892077d.tar.bz2
kubernetes-kafka-e8bde62c99b5163cb20e57edeb1a957da892077d.zip
Varation on the kafkacat test: auto topic creation + actual bootstrap brokers
-rw-r--r--kafka/test/kafkacat_bootstrapbrokers.yml158
1 files changed, 158 insertions, 0 deletions
diff --git a/kafka/test/kafkacat_bootstrapbrokers.yml b/kafka/test/kafkacat_bootstrapbrokers.yml
new file mode 100644
index 0000000..3cb08c3
--- /dev/null
+++ b/kafka/test/kafkacat_bootstrapbrokers.yml
@@ -0,0 +1,158 @@
+---
+kind: ConfigMap
+metadata:
+ name: kafkacat-bootstrapbrokers
+ namespace: test-kafka
+apiVersion: v1
+data:
+
+ setup.sh: |-
+ touch /tmp/testlog
+
+ tail -f /tmp/testlog
+
+ test.sh: |-
+ exec >> /tmp/testlog
+ exec 2>&1
+
+ PC_WAIT=.2
+ MAX_AGE=5
+
+ UNIQUE="${HOSTNAME}@$(date -u -Ins)"
+
+ echo "${UNIQUE: -41:5}:Test $UNIQUE" >> /shared/produce.tmp
+ sleep $PC_WAIT
+ LAST=$(tail -n 1 /shared/consumed.tmp)
+ [ -z "$LAST" ] && echo "Nothing consumed" && exit 1
+
+ LAST_TS=$(echo $LAST | awk -F';' '{print $1}')
+ [ -z "$LAST_TS" ] && echo "Failed to get timestamp for message: $LAST" && exit 1
+ LAST_MSG=$(echo $LAST | awk -F';' '{print $4}')
+ NOW=$(date -u +%s%3N)
+ DIFF_S=$((($NOW - $LAST_TS)/1000))
+ DIFF_MS=$((($NOW - $LAST_TS)%1000))
+ #echo "$NOW ($(date +%FT%H:%M:%S.%3N)):"
+ #echo "$LAST_TS"
+
+ if [ $DIFF_S -gt $MAX_AGE ]; then
+ echo "Last message is $DIFF_S.$DIFF_MS old:"
+ echo "$LAST_MSG"
+ exit 10
+ fi
+
+ if [[ "$LAST_MSG" != *"$UNIQUE" ]]; then
+ echo "Last message (at $LAST_TS) isn't from this test run ($UNIQUE):"
+ echo "$LAST_MSG"
+ exit 11
+ fi
+
+ # get info about this message
+ kafkacat -Q -b $BOOTSTRAP -t test-kafkacat-bootstrapbrokers:0:$LAST_TS \
+ -X socket.timeout.ms=600 -X session.timeout.ms=300 -X request.timeout.ms=50 -X metadata.request.timeout.ms=600
+ [ $? -eq 0 ] || echo "At $(date +%FT%H:%M:%S.%3N) bootstrap broker(s) might be down"
+ # but don't fail the test; producer and consumer should keep going if there are other brokers
+
+ # We haven't asserted that the consumer works, so we'll just have to assume that it will exit if it fails
+
+ exit 0
+
+ quit-on-nonzero-exit.sh: |-
+ exec >> /tmp/testlog
+ exec 2>&1
+
+ exit 0
+---
+apiVersion: apps/v1beta2
+kind: ReplicaSet
+metadata:
+ name: kafkacat-bootstrapbrokers
+ namespace: test-kafka
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ test-target: kafka-client-kafkacat-bootstrapbrokers
+ test-type: readiness
+ template:
+ metadata:
+ labels:
+ test-target: kafka-client-kafkacat-bootstrapbrokers
+ test-type: readiness
+ # for example:
+ # readonly - can be used in production
+ # isolated - read/write but in a manner that does not affect other services
+ # load - unsuitable for production because it uses significant resources
+ # chaos - unsuitable for production because it injects failure modes
+ #test-use:
+ spec:
+ containers:
+ - name: producer
+ image: solsson/kafkacat@sha256:b32eedf936f3cde44cd164ddc77dfcf7565a8af4e357ff6de1abe4389ca530c9
+ env:
+ - name: BOOTSTRAP
+ value: kafka-0.broker.kafka.svc.cluster.local:9092,kafka-1.broker.kafka.svc.cluster.local:9092,kafka-2.broker.kafka.svc.cluster.local:9092
+ command:
+ - /bin/bash
+ - -cex
+ - >
+ echo "--- start $HOSTNAME $(date --iso-8601='ns' -u) ---" >> /shared/produce.tmp
+ ;
+ tail -f /shared/produce.tmp |
+ kafkacat -P -b $BOOTSTRAP -t test-kafkacat-bootstrapbrokers -v -T -d broker -K ':'
+ ;
+ volumeMounts:
+ - name: config
+ mountPath: /test
+ - name: shared
+ mountPath: /shared
+ - name: consumer
+ image: solsson/kafkacat@sha256:b32eedf936f3cde44cd164ddc77dfcf7565a8af4e357ff6de1abe4389ca530c9
+ env:
+ - name: BOOTSTRAP
+ value: bootstrap.kafka:9092
+ command:
+ - /bin/bash
+ - -cex
+ - >
+ kafkacat -C -b $BOOTSTRAP -t test-kafkacat-bootstrapbrokers -o -1 -f '%T;%k:%p;%o;%s\n' -u -d broker |
+ tee /shared/consumed.tmp
+ ;
+ volumeMounts:
+ - name: config
+ mountPath: /test
+ - name: shared
+ mountPath: /shared
+ - name: testcase
+ image: solsson/kafkacat@sha256:b32eedf936f3cde44cd164ddc77dfcf7565a8af4e357ff6de1abe4389ca530c9
+ env:
+ - name: BOOTSTRAP
+ value: bootstrap.kafka:9092
+ command:
+ - /bin/bash
+ - -e
+ - /test/setup.sh
+ readinessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -e
+ - /test/test.sh
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ livenessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -e
+ - /test/quit-on-nonzero-exit.sh
+ volumeMounts:
+ - name: config
+ mountPath: /test
+ - name: shared
+ mountPath: /shared
+ volumes:
+ - name: config
+ configMap:
+ name: kafkacat-bootstrapbrokers
+ - name: shared
+ emptyDir: {}