HardenedBSD/usr.bin/posixmqcontrol/posixmqcontroltest8x64.sh
Rick Parrish 0112f8c4a8 posixmqcontrol(1): manage posix message queues
Reviewed by:	kib, paumma
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D43845
2024-02-24 01:08:48 +02:00

100 lines
1.9 KiB
Bash

#!/bin/sh
# exercises create, info, send and recv subcommands.
subject='posixmqcontrol'
topic='/test123'
${subject} info -q "$topic" 2>/dev/null
if [ $? == 0 ]; then
echo "sorry, $topic exists."
exit 1
fi
# create trivial queue that can hold 8 messages of 64 bytes each.
${subject} create -q "$topic" -s 64 -d 8
if [ $? != 0 ]; then
exit 1
fi
info=$(${subject} info -q "$topic")
if [ $? != 0 ]; then
exit 1
fi
expected='MSGSIZE: 64'
actual=$(echo "${info}" | grep 'MSGSIZE: ')
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
expected='MAXMSG: 8'
actual=$(echo "${info}" | grep 'MAXMSG: ')
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
expected='CURMSG: 0'
actual=$(echo "${info}" | grep 'CURMSG: ')
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
# write eight messages of increasing priority.
for i in 1 2 3 4 5 6 7 8
do
${subject} send -q "$topic" -c "message $i" -p "$i"
if [ $? != 0 ]; then
exit 1
fi
done
info=$(${subject} info -q "$topic")
if [ $? != 0 ]; then
exit
fi
expected='CURMSG: 8'
actual=$(echo "${info}" | grep 'CURMSG: ')
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
# expect the eight messages to appear in priority order.
for i in 8 7 6 5 4 3 2 1
do
expected='['"$i"']: message '"$i"
actual=$(${subject} recv -q "$topic")
if [ $? != 0 ]; then
exit
fi
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
done
info=$(${subject} info -q "$topic")
if [ $? != 0 ]; then
exit 1
fi
expected='CURMSG: 0'
actual=$(echo "${info}" | grep 'CURMSG: ')
if [ "$expected" != "$actual" ]; then
echo "EXPECTED: $expected"
echo " ACTUAL: $actual"
exit 1
fi
${subject} rm -q "$topic"
if [ $? == 0 ]; then
echo "Pass!"
exit 0
fi
exit 1