test_rmcd.sh.in 2.64 KB
Newer Older
Timothy Stack's avatar
 
Timothy Stack committed
1 2
#! /bin/sh

Timothy Stack's avatar
Timothy Stack committed
3 4 5 6 7 8
#
# EMULAB-COPYRIGHT
# Copyright (c) 2005 University of Utah and the Flux Group.
# All rights reserved.
#

Timothy Stack's avatar
 
Timothy Stack committed
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
## Variables

# The full path of the test case
test_file=$1
# The base name of the test case
test_file_base="test_rmcd.sh"
# The current test number for shell based tests.
test_num=0

SRCDIR=@srcdir@
EMC_PORT=6061

## Helper functions

run_test() {
    echo "run_test: $*"
    $* > ${test_file_base}_${test_num}.tmp 2>&1
}

check_output() {
    diff -u - ${test_file_base}_${test_num}.tmp
    if test $? -ne 0; then
	echo $1
	exit 1
    fi
    test_num=`expr ${test_num} \+ 1`
}

##

Timothy Stack's avatar
 
Timothy Stack committed
39
# Need an emcd for rmcd to connect to.
Timothy Stack's avatar
 
Timothy Stack committed
40 41 42 43 44 45 46 47 48 49 50 51
../emc/emcd -l `pwd`/test_emcd.log \
    -i `pwd`/test_emcd.pid \
    -p ${EMC_PORT} \
    -s ops \
    -c `realpath ${SRCDIR}/test_emcd.config`

sleep 1

../mtp/mtp_send -n localhost -P ${EMC_PORT} \
    -w -r vmc -i 0 -c 0 -m "empty" init -- \
    -r vmc -i 1 -x 6 -y 7 -o 0.44 -s idle -t 1 update-position

Timothy Stack's avatar
 
Timothy Stack committed
52
# Start a fake gorobot to simulate robot processing.
Timothy Stack's avatar
 
Timothy Stack committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
../primotion/gorobot -l `pwd`/test_gorobot.log \
    -i `pwd`/test_gorobot.pid

./rmcd -l `pwd`/test_rmcd.log \
    -i `pwd`/test_rmcd.pid \
    -e localhost \
    -p ${EMC_PORT}

cleanup() {
    kill `cat test_rmcd.pid`
    kill `cat test_emcd.pid`
    kill `cat test_gorobot.pid`
}

trap 'cleanup' EXIT

sleep 2

Timothy Stack's avatar
 
Timothy Stack committed
71
# Goto the current position and expect an immediate success.
Timothy Stack's avatar
 
Timothy Stack committed
72 73 74 75 76

run_test ../mtp/mtp_send -n localhost -P ${EMC_PORT} \
    -r emulab -i 0 -c 0 -m "empty" init -- \
    -w -i 1 -x 6 -y 7 -o 0.44 -C 1 command-goto

Timothy Stack's avatar
 
Timothy Stack committed
77
check_output "init -> command-goto failed?" <<EOF
Timothy Stack's avatar
 
Timothy Stack committed
78
Packet: version 2; role rmc
Timothy Stack's avatar
 
Timothy Stack committed
79 80 81 82 83 84 85 86 87
 opcode:	update-position
  id:		1
  x:		6.000000
  y:		7.000000
  theta:	0.440000
  status:	4
  timestamp:	1.000000
EOF

Timothy Stack's avatar
 
Timothy Stack committed
88
# Then try a real move that will fail because of no vmc updates:
Timothy Stack's avatar
 
Timothy Stack committed
89 90 91 92 93

run_test ../mtp/mtp_send -n localhost -P ${EMC_PORT} \
    -r emulab -i 0 -c 0 -m "empty" init -- \
    -w -i 1 -x 7 -y 8 -o 0.44 -C 1 command-goto

Timothy Stack's avatar
 
Timothy Stack committed
94
check_output "init -> command-goto (2) failed?" <<EOF
Timothy Stack's avatar
 
Timothy Stack committed
95
Packet: version 2; role rmc
Timothy Stack's avatar
 
Timothy Stack committed
96 97 98 99 100 101 102 103 104
 opcode:	update-position
  id:		1
  x:		6.000000
  y:		7.000000
  theta:	0.440000
  status:	3
  timestamp:	1.000000
EOF

Timothy Stack's avatar
 
Timothy Stack committed
105
# Now, send the update and
Timothy Stack's avatar
 
Timothy Stack committed
106 107 108 109
../mtp/mtp_send -n localhost -P ${EMC_PORT} \
    -w -r vmc -i 0 -c 0 -m "empty" init -- \
    -r vmc -i 1 -x 7 -y 8 -o 0.44 -s idle -t 1 update-position

Timothy Stack's avatar
 
Timothy Stack committed
110
# ... retry to goto.
Timothy Stack's avatar
 
Timothy Stack committed
111 112 113 114
run_test ../mtp/mtp_send -n localhost -P ${EMC_PORT} \
    -r emulab -i 0 -c 0 -m "empty" init -- \
    -w -i 1 -x 7 -y 8 -o 0.44 -C 1 command-goto

Timothy Stack's avatar
 
Timothy Stack committed
115
check_output "init -> command-goto (3) failed?" <<EOF
Timothy Stack's avatar
 
Timothy Stack committed
116
Packet: version 2; role rmc
Timothy Stack's avatar
 
Timothy Stack committed
117 118 119 120 121 122 123 124
 opcode:	update-position
  id:		1
  x:		7.000000
  y:		8.000000
  theta:	0.440000
  status:	4
  timestamp:	1.000000
EOF