Skip to content

Commit

Permalink
make test-ci
Browse files Browse the repository at this point in the history
  • Loading branch information
YenchangChan committed Jul 13, 2021
1 parent 86050aa commit 4248540
Show file tree
Hide file tree
Showing 13 changed files with 113 additions and 1,035 deletions.
9 changes: 3 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,12 @@ deb:build
.PHONY: test-ci
test-ci:package
@rm -rf /tmp/ckman
@tar -xzf ${PKGDIR}-*.Linux.x86_64.tar.gz -C /tmp
@tar -xzf ${TARNAME} -C /tmp
@cp -r ./tests /tmp/ckman
@cp go.test.sh /tmp/ckman/bin
@docker-compose stop
@docker-compose up -d
@docker run --rm -itd --network ckman_default --privileged=true --name ckman -p8808:8808 -w /tmp/ckman -v /tmp/ckman:/tmp/ckman eoitek/ckman-clickhouse:centos-7
@bash ./docker_env.sh
@docker exec -it ckman /tmp/ckman/bin/go.test.sh
@docker stop ckman
@bash ./go.test.sh
@docker-compose down -v

.PHONY: docker-image
Expand All @@ -127,4 +124,4 @@ release:

.PHONY: lint
lint:
golangci-lint run -D errcheck,govet
golangci-lint run -D errcheck,govet
19 changes: 3 additions & 16 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
version: "3"
services:
zookeeper:
image: wurstmeister/zookeeper
image: zookeeper:3.7.0
ports:
- "2181:2181"

clickhouse:
image: yandex/clickhouse-server:20.9.3.45
volumes:
- ./tests/conf:/etc/clickhouse-server
deploy:
mode: replicated
replicas: 3

prometheus:
image: prom/prometheus
ports:
- "9090:9090"
- "12181:2181"

cknode:
image: eoitek/ckman-clickhouse:centos-7
privileged: true
deploy:
mode: replicated
replicas: 2
replicas: 4
66 changes: 26 additions & 40 deletions docker_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,57 +5,43 @@
OUTFILES=/tmp/ckman/conf/docker_env.conf

if [[ ! -d /tmp/ckman ]];then
mkdir /tmp/ckman
mkdir -p /tmp/ckman/conf
fi

rm -rf ${OUTFILES}

# be used for test ImportCK
DOCKER_CLICKHOUSE_HOSTS=""

# be used for test DeployCK
DOCKER_CLICKHOUSE_NODES=""
DOCKER_SHARDS_REPLICAS=""

# be used for test AddNode
DOCKER_CKNODE=""

#zookeeper host
DOCKER_ZOOKEEPER_HOSTS=""

#promethues host
DOCKER_PROM_HOST=""

