Przeglądaj źródła

Merge pull request #393 from Shopify/toxiproxy-tests

Install and use toxiproxy in vagrant
Evan Huus 10 lat temu
rodzic
commit
6c8980798e

+ 3 - 3
.travis.yml

@@ -1,12 +1,12 @@
 language: go
 go:
-- 1.3
-- 1.4
+- 1.3.3
+- 1.4.2
 - tip
 
 env:
   global:
-  - KAFKA_PEERS=localhost:6667,localhost:6668,localhost:6669,localhost:6670,localhost:6671
+  - KAFKA_PEERS=localhost:9091,localhost:9092,localhost:9093,localhost:9094,localhost:9095
   - KAFKA_INSTALL_ROOT=/home/travis/kafka
   - KAFKA_HOSTNAME=localhost
   matrix:

+ 1 - 1
functional_test.go

@@ -11,7 +11,7 @@ import (
 )
 
 const (
-	VagrantKafkaPeers     = "192.168.100.67:6667,192.168.100.67:6668,192.168.100.67:6669,192.168.100.67:6670,192.168.100.67:6671"
+	VagrantKafkaPeers     = "192.168.100.67:9091,192.168.100.67:9092,192.168.100.67:9093,192.168.100.67:9094,192.168.100.67:9095"
 	VagrantZookeeperPeers = "192.168.100.67:2181,192.168.100.67:2182,192.168.100.67:2183,192.168.100.67:2184,192.168.100.67:2185"
 )
 

+ 9 - 3
vagrant/boot_cluster.sh

@@ -1,13 +1,19 @@
-#/bin/sh
+#!/bin/sh
 
 set -ex
 
+vagrant/run_toxiproxy.sh &
+
+sleep 5
+
 for i in 1 2 3 4 5; do
-    KAFKA_PORT=`expr $i + 6666`
+    KAFKA_PORT=`expr $i + 9090`
     cd ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT} && bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
 done
 
+sleep 5
+
 for i in 1 2 3 4 5; do
-    KAFKA_PORT=`expr $i + 6666`
+    KAFKA_PORT=`expr $i + 9090`
     cd ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT} && bin/kafka-server-start.sh -daemon config/server.properties
 done

+ 1 - 1
vagrant/create_topics.sh

@@ -4,7 +4,7 @@ set -ex
 
 sleep 10
 
-cd ${KAFKA_INSTALL_ROOT}/kafka-6667
+cd ${KAFKA_INSTALL_ROOT}/kafka-9092
 bin/kafka-topics.sh --create --partitions 1 --replication-factor 3 --topic single_partition --zookeeper localhost:2181
 bin/kafka-topics.sh --create --partitions 2 --replication-factor 3 --topic multi_partition  --zookeeper localhost:2181
 

+ 12 - 3
vagrant/install_cluster.sh

@@ -1,15 +1,23 @@
-#/bin/sh
+#!/bin/sh
 
 set -ex
 
+TOXIPROXY_VERSION=1.0.0
+
 mkdir -p ${KAFKA_INSTALL_ROOT}
 if [ ! -f ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_VERSION}.tgz ]; then
     wget --quiet http://apache.mirror.gtcomm.net/kafka/${KAFKA_VERSION}/kafka_2.10-${KAFKA_VERSION}.tgz -O ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_VERSION}.tgz
 fi
+if [ ! -f ${KAFKA_INSTALL_ROOT}/toxiproxy ]; then
+    wget --quiet https://github.com/Shopify/toxiproxy/releases/download/v${TOXIPROXY_VERSION}/toxiproxy-linux-amd64 -O ${KAFKA_INSTALL_ROOT}/toxiproxy
+    chmod +x ${KAFKA_INSTALL_ROOT}/toxiproxy
+fi
 
 for i in 1 2 3 4 5; do
     ZK_PORT=`expr $i + 2180`
-    KAFKA_PORT=`expr $i + 6666`
+    ZK_PORT_REAL=`expr $i + 21800`
+    KAFKA_PORT=`expr $i + 9090`
+    KAFKA_PORT_REAL=`expr $i + 29090`
 
     # unpack kafka
     mkdir -p ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}
@@ -18,6 +26,7 @@ for i in 1 2 3 4 5; do
     # broker configuration
     cp ${REPOSITORY_ROOT}/vagrant/server.properties ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/
     sed -i s/KAFKAID/${KAFKA_PORT}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/server.properties
+    sed -i s/KAFKAPORT/${KAFKA_PORT_REAL}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/server.properties
     sed -i s/KAFKA_HOSTNAME/${KAFKA_HOSTNAME}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/server.properties
 
     KAFKA_DATADIR="${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/data"
