#!/bin/bash

export JACORB_BASE=/home/paulchenpanther/JacORB-2.2.4
export PROJECT_BASE=/home/paulchenpanther/workspace/dslab6
export CLASSPATH=$JACORB_BASE/lib/jacorb.jar:$JACORB_BASE/lib/logkit-1.2.jar:$JACORB_BASE/lib/avalon-framework-4.1.5.jar:$PROJECT_BASE:$PROJECT_BASE/classes

java -cp $CLASSPATH -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -Djacorb.config.dir=$PROJECT_BASE dslab.reservation.SeminarReservationSystemServer srs_$USER\_1 >/dev/null 2>&1 &
SERVER1=$!

java -cp $CLASSPATH -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -Djacorb.config.dir=$PROJECT_BASE dslab.reservation.SeminarReservationSystemServer srs_$USER\_2 >/dev/null 2>&1 &
SERVER2=$!

sleep 3

# Erstellen der Seminare
./client srs_$USER\_1 create a b c 100 >/dev/null 2>&1
echo 1: return value $?\; expected: 0

./client srs_$USER\_2 create d e f 100 >/dev/null 2>&1
echo 2: return value $?\; expected: 0


# Einfacher Test fuer booklist
./client booklist srs_$USER\_1 a a a 10 >/dev/null 2>&1
echo 3: return value $?\; expected: 0

./client srs_$USER\_1 cancelBooking a a a 10 >/dev/null 2>&1
echo 4: return value $?\; expected: 0


# Einfacher Test fuer cancellist
./client srs_$USER\_1 book a a a 10 >/dev/null 2>&1
echo 5: return value $?\; expected: 0

./client cancellist srs_$USER\_1 a a a 10 >/dev/null 2>&1
echo 6: return value $?\; expected: 0


# Test fuer cancellist
./client srs_$USER\_1 book a c c 10 >/dev/null 2>&1
echo 7: return value $?\; expected: 0

./client srs_$USER\_2 book d d d 10 >/dev/null 2>&1
echo 8: return value $?\; expected: 0

./client cancellist srs_$USER\_1 a c c 10 srs_$USER\_2 d d d 10 >/dev/null 2>&1
echo 9: return value $?\; expected: 0

./client srs_$USER\_1 cancelBooking a c c 1 >/dev/null 2>&1
echo 10: return value $?\; expected: 1

./client srs_$USER\_1 cancelBooking d d d 1 >/dev/null 2>&1
echo 11: return value $?\; expected: 1


# Test fuer booklist
./client booklist srs_$USER\_1 a e e 10 srs_$USER\_2 d f f 10 >/dev/null 2>&1
echo 12: return value $?\; expected: 0

./client srs_$USER\_1 cancelBooking a e e 12 >/dev/null 2>&1
echo 13: return value $?\; expected: 1

./client srs_$USER\_2 cancelBooking d f f 12 >/dev/null 2>&1
echo 14: return value $?\; expected: 1

./client srs_$USER\_1 cancelBooking a e e 10 >/dev/null 2>&1
echo 15: return value $?\; expected: 0

./client srs_$USER\_2 cancelBooking d f f 10 >/dev/null 2>&1
echo 16: return value $?\; expected: 0

./client srs_$USER\_1 cancelBooking a e e 1 >/dev/null 2>&1
echo 17: return value $?\; expected: 1

./client srs_$USER\_2 cancelBooking d f f 1 >/dev/null 2>&1
echo 18: return value $?\; expected: 1


# cancelBooking fuer nicht existierende Seminare/Kunden
./client srs_$USER\_1 cancelBooking x x x 10 >/dev/null 2>&1
echo 19: return value $?\; expected: 1

./client srs_$USER\_1 cancelBooking a x x 10 >/dev/null 2>&1
echo 20: return value $?\; expected: 1


# Transaktionstest fuer booklist, muss fehlschlagen
./client srs_$USER\_1 book a x x 100 >/dev/null 2>&1
echo 21: return value $?\; expected: 0

./client booklist srs_$USER\_1 a y y 10 srs_$USER\_2 d y y 10 >/dev/null 2>&1
# expected: 0?!
echo 22: return value $?\; expected: 1

./client srs_$USER\_1 cancelBooking a x x 10 >/dev/null 2>&1
echo 23: return value $?\; expected: 0

./client srs_$USER\_1 cancelBooking a y y 10 >/dev/null 2>&1
echo 24: return value $?\; expected: 1

./client srs_$USER\_2 cancelBooking d y y 10 >/dev/null 2>&1
echo 25: return value $?\; expected: 1


# Transaktionstest fuer cancellist, muss fehlschlagen
./client srs_$USER\_1 book a z z 10 >/dev/null 2>&1
echo 26: return value $?\; expected: 0

./client cancellist srs_$USER\_1 a z z 10 srs_$USER\_2 d z z 10 >/dev/null 2>&1
# expected: 0?!
echo 27: return value $?\; expected: 1

./client srs_$USER\_1 cancelBooking a z z 10 >/dev/null 2>&1
echo 28: return value $?\; expected: 0


kill $SERVER1
kill $SERVER2
exit