for ck in $(docker ps -a |grep clickhouse-server |awk '{print $1}')
do
CK_HOST=$(docker inspect ${ck}|grep IPAddress|grep -v \"\" |grep -v null|awk -F : '{print $2}')
DOCKER_CLICKHOUSE_HOSTS=${DOCKER_CLICKHOUSE_HOSTS}${CK_HOST}
done
DOCKER_CLICKHOUSE_HOSTS=$(echo ${DOCKER_CLICKHOUSE_HOSTS}|sed 's/.$//')
DOCKER_CLICKHOUSE_HOSTS="["${DOCKER_CLICKHOUSE_HOSTS}"]"

node=$(docker ps -a |grep ckman_cknode_1 |awk '{print $1}')
DOCKER_CLICKHOUSE_NODE=$(docker inspect ${node}|grep IPAddress|grep -v \"\" |grep -v null|cut -d ':' -f 2 |cut -d ',' -f 1)
DOCKER_SHARDS_REPLICAS=${DOCKER_CLICKHOUSE_NODE}
DOCKER_CLICKHOUSE_NODE="["${DOCKER_CLICKHOUSE_NODE}"]"

cknode=$(docker ps -a |grep ckman_cknode_2 |awk '{print $1}')
DOCKER_CKNODE=$(docker inspect ${cknode}|grep IPAddress|grep -v \"\" |grep -v null|cut -d ':' -f 2 |cut -d ',' -f 1)

for zk in $(docker ps -a |grep zookeeper |awk '{print $1}')
do
ZK_HOST=$(docker inspect ${zk}|grep IPAddress|grep -v \"\" |grep -v null|awk -F : '{print $2}')
DOCKER_ZOOKEEPER_HOSTS=${DOCKER_ZOOKEEPER_HOSTS}${ZK_HOST}
done
DOCKER_ZOOKEEPER_HOSTS=$(echo ${DOCKER_ZOOKEEPER_HOSTS}|sed 's/.$//')
DOCKER_ZOOKEEPER_HOSTS="["${DOCKER_ZOOKEEPER_HOSTS}"]"

prom=$(docker ps -a |grep prometheus |awk '{print $1}')
DOCKER_PROM_HOST=$(docker inspect ${prom}|grep IPAddress|grep -v \"\" |grep -v null|awk -F '"' '{print $(NF-1)}')

echo "DOCKER_CLICKHOUSE_HOSTS="${DOCKER_CLICKHOUSE_HOSTS} >> ${OUTFILES}
echo "DOCKER_CLICKHOUSE_NODE="${DOCKER_CLICKHOUSE_NODE} >> ${OUTFILES}
echo "DOCKER_SHARDS_REPLICAS="${DOCKER_SHARDS_REPLICAS} >> ${OUTFILES}
echo "DOCKER_CKNODE="${DOCKER_CKNODE} >> ${OUTFILES}
node1=$(docker ps -a |grep ckman_cknode_1 |awk '{print $1}')
DOCKER_NODE1=$(docker exec $node1 cat /etc/hosts |grep $node1| awk '{print $1}')

node2=$(docker ps -a |grep ckman_cknode_2 |awk '{print $1}')
DOCKER_NODE2=$(docker exec $node2 cat /etc/hosts |grep $node2| awk '{print $1}')

node3=$(docker ps -a |grep ckman_cknode_3 |awk '{print $1}')
DOCKER_NODE3=$(docker exec $node3 cat /etc/hosts |grep $node3| awk '{print $1}')


node4=$(docker ps -a |grep ckman_cknode_4 |awk '{print $1}')
DOCKER_NODE4=$(docker exec $node4 cat /etc/hosts |grep $node4| awk '{print $1}')

DOCKER_CLICKHOUSE_NODES="[\"${DOCKER_NODE1}\",\"${DOCKER_NODE2}\",\"${DOCKER_NODE3}\",\"${DOCKER_NODE4}\"]"

zk=$(docker ps -a |grep zookeeper |awk '{print $1}')
DOCKER_ZOOKEEPER_HOSTS=$(docker exec $zk cat /etc/hosts |grep $zk| awk '{print $1}')
DOCKER_ZOOKEEPER_HOSTS="[\"${DOCKER_ZOOKEEPER_HOSTS}\"]"


echo "DOCKER_NODE1="${DOCKER_NODE1} >> ${OUTFILES}
echo "DOCKER_NODE2="${DOCKER_NODE2} >> ${OUTFILES}
echo "DOCKER_NODE3="${DOCKER_NODE3} >> ${OUTFILES}
echo "DOCKER_NODE4="${DOCKER_NODE4} >> ${OUTFILES}
echo "DOCKER_CLICKHOUSE_NODES="${DOCKER_CLICKHOUSE_NODES} >> ${OUTFILES}
echo "DOCKER_ZOOKEEPER_HOSTS="${DOCKER_ZOOKEEPER_HOSTS} >> ${OUTFILES}
echo "DOCKER_PROM_HOST="${DOCKER_PROM_HOST} >> ${OUTFILES}
100 changes: 53 additions & 47 deletions go.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ POST=""
GET=""
PUT=""
DELETE=""
DOCKER_NODE4=""

PRINT_TITTLE()
{
Expand All @@ -20,8 +21,8 @@ PRINT_TITTLE()
GetToken()
{
PRINT_TITTLE "Login"
resp=$(curl -s -H "Content-Type: application/json" "localhost:8808/api/login" -d '{"username":"ckman", "password":"63cb91a2ceb9d4f7c8b1ba5e50046f52"}')
token=$(echo ${resp}|jq '.data.token'|awk -F \" '{print $2}')
resp=$(curl -s -H "Content-Type: application/json" "localhost:18808/api/login" -d '{"username":"ckman", "password":"63cb91a2ceb9d4f7c8b1ba5e50046f52"}')
token=$(echo ${resp}|jq '.entity.token'|awk -F \" '{print $2}')
echo ${resp}|jq
POST="curl -s -H Content-Type:application/json -H token:${token} -X POST -d "
GET="curl -s -H token:${token} "
Expand All @@ -33,40 +34,38 @@ GetToken()
CheckResult()
{
echo $2|jq
retcode=$(echo $2|jq '.code')
if [[ ${retcode} = "200" ]];then
retcode=$(echo $2|jq '.retCode')
if [[ ${retcode} = "0" ]];then
echo -e "\033[32m"$1"...[SUCCESS]\033[0m"
else
echo -e "\033[31m"$1"...[FAILURE]\033[0m"
Destroy
exit 1
fi
}

ReplaceTemplate()
{
DOCKER_CLICKHOUSE_HOSTS=$(grep 'DOCKER_CLICKHOUSE_HOSTS' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_CLICKHOUSE_NODE=$(grep 'DOCKER_CLICKHOUSE_NODE' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_SHARDS_REPLICAS=$(grep 'DOCKER_SHARDS_REPLICAS' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_CKNODE=$(grep 'DOCKER_CKNODE' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_NODE1=$(grep 'DOCKER_NODE1' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_NODE2=$(grep 'DOCKER_NODE2' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_NODE3=$(grep 'DOCKER_NODE3' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_NODE4=$(grep 'DOCKER_NODE4' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_CLICKHOUSE_NODES=$(grep 'DOCKER_CLICKHOUSE_NODES' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_ZOOKEEPER_HOSTS=$(grep 'DOCKER_ZOOKEEPER_HOSTS' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
DOCKER_PROM_HOST=$(grep 'DOCKER_PROM_HOST' /tmp/ckman/conf/docker_env.conf |awk -F = '{print $2}')
sed -i "s/{DOCKER_CLICKHOUSE_HOSTS}/${DOCKER_CLICKHOUSE_HOSTS}/g" `grep -rl '{DOCKER_CLICKHOUSE_HOSTS}' /tmp/ckman/tests`
sed -i "s/{DOCKER_CLICKHOUSE_NODE}/${DOCKER_CLICKHOUSE_NODE}/g" `grep -rl '{DOCKER_CLICKHOUSE_NODE}' /tmp/ckman/tests`
sed -i "s/{DOCKER_CKNODE}/${DOCKER_CKNODE}/g" `grep -rl '{DOCKER_CKNODE}' /tmp/ckman/tests`
sed -i "s/{DOCKER_SHARDS_REPLICAS}/${DOCKER_SHARDS_REPLICAS}/g" `grep -rl '{DOCKER_SHARDS_REPLICAS}' /tmp/ckman/tests`
sed -i "s/{DOCKER_NODE1}/${DOCKER_NODE1}/g" `grep -rl '{DOCKER_NODE1}' /tmp/ckman/tests`
sed -i "s/{DOCKER_NODE2}/${DOCKER_NODE2}/g" `grep -rl '{DOCKER_NODE2}' /tmp/ckman/tests`
sed -i "s/{DOCKER_NODE3}/${DOCKER_NODE3}/g" `grep -rl '{DOCKER_NODE3}' /tmp/ckman/tests`
sed -i "s/{DOCKER_NODE4}/${DOCKER_NODE4}/g" `grep -rl '{DOCKER_NODE4}' /tmp/ckman/tests`
sed -i "s/{DOCKER_CLICKHOUSE_NODES}/${DOCKER_CLICKHOUSE_NODES}/g" `grep -rl '{DOCKER_CLICKHOUSE_NODES}' /tmp/ckman/tests`
sed -i "s/{DOCKER_ZOOKEEPER_HOSTS}/${DOCKER_ZOOKEEPER_HOSTS}/g" `grep -rl '{DOCKER_ZOOKEEPER_HOSTS}' /tmp/ckman/tests`
sed -i "s/127.0.0.1:19090/${DOCKER_PROM_HOST}:9090/g" /tmp/ckman/conf/ckman.yaml

DOCKER_ZOOKEEPER_HOST=$(echo ${DOCKER_ZOOKEEPER_HOSTS}|awk -F \" '{print $2}')
DOCKER_CLICKHOUSE_HOST=$(echo ${DOCKER_CLICKHOUSE_HOSTS}|awk -F \" '{print $2}')
sed -i "s/{DOCKER_ZOOKEEPER_HOST}/${DOCKER_ZOOKEEPER_HOST}/g" /tmp/ckman/tests/conf/metrika.xml
sed -i "s/{DOCKER_CLICKHOUSE_HOST}/${DOCKER_CLICKHOUSE_HOST}/g" /tmp/ckman/tests/conf/metrika.xml
sed -i 's/port: 8808/port: 18808/g' /tmp/ckman/conf/ckman.yaml
sed -i 's#<listen_host>{{.CkListenHost}}</listen_host>#<listen_host>0.0.0.0</listen_host>#g' /tmp/ckman/template/config.xml
}

PrepareCKPkg()
{
cd /tmp/ckman/package
version=20.9.3.45
version=$1
common=clickhouse-common-static-${version}-2.x86_64.rpm
client=clickhouse-client-${version}-2.noarch.rpm
server=clickhouse-server-${version}-2.noarch.rpm
Expand All @@ -82,13 +81,29 @@ PrepareCKPkg()
cd /tmp/ckman
}

Installjq()
{
if test $(which jq) = "" ; then
yum install -y epel-release > /dev/null
yum install -y jq > /dev/null
fi
}

# initalize ckman running environment
Init()
{
if test $(uname) != "Linux"; then
echo "This platform not support this script."
exit 1
fi
cd /tmp/ckman
ReplaceTemplate
bin/stop 2>/dev/null
PrepareCKPkg 20.9.3.45
PrepareCKPkg 21.3.9.83
Installjq
bin/start
PrepareCKPkg
sleep 1
}


Expand All @@ -101,57 +116,48 @@ Destroy()
DeployCKTest()
{
PRINT_TITTLE "DeployCK"
resp=$(${POST} @/tmp/ckman/tests/DeployCK.json "localhost:8808/api/v1/deploy/ck")
resp=$(${POST} @/tmp/ckman/tests/DeployCK.json "localhost:18808/api/v1/deploy/ck")
CheckResult "DeployCK" "${resp}"
}

DestroyCKTest()
{
PRINT_TITTLE "DestroyCK"
resp=$(${PUT} "localhost:8808/api/v1/ck/destroy/test")
resp=$(${PUT} "localhost:18808/api/v1/ck/destroy/test")
CheckResult "DestoryCK" "${resp}"
}

ImportCkTest()
{
PRINT_TITTLE "ImportCK"
resp=$(${POST} @/tmp/ckman/tests/ImportCK.json "localhost:8808/api/v1/ck/cluster")
CheckResult "ImportCK" "${resp}"
}

DeleteCkTest()
{
PRINT_TITTLE "DeleteCK"
resp=$(${DELETE} "localhost:8808/api/v1/ck/cluster/aa")
CheckResult "DeleteCK" "${resp}"
}

AddNodeTest()
{
PRINT_TITTLE "AddNode-"$1
resp=$(${POST} @/tmp/ckman/tests/AddNode_$1.json "localhost:8808/api/v1/ck/node/test")
PRINT_TITTLE "AddNode"
resp=$(${POST} @/tmp/ckman/tests/AddNode.json "localhost:18808/api/v1/ck/node/test")
CheckResult "AddNode" "${resp}"
}

DeleteNodeTest()
{
PRINT_TITTLE "DeleteNode"
DOCKER_CKNODE=$(grep 'DOCKER_CKNODE' /tmp/ckman/conf/docker_env.conf |awk -F \" '{print $2}')
resp=$(${DELETE} "localhost:8808/api/v1/ck/node/test?ip=${DOCKER_CKNODE}")
resp=$(${DELETE} "localhost:18808/api/v1/ck/node/test?ip=${DOCKER_NODE4}")
CheckResult "DeleteNode" "${resp}"
}

UpgradeTest()
{
PRINT_TITTLE "Upgrade"
resp=$(${PUT} -d @/tmp/ckman/tests/Upgrade.json "localhost:18808/api/v1/ck/upgrade/test")
CheckResult "Upgrade" "${resp}"

}

SysTest()
{
GetToken
ImportCkTest
DeleteCkTest
DeployCKTest
AddNodeTest Replica
DeleteNodeTest
AddNodeTest NotReplica
DestroyCKTest

AddNodeTest
UpgradeTest
#DestroyCKTest
}

main()
Expand All @@ -164,4 +170,4 @@ main()
}

# __main__ start
main
main
4 changes: 4 additions & 0 deletions tests/AddNode.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"ips": ["{DOCKER_NODE4}"],
"shard": 2
}
4 changes: 0 additions & 4 deletions tests/AddNode_NotReplica.json

This file was deleted.

4 changes: 0 additions & 4 deletions tests/AddNode_Replica.json

This file was deleted.

30 changes: 21 additions & 9 deletions tests/DeployCK.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,36 @@
{
"hosts": {DOCKER_CLICKHOUSE_NODE},
"hosts": {DOCKER_CLICKHOUSE_NODES},
"user": "root",
"password": "123456",
"sshPort":22,
"clickhouse": {
"path": "/var/",
"path": "/var/lib",
"user": "ck",
"password": "123456",
"zkNodes": {DOCKER_ZOOKEEPER_HOSTS},
"zkPort": 2181,
"zkPort": 12181,
"zkStatusPort": 8080,
"clustername": "test",
"shards": [{
"replicas":[
{
"ip": {DOCKER_SHARDS_REPLICAS},
"hostname": "localhost"
}
"ip": "{DOCKER_NODE1}"
},
{
"ip": "{DOCKER_NODE2}"
}
]
}],
}, {
"replicas" :[
{
"ip": "{DOCKER_NODE3}"
},
{
"ip": "{DOCKER_NODE4}"
}
]
}],
"packageVersion": "20.9.3.45",
"ckTcpPort": 9000
"ckTcpPort": 19000
}
}
}
Loading

0 comments on commit 4248540

Please sign in to comment.