@@ -27,7 +36,7 @@ for i in 1 2 3 4 5; do
     # zookeeper configuration
     cp ${REPOSITORY_ROOT}/vagrant/zookeeper.properties ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/
     sed -i s/KAFKAID/${KAFKA_PORT}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/zookeeper.properties
-    sed -i s/ZK_PORT/${ZK_PORT}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/zookeeper.properties
+    sed -i s/ZK_PORT/${ZK_PORT_REAL}/g ${KAFKA_INSTALL_ROOT}/kafka-${KAFKA_PORT}/config/zookeeper.properties
 
     ZK_DATADIR="${KAFKA_INSTALL_ROOT}/zookeeper-${ZK_PORT}"
     mkdir -p ${ZK_DATADIR}

+ 22 - 0
vagrant/run_toxiproxy.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -ex
+
+${KAFKA_INSTALL_ROOT}/toxiproxy -port 8474 -host 0.0.0.0 &
+PID=$!
+
+sleep 5
+
+wget -S --post-data='{"name":"zk1", "upstream":"localhost:21801", "listen":"0.0.0.0:2181"}' localhost:8474/proxies
+wget -S --post-data='{"name":"zk2", "upstream":"localhost:21802", "listen":"0.0.0.0:2182"}' localhost:8474/proxies
+wget -S --post-data='{"name":"zk3", "upstream":"localhost:21803", "listen":"0.0.0.0:2183"}' localhost:8474/proxies
+wget -S --post-data='{"name":"zk4", "upstream":"localhost:21804", "listen":"0.0.0.0:2184"}' localhost:8474/proxies
+wget -S --post-data='{"name":"zk5", "upstream":"localhost:21805", "listen":"0.0.0.0:2185"}' localhost:8474/proxies
+
+wget -S --post-data='{"name":"kafka1", "upstream":"localhost:29091", "listen":"0.0.0.0:9091"}' localhost:8474/proxies
+wget -S --post-data='{"name":"kafka2", "upstream":"localhost:29092", "listen":"0.0.0.0:9092"}' localhost:8474/proxies
+wget -S --post-data='{"name":"kafka3", "upstream":"localhost:29093", "listen":"0.0.0.0:9093"}' localhost:8474/proxies
+wget -S --post-data='{"name":"kafka4", "upstream":"localhost:29094", "listen":"0.0.0.0:9094"}' localhost:8474/proxies
+wget -S --post-data='{"name":"kafka5", "upstream":"localhost:29095", "listen":"0.0.0.0:9095"}' localhost:8474/proxies
+
+wait $PID

+ 3 - 2
vagrant/server.properties

@@ -22,15 +22,16 @@ broker.id=KAFKAID
 ############################# Socket Server Settings #############################
 
 # The port the socket server listens on
-port=KAFKAID
+port=KAFKAPORT
 
 # Hostname the broker will bind to. If not set, the server will bind to all interfaces
-#host.name=localhost
+host.name=localhost
 
 # Hostname the broker will advertise to producers and consumers. If not set, it uses the
 # value for "host.name" if configured.  Otherwise, it will use the value returned from
 # java.net.InetAddress.getCanonicalHostName().
 advertised.host.name=KAFKA_HOSTNAME
+advertised.port=KAFKAID
 
 # The port to publish to ZooKeeper for clients to use. If this is not set,
 # it will publish the same port that the broker binds to.

+ 7 - 2
vagrant/setup_services.sh

@@ -1,10 +1,15 @@
-#/bin/sh
+#!/bin/sh
 
 set -ex
 
+stop toxiproxy || true
+cp ${REPOSITORY_ROOT}/vagrant/toxiproxy.conf /etc/init/toxiproxy.conf
+cp ${REPOSITORY_ROOT}/vagrant/run_toxiproxy.sh ${KAFKA_INSTALL_ROOT}/
+start toxiproxy
+
 for i in 1 2 3 4 5; do
     ZK_PORT=`expr $i + 2180`
-    KAFKA_PORT=`expr $i + 6666`
+    KAFKA_PORT=`expr $i + 9090`
 
     stop zookeeper-${ZK_PORT} || true
 

+ 6 - 0
vagrant/toxiproxy.conf

@@ -0,0 +1,6 @@
+start on started networking
+stop on shutdown
+
+env KAFKA_INSTALL_ROOT=/opt
+
+exec /opt/run_toxiproxy.sh

+ 2 - 2
vagrant/zookeeper.conf

@@ -1,4 +1,4 @@
-start on filesystem or runlevel [2345]
-stop on runlevel [!2345]
+start on started toxiproxy
+stop on stopping toxiproxy
 
 exec /opt/kafka-KAFKAID/bin/zookeeper-server-start.sh /opt/kafka-KAFKAID/config/zookeeper.properties