[PATCH v3 7/7] add tests for all synchronisation routines

Hubert Kario hkario at redhat.com
Thu Nov 21 16:57:15 UTC 2013


Signed-off-by: Hubert Kario <hkario at redhat.com>
---
 src/test/synchronisationTest.sh | 238 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 238 insertions(+)
 create mode 100644 src/test/synchronisationTest.sh

diff --git a/src/test/synchronisationTest.sh b/src/test/synchronisationTest.sh
new file mode 100644
index 0000000..ddbca1c
--- /dev/null
+++ b/src/test/synchronisationTest.sh
@@ -0,0 +1,238 @@
+#!/bin/bash
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved. This copyrighted material
+# is made available to anyone wishing to use, modify, copy, or
+# redistribute it subject to the terms and conditions of the GNU General
+# Public License v.2.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Hubert Kario <hkario at redhat.com>
+
+test_rlWaitForSocketPositive() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 5; nc -l 12345 > $test_dir/out) &
+    local bg_pid=$!
+
+    silentIfNotDebug "rlWaitForSocket 12345"
+    local ret=$?
+    assertTrue "Check if rlWaitForSocket return 0 when socket is opened" "[[ $ret -eq 0 ]]"
+
+    silentIfNotDebug "echo 'hello world' | nc localhost 12345"
+
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if data was transferred" "grep 'hello world' $test_dir/out"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForSocketTimeoutReached() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 10; nc -l 12345 > $test_dir/out) &
+    local bg_pid=$!
+
+    silentIfNotDebug "rlWaitForSocket -t 2 12345"
+    local ret=$?
+    assertTrue "Check if rlWaitForSocket returns 1 on reaching timeout" "[[ $ret -eq 1 ]]"
+
+    silentIfNotDebug "echo 'hello world' | nc localhost 12345"
+
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+
+    assertFalse "Check if data was not transferred" "grep 'hello world' $test_dir/out || false"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForSocketPIDKilled() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 10) &
+    local bg_pid=$!
+    (sleep 15; touch $test_dir/mark) &
+    local bg2_pid=$!
+
+    silentIfNotDebug "rlWaitForSocket -p $bg_pid 12345"
+    local ret=$?
+    assertTrue "Check if rlWaitForSocket returns 1 on PID exit" "[[ $ret -eq 1 ]]"
+
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if rlWaitForSocket returned quickly after PID died" "[[ ! -e $test_dir/mark ]]"
+
+    silentIfNotDebug "echo 'hello world' | nc localhost 12345"
+
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+
+    assertFalse "Check if data was not transferred" "grep 'hello world' $test_dir/out || false"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForFilePositive() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 5; touch ${test_dir}/file)&
+    local bg_pid=$!
+    (sleep 10; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    silentIfNotDebug "rlWaitForFile $test_dir/file"
+    local ret=$?
+    assertTrue "Check if rlWaitForFile returned 0" "[[ $ret -eq 0 ]]"
+
+    assertTrue "Check if file exists" "[[ -e $test_dir/file ]]"
+
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if rlWaitForFile returned quickly after file was created" "[[ ! -e $test_dir/mark ]]"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForFileNegative() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 5; touch ${test_dir}/file)&
+    local bg_pid=$!
+    (sleep 10; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    silentIfNotDebug "rlWaitForFile -t 2 $test_dir/file"
+    local ret=$?
+    assertTrue "Check if rlWaitForFile returned 1" "[[ $ret -eq 1 ]]"
+
+    assertTrue "Check if file does not exists" "[[ ! -e $test_dir/file ]]"
+
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if rlWaitForFile returned quickly after file was created" "[[ ! -e $test_dir/mark ]]"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForFilePIDKilled() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 2)&
+    local bg_pid=$!
+    (sleep 5; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    silentIfNotDebug "rlWaitForFile -p $bg_pid $test_dir/file"
+    local ret=$?
+    assertTrue "Check if rlWaitForFile returned 1" "[[ $ret -eq 1 ]]"
+
+    assertTrue "Check if file does not exists" "[[ ! -e $test_dir/file ]]"
+
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if rlWaitForFile returned quickly after file was created" "[[ ! -e $test_dir/mark ]]"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForCmdPositive() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    touch ${test_dir}/file
+    (sleep 5; echo mark > ${test_dir}/file)&
+    local bg_pid=$!
+    (sleep 10; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file exists" "[[ -e $test_dir/file ]]"
+    assertFalse "Check if doesn't contain 'mark' string" "grep mark $test_dir/file"
+
+    silentIfNotDebug "rlWaitForCmd 'grep mark $test_dir/file'"
+    local ret=$?
+    assertTrue "Check if rlWaitForCmd returned 0" "[[ $ret -eq 0 ]]"
+
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if file contains 'mark' string" "grep mark $test_dir/file"
+    assertTrue "Check if rlWaitForCmd returned quickly" "[[ ! -e $test_dir/mark ]]"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForCmdMaxInvoc() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 10; echo mark > ${test_dir}/file)&
+    local bg_pid=$!
+    (sleep 15; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    silentIfNotDebug "rlWaitForCmd 'echo line >> $test_dir/counter; grep mark $test_dir/file 2>/dev/null' -m 4"
+    local ret=$?
+    assertTrue "Check if rlWaitForCmd returned 1" "[[ $ret -eq 1 ]]"
+
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+    kill -s SIGKILL $bg_pid 2>/dev/null 1>&2
+    wait $bg_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if WaitForCmd returned quickly" "[[ ! -e $test_dir/mark ]]"
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    local lines=$(wc -l < $test_dir/counter)
+    assertTrue "Check if the command was executed 4 times" "[[ $lines -eq 4 ]]"
+
+    rm -rf $test_dir
+}
+
+test_rlWaitForCmdDelay() {
+    local test_dir=$(mktemp -d /tmp/beakerlib-test-XXXXXX)
+
+    (sleep 4; echo mark > ${test_dir}/file)&
+    local bg_pid=$!
+    (sleep 15; touch ${test_dir}/mark)&
+    local bg2_pid=$!
+
+    assertTrue "Check if file does not exist" "[[ ! -e $test_dir/file ]]"
+
+    silentIfNotDebug "rlWaitForCmd 'echo line >> $test_dir/counter; grep mark $test_dir/file 2>/dev/null' -d 6"
+    local ret=$?
+    assertTrue "Check if rlWaitForCmd returned 0" "[[ $ret -eq 0 ]]"
+
+    kill -s SIGKILL $bg2_pid 2>/dev/null 1>&2
+    wait $bg2_pid 2>/dev/null 1>&2
+
+    assertTrue "Check if WaitForCmd returned quickly" "[[ ! -e $test_dir/mark ]]"
+    assertTrue "Check if file does exist" "[[ -e $test_dir/file ]]"
+
+    local lines=$(wc -l < $test_dir/counter)
+    assertTrue "Check if the command was executed 2 times" "[[ $lines -eq 2 ]]"
+    # two executions because the command is executed first, then sleep
+
+    rm -rf $test_dir
+}
-- 
1.8.3.1



More information about the beakerlib-devel mailing list