aboutsummaryrefslogtreecommitdiff
path: root/kafka/test/replication-config.yml
blob: abaea491988505b52d641a0ad44fb5090f429d7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# https://github.com/Yolean/kubernetes-kafka/pull/140
---
kind: ConfigMap
metadata:
  name: replication-config
  namespace: test-kafka
apiVersion: v1
data:

  setup.sh: |-
    touch /tmp/testlog

    tail -f /tmp/testlog

  test.sh: |-
    exec >> /tmp/testlog
    exec 2>&1
    set -e

    kafkacat -L -b $BOOTSTRAP > /tmp/metadata
    BROKERS=$(cat /tmp/metadata | grep -E ' [0-9]+ brokers:' | awk '{print $1}')
    if (( $BROKERS == 1 )); then
      echo "Only one broker; no need to check for >1 replication config."
      exit 0
    fi

    WITH_TWO_OR_MORE=$(cat /tmp/metadata | grep -E ' replicas: [0-9]+,[0-9]+' | wc -l)
    WITH_ONE=$(cat /tmp/metadata | grep -E ' replicas: [0-9]+, ' | wc -l)
    if (( $WITH_TWO_OR_MORE == 0 )); then
      echo "No partitions have >1 replica, so this is probably normal."
      exit 0
    fi

    if (( $WITH_ONE > $MAX_SINGLE_REPLICA_PARTITIONS )); then
      echo "$(date --iso-8601='ns') There are $WITH_ONE partitions with only one replica. Alerts for under-replicated partitions won't catch that."
      exit 10
    fi

    echo "$(date --iso-8601='ns') $WITH_ONE partitions have one replica and WITH_TWO_OR_MORE have more"
    exit 0

  quit-on-nonzero-exit.sh: |-
    exec >> /tmp/testlog
    exec 2>&1

    exit 0
---
apiVersion: apps/v1beta2
kind: ReplicaSet
metadata:
  name: replication-config
  namespace: test-kafka
spec:
  # Note that this test sets a consumer group, but asserts assume that the tests gets its own messages
  replicas: 1
  selector:
    matchLabels:
      test-target: kafka-replication-config
      test-type: readiness
  template:
    metadata:
      labels:
        test-target: kafka-replication-config
        test-type: readiness
    spec:
      containers:
      - name: testcase
        image: solsson/kafkacat@sha256:b32eedf936f3cde44cd164ddc77dfcf7565a8af4e357ff6de1abe4389ca530c9
        env:
        - name: BOOTSTRAP
          value: bootstrap.kafka:9092
        - name: MAX_SINGLE_REPLICA_PARTITIONS
          value: "0"
        command:
        - /bin/bash
        - -e
        - /test/setup.sh
        readinessProbe:
          exec:
            command:
            - /bin/bash
            - -e
            - /test/test.sh
          initialDelaySeconds: 30
          periodSeconds: 60
        livenessProbe:
          exec:
            command:
            - /bin/bash
            - -e
            - /test/quit-on-nonzero-exit.sh
        volumeMounts:
        - name: config
          mountPath: /test
      volumes:
      - name: config
        configMap:
          name: replication-config