1*0112f8c4SRick Parrish#!/bin/sh 2*0112f8c4SRick Parrish# exercises create, info, send and recv subcommands. 3*0112f8c4SRick Parrish 4*0112f8c4SRick Parrishsubject='posixmqcontrol' 5*0112f8c4SRick Parrishtopic='/test123' 6*0112f8c4SRick Parrish 7*0112f8c4SRick Parrish${subject} info -q "$topic" 2>/dev/null 8*0112f8c4SRick Parrishif [ $? == 0 ]; then 9*0112f8c4SRick Parrish echo "sorry, $topic exists." 10*0112f8c4SRick Parrish exit 1 11*0112f8c4SRick Parrishfi 12*0112f8c4SRick Parrish 13*0112f8c4SRick Parrish# create trivial queue that can hold 8 messages of 64 bytes each. 14*0112f8c4SRick Parrish${subject} create -q "$topic" -s 64 -d 8 15*0112f8c4SRick Parrishif [ $? != 0 ]; then 16*0112f8c4SRick Parrish exit 1 17*0112f8c4SRick Parrishfi 18*0112f8c4SRick Parrish 19*0112f8c4SRick Parrishinfo=$(${subject} info -q "$topic") 20*0112f8c4SRick Parrishif [ $? != 0 ]; then 21*0112f8c4SRick Parrish exit 1 22*0112f8c4SRick Parrishfi 23*0112f8c4SRick Parrishexpected='MSGSIZE: 64' 24*0112f8c4SRick Parrishactual=$(echo "${info}" | grep 'MSGSIZE: ') 25*0112f8c4SRick Parrishif [ "$expected" != "$actual" ]; then 26*0112f8c4SRick Parrish echo "EXPECTED: $expected" 27*0112f8c4SRick Parrish echo " ACTUAL: $actual" 28*0112f8c4SRick Parrish exit 1 29*0112f8c4SRick Parrishfi 30*0112f8c4SRick Parrishexpected='MAXMSG: 8' 31*0112f8c4SRick Parrishactual=$(echo "${info}" | grep 'MAXMSG: ') 32*0112f8c4SRick Parrishif [ "$expected" != "$actual" ]; then 33*0112f8c4SRick Parrish echo "EXPECTED: $expected" 34*0112f8c4SRick Parrish echo " ACTUAL: $actual" 35*0112f8c4SRick Parrish exit 1 36*0112f8c4SRick Parrishfi 37*0112f8c4SRick Parrishexpected='CURMSG: 0' 38*0112f8c4SRick Parrishactual=$(echo "${info}" | grep 'CURMSG: ') 39*0112f8c4SRick Parrishif [ "$expected" != "$actual" ]; then 40*0112f8c4SRick Parrish echo "EXPECTED: $expected" 41*0112f8c4SRick Parrish echo " ACTUAL: $actual" 42*0112f8c4SRick Parrish exit 1 43*0112f8c4SRick Parrishfi 44*0112f8c4SRick Parrish 45*0112f8c4SRick Parrish# write eight messages of increasing priority. 46*0112f8c4SRick Parrishfor i in 1 2 3 4 5 6 7 8 47*0112f8c4SRick Parrishdo 48*0112f8c4SRick Parrish ${subject} send -q "$topic" -c "message $i" -p "$i" 49*0112f8c4SRick Parrish if [ $? != 0 ]; then 50*0112f8c4SRick Parrish exit 1 51*0112f8c4SRick Parrish fi 52*0112f8c4SRick Parrishdone 53*0112f8c4SRick Parrish 54*0112f8c4SRick Parrishinfo=$(${subject} info -q "$topic") 55*0112f8c4SRick Parrishif [ $? != 0 ]; then 56*0112f8c4SRick Parrish exit 57*0112f8c4SRick Parrishfi 58*0112f8c4SRick Parrishexpected='CURMSG: 8' 59*0112f8c4SRick Parrishactual=$(echo "${info}" | grep 'CURMSG: ') 60*0112f8c4SRick Parrishif [ "$expected" != "$actual" ]; then 61*0112f8c4SRick Parrish echo "EXPECTED: $expected" 62*0112f8c4SRick Parrish echo " ACTUAL: $actual" 63*0112f8c4SRick Parrish exit 1 64*0112f8c4SRick Parrishfi 65*0112f8c4SRick Parrish 66*0112f8c4SRick Parrish# expect the eight messages to appear in priority order. 67*0112f8c4SRick Parrishfor i in 8 7 6 5 4 3 2 1 68*0112f8c4SRick Parrishdo 69*0112f8c4SRick Parrish expected='['"$i"']: message '"$i" 70*0112f8c4SRick Parrish actual=$(${subject} recv -q "$topic") 71*0112f8c4SRick Parrish if [ $? != 0 ]; then 72*0112f8c4SRick Parrish exit 73*0112f8c4SRick Parrish fi 74*0112f8c4SRick Parrish if [ "$expected" != "$actual" ]; then 75*0112f8c4SRick Parrish echo "EXPECTED: $expected" 76*0112f8c4SRick Parrish echo " ACTUAL: $actual" 77*0112f8c4SRick Parrish exit 1 78*0112f8c4SRick Parrish fi 79*0112f8c4SRick Parrishdone 80*0112f8c4SRick Parrish 81*0112f8c4SRick Parrishinfo=$(${subject} info -q "$topic") 82*0112f8c4SRick Parrishif [ $? != 0 ]; then 83*0112f8c4SRick Parrish exit 1 84*0112f8c4SRick Parrishfi 85*0112f8c4SRick Parrishexpected='CURMSG: 0' 86*0112f8c4SRick Parrishactual=$(echo "${info}" | grep 'CURMSG: ') 87*0112f8c4SRick Parrishif [ "$expected" != "$actual" ]; then 88*0112f8c4SRick Parrish echo "EXPECTED: $expected" 89*0112f8c4SRick Parrish echo " ACTUAL: $actual" 90*0112f8c4SRick Parrish exit 1 91*0112f8c4SRick Parrishfi 92*0112f8c4SRick Parrish 93*0112f8c4SRick Parrish${subject} rm -q "$topic" 94*0112f8c4SRick Parrishif [ $? == 0 ]; then 95*0112f8c4SRick Parrish echo "Pass!" 96*0112f8c4SRick Parrish exit 0 97*0112f8c4SRick Parrishfi 98*0112f8c4SRick Parrish 99*0112f8c4SRick Parrishexit 1 100