File: resume.test

package info (click to toggle)
wolfssl 5.8.4-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 117,604 kB
  • sloc: ansic: 1,584,954; asm: 481,206; sh: 11,586; cs: 6,596; xml: 3,878; perl: 3,291; makefile: 2,058; ada: 1,891; javascript: 748; python: 636; cpp: 131; ruby: 118; objc: 80; tcl: 73
file content (164 lines) | stat: -rwxr-xr-x 4,075 bytes parent folder | download | duplicates (5)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/usr/bin/env bash

#resume.test

# if we can, isolate the network namespace to eliminate port collisions.
if [[ -n "$NETWORK_UNSHARE_HELPER" ]]; then
     if [[ -z "$NETWORK_UNSHARE_HELPER_CALLED" ]]; then
         export NETWORK_UNSHARE_HELPER_CALLED=yes
         exec "$NETWORK_UNSHARE_HELPER" "$0" "$@" || exit $?
     fi
elif [ "${AM_BWRAPPED-}" != "yes" ]; then
    bwrap_path="$(command -v bwrap)"
    if [ -n "$bwrap_path" ]; then
        export AM_BWRAPPED=yes
        exec "$bwrap_path" --unshare-net --dev-bind / / "$0" "$@"
    fi
    unset AM_BWRAPPED
fi

# need a unique resume port since may run the same time as testsuite
# use server port zero hack to get one
resume_string="reused"
resume_sup_string="Resume session"
ems_string="Extended\ Master\ Secret"
resume_port=0
no_pid=-1
server_pid=$no_pid
counter=0
# let's use absolute path to a local dir (make distcheck may be in sub dir)
# also let's add some randomness by adding pid in case multiple 'make check's
# per source tree
ready_file=`pwd`/wolfssl_resume_ready$$

echo "ready file $ready_file"

remove_ready_file() {
    if test -e "$ready_file"; then
        echo -e "removing existing ready file"
    rm "$ready_file"
    fi
}


do_cleanup() {
    echo "in cleanup"

    if  [ $server_pid != $no_pid ]
    then
        echo "killing server"
        kill -9 $server_pid
    fi
    remove_ready_file
}

do_trap() {
    echo "got trap"
    do_cleanup
    exit 1
}

do_test() {
    echo -e "\nStarting example server for resume test...\n"

    #make sure we support session resumption (!NO_SESSION_CACHE)
    # Check the client for the extended master secret disable option. If
    # present we need to run the test twice.
    options_check=`./examples/client/client '-?'`
    case "$options_check" in
    *$resume_sup_string*)
        echo -e "\nResume test supported";;
    *)
        echo -e "\nResume test not supported with build"
        return;;
    esac

    remove_ready_file
    echo "./examples/server/server -r -R \"$ready_file\" -p $resume_port"
    ./examples/server/server -r -R "$ready_file" -p $resume_port &
    server_pid=$!

    while [ ! -s "$ready_file" -a "$counter" -lt 20 ]; do
        echo -e "waiting for ready file..."
        sleep 0.1
        counter=$((counter+ 1))
    done

    if test -e "$ready_file"; then
        echo -e "found ready file, starting client..."
    else
        echo -e "NO ready file ending test..."
        do_cleanup
        exit 1
    fi

    # sleep for an additional 0.1 to mitigate race on write/read of $ready_file:
    sleep 0.1

    # get created port 0 ephemeral port
    resume_port=`cat "$ready_file"`

    echo "./examples/client/client $1 -r -p $resume_port"
    capture_out=$(./examples/client/client $1 -r -p $resume_port 2>&1)
    client_result=$?

    if [ $client_result != 0 ]
    then
        echo -e "client failed!\ncapture_out=$capture_out\nclient_result=$client_result"
        do_cleanup
        exit 1
    fi

    wait $server_pid
    server_result=$?
    remove_ready_file

    if [ $server_result != 0 ]
    then
        echo -e "client failed!"
        exit 1
    fi

    case "$capture_out" in
    *$resume_string*)
        echo "resumed session" ;;
    *)
        echo "did NOT resume session as expected"
        exit 1
        ;;
    esac
}

trap do_trap INT TERM

./examples/client/client '-?' 2>&1 | grep -- 'Client not compiled in!'
if [ $? -ne 0 ]; then
    ./examples/server/server '-?' 2>&1 | grep -- 'Server not compiled in!'
    if [ $? -ne 0 ]; then
        RUN_TEST="Y"
    fi
fi

./examples/client/client '-?' 2>&1 | grep -- 'Resume session'
if [ $? -ne 0 ]; then
    RUN_TEST="Y"
fi

if [ "$RUN_TEST" = "Y" ]; then
    do_test

    # Check the client for the extended master secret disable option. If
    # present we need to run the test twice.
    options_check=`./examples/client/client -?`
    case "$options_check" in
    *$ems_string*)
        echo -e "\nRepeating resume test without extended master secret..."
        do_test -n ;;
    *)
        ;;
    esac
fi

echo -e "\nSuccess!\n"

exit 0