summaryrefslogtreecommitdiff
path: root/cpp/examples/verify
blob: 78b622e400e854b19009d16b62cfa7d5be00b61b (plain)
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
#!/bin/sh
# Run from the installed examples/ dir with a full path to this script.
#

DIR=$PWD
SRC=`dirname $0 | sed 's|^\([^/].*\)|'$PWD'/\1|'`/examples

# Utility functions

run() {
    echo ==== $*; eval "$*"; echo ====;
}

waitfor() { until grep -a -l "$2" $1 >/dev/null 2>&1 ; do sleep 1 ; done ; }

verify() {
    ex=`basename $PWD`
    diff -ac verify.out $SRC/$ex/verify.in || {
	echo "FAIL: $ex  " ; RET=1 ; return 1;
    } 
}

HEX="[a-fA-F0-9]"
remove_uuid() {
    sed "s/$HEX\{8\}-$HEX\{4\}-$HEX\{4\}-$HEX\{4\}-$HEX\{12\}//g" $*
}

# Scripts for each example

direct() {
    run ./direct_config_queues  > verify.out
    run ./direct_publisher >> verify.out
    run ./listener >> verify.out
    run ./direct_persistent_config_queues >> verify.out
    run ./direct_persistent_publisher >> verify.out
    run ./listener >> verify.out
}

fanout() {
    run ./fanout_config_queues > verify.out
    run ./fanout_publisher >>verify.out
    run ./listener >>verify.out
}

pub_sub() {
    ./topic_listener | tee topic_listener.out > topic_listener.wait &
    waitfor topic_listener.wait  "Listening"
    run ./topic_publisher > verify.out
    wait 
    run remove_uuid "topic_listener.out | sort" >> verify.out
}
    
request_response() {
    ./server | tee server.out > server.wait &
    waitfor server.wait "Waiting"
    run ./client | remove_uuid > verify.out
    kill %%
    wait 2> /dev/null
    run remove_uuid server.out >> verify.out
}

# Main
for ex in direct fanout pub-sub request-response; do
    func=`echo $ex | tr - _`
    echo "Verifing $ex"
    ( cd $ex && $func && verify && rm -f *.out *.wait) 
done

exit $RET