rainbows.git  about / heads / tags
Unicorn for sleepy apps and slow clients
blob 86476e04c55235b8626d35557aef97b4bad121a9 2102 bytes (raw)
$ git show v0.3.0:t/test-lib.sh	# shows this blob on the CLI

  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
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 
#!/bin/sh
# Copyright (c) 2009 Rainbows! developers

# pipefail is non-POSIX, but useful in ksh/bash
(
	set +e
	set -o pipefail 2>/dev/null
)
if test $? -eq 0
then
	set -o pipefail
else
	echo >&2 "WARNING: your shell does not understand pipefail"
fi

set -e

T=$(basename $0)
if test -z "$model"
then
	case $T in
	t1???-thread-pool-*.sh) model=ThreadPool ;;
	t2???-thread-spawn-*.sh) model=ThreadSpawn ;;
	t3???-revactor-*.sh) model=Revactor ;;
	t4???-rev-*.sh) model=Rev ;;
	*) model=any ;;
	esac
fi

ruby="${ruby-'ruby'}"
RUBY_VERSION=${RUBY_VERSION-$($ruby -e 'puts RUBY_VERSION')}
t_pfx=$PWD/trash/$T-$RUBY_VERSION
set -u

# ensure a sane environment
TZ=UTC LC_ALL=C LANG=C
export LANG LC_ALL TZ
unset CDPATH

die () {
	echo >&2 "$@"
	exit 1
}

_test_on_exit () {
	code=$?
	case $code in
	0)
		echo "ok $T"
		rm -f $_TEST_OK_RM_LIST
	;;
	*) echo "not ok $T" ;;
	esac
	rm -f $_TEST_RM_LIST
	exit $code
}

_TEST_RM_LIST=
_TEST_OK_RM_LIST=
trap _test_on_exit EXIT
PATH=$PWD/bin:$PATH
export PATH

test -x $PWD/bin/unused_listen || die "must be run in 't' directory"

wait_for_pid () {
	path="$1"
	nr=30
	while ! test -s "$path" && test $nr -gt 0
	do
		nr=$(($nr - 1))
		sleep 1
	done
}

require_check () {
	lib=$1
	const=$2
	if ! $ruby -r$lib -e "puts $const" >/dev/null 2>&1
	then
		echo >&2 "skipping $T since we don't have $lib"
		exit 0
	fi
}

# given a list of variable names, create temporary files and assign
# the pathnames to those variables
rtmpfiles () {
	for id in "$@"
	do
		name=$id
		_tmp=$t_pfx.$id
		> $_tmp
		eval "$id=$_tmp"
		_TEST_OK_RM_LIST="$_TEST_OK_RM_LIST $_tmp"

		case $name in
		*fifo)
			rm -f $_tmp
			mkfifo $_tmp
			_TEST_RM_LIST="$_TEST_RM_LIST $_tmp"
			;;
		esac
	done
}

dbgcat () {
	id=$1
	eval '_file=$'$id
	echo "==> $id <=="
	sed -e "s/^/$id:/" < $_file
}

check_stderr () {
	set +u
	_r_err=${1-${r_err}}
	set -u
	if grep Error $_r_err
	then
		die "Errors found in $_r_err"
	elif grep SIGKILL $_r_err
	then
		die "SIGKILL found in $_r_err"
	fi
}

case $model in
Rev) require_check rev Rev::VERSION ;;
Revactor) require_check revactor Revactor::VERSION ;;
esac

git clone https://yhbt.net/rainbows.git