#!/bin/sh make -sj8 || exit -1 function exit_func { kill -- -$$ echo "Killed all" exit 0 } trap "exit_func" EXIT SIGINT SIGTERM echo > server_list starting_port=8004 pids=() num_servers=5 interval=2 for ((i = 0; i < $num_servers; ++i)); do ./echo_server -server_num 1 -port $((starting_port+i)) & pids[$i]=$! done usleep 100000 ./echo_client -use_bthread -thread_num 400 -timeout_ms -1 --health_check_interval 1 -dont_fail > echo_client.log 2>&1 & echo ${pids[*]} while true; do echo "Running for $interval seconds..." sleep $interval index=$((RANDOM%num_servers)) server_pid=${pids[$index]} echo "Kill $server_pid(index=$index)" kill -INT $server_pid echo "Wait for another $interval seconds..." sleep $interval if grep -q "BAD\!\|^FATAL:" echo_client.log; then echo "************** Found bug! ***************" echo "Check echo_client.log for client logs" exit 1 fi ./echo_server -server_num 1 -port $((starting_port+index)) & pids[$index]=$! echo "Create echo_server=${pids[$index]} at index=$index" done