123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #!/usr/bin/env bash
- CIDIR=$(dirname $(readlink -fn $0))
- NO_EXPECT=0
- source $CIDIR/ci.functions
- ASTETCDIR=$DESTDIR/etc/asterisk
- asterisk_corefile_glob() {
- local pattern=$(/sbin/sysctl -n kernel.core_pattern)
- # If core_pattern is a pipe there isn't much we can do
- if [[ ${pattern:0:1} == "|" ]] ; then
- echo "core*"
- else
- echo "${pattern%%%*}*"
- fi
- }
- run_tests_expect() {
- $EXPECT <<-EOF
- spawn sudo $ASTERISK ${USER_GROUP:+-U ${USER_GROUP%%:*} -G ${USER_GROUP##*:}} -fcng -C $CONFFILE
- match_max 512
- set timeout 600
- expect -notransfer "Asterisk Ready."
- send "core show settings\r"
- expect -notransfer "CLI>"
- send "${UNITTEST_COMMAND:-test execute all}\r"
- expect -notransfer -ex "Test(s) Executed"
- expect -notransfer "CLI>"
- send "test show results failed\r"
- expect -notransfer "CLI>"
- send "test generate results xml ${OUTPUTFILE}\r"
- expect -notransfer "CLI>"
- send "core stop now\r"
- expect -notransfer "Executing last minute cleanups"
- wait
- EOF
- }
- run_tests_socket() {
- sudo $ASTERISK ${USER_GROUP:+-U ${USER_GROUP%%:*} -G ${USER_GROUP##*:}} -gn -C $CONFFILE
- for n in {1..5} ; do
- sleep 3
- $ASTERISK -rx "core waitfullybooted" -C $CONFFILE && break
- done
- sleep 1
- $ASTERISK -rx "core show settings" -C $CONFFILE
- $ASTERISK -rx "${UNITTEST_COMMAND:-test execute all}" -C $CONFFILE
- $ASTERISK -rx "test show results failed" -C $CONFFILE
- $ASTERISK -rx "test generate results xml $OUTPUTFILE" -C $CONFFILE
- $ASTERISK -rx "core stop now" -C $CONFFILE
- }
- # If DESTDIR is used to install and run asterisk from non standard locations,
- # the directory entries in asterisk.conf need to be munged to prepend DESTDIR.
- ALTERED=$(head -10 ../tmp/DESTDIR/etc/asterisk/asterisk.conf | grep -q "DESTDIR" && echo yes)
- if [ x"$ALTERED" = x ] ; then
- # In the section that starts with [directories and ends with a blank line,
- # replace "=> " with "=> ${DESTDIR}"
- sed -i -r -e "/^\[directories/,/^$/ s@=>\s+@=> ${DESTDIR}@" "$ASTETCDIR/asterisk.conf"
- fi
- cat <<-EOF > "$ASTETCDIR/logger.conf"
- [logfiles]
- full => notice,warning,error,debug,verbose
- console => notice,warning,error
- EOF
- echo "[default]" > "$ASTETCDIR/extensions.conf"
- cat <<-EOF > "$ASTETCDIR/manager.conf"
- [general]
- enabled=yes
- bindaddr=127.0.0.1
- port=5038
- [test]
- secret=test
- read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
- write = system,call,agent,user,config,command,reporting,originate
- EOF
- cat <<-EOF > "$ASTETCDIR/http.conf"
- [general]
- enabled=yes
- bindaddr=127.0.0.1
- bindport=8088
- EOF
- cat <<-EOF > "$ASTETCDIR/modules.conf"
- [modules]
- autoload=yes
- noload=res_mwi_external.so
- noload=res_mwi_external_ami.so
- noload=res_ari_mailboxes.so
- noload=res_stasis_mailbox.so
- EOF
- cat <<-EOF >> "$ASTETCDIR/sorcery.conf"
- [res_pjsip_pubsub]
- resource_list=memory
- EOF
- ASTERISK="$DESTDIR/usr/sbin/asterisk"
- CONFFILE=$ASTETCDIR/asterisk.conf
- OUTPUTDIR=${OUTPUT_DIR:-tests/CI/output/}
- OUTPUTFILE=${OUTPUT_XML:-${OUTPUTDIR}/unittests-results.xml}
- EXPECT="$(which expect 2>/dev/null || : )"
- [ ! -d ${OUTPUTDIR} ] && mkdir -p $OUTPUTDIR
- [ x"$USER_GROUP" != x ] && sudo chown -R $USER_GROUP $OUTPUTDIR
- rm -rf $ASTETCDIR/extensions.{ael,lua} || :
- set -x
- if [ x"$EXPECT" != x -a $NO_EXPECT -eq 0 ] ; then
- run_tests_expect
- else
- run_tests_socket
- fi
- # Cleanup "just in case"
- sudo killall -qe -ABRT $ASTERISK
- runner rsync -vaH $DESTDIR/var/log/asterisk/. $OUTPUTDIR
- set +x
- [ x"$USER_GROUP" != x ] && sudo chown -R $USER_GROUP $OUTPUTDIR
- for core in $(asterisk_corefile_glob)
- do
- if [ -f $core ]
- then
- echo "*** Found a core file ($core) after running unit tests ***"
- set -x
- sudo OUTPUTDIR=$OUTPUTDIR $DESTDIR/var/lib/asterisk/scripts/ast_coredumper --no-default-search $core
- fi
- done
- exit 0
|