0N/A#!/bin/sh
0N/A
0N/A#
4001N/A# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
0N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A#
0N/A# This code is free software; you can redistribute it and/or modify it
0N/A# under the terms of the GNU General Public License version 2 only, as
0N/A# published by the Free Software Foundation.
0N/A#
0N/A# This code is distributed in the hope that it will be useful, but WITHOUT
0N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A# version 2 for more details (a copy is included in the LICENSE file that
0N/A# accompanied this code).
0N/A#
0N/A# You should have received a copy of the GNU General Public License version
0N/A# 2 along with this work; if not, write to the Free Software Foundation,
0N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A#
2362N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A# or visit www.oracle.com if you need additional information or have any
2362N/A# questions.
0N/A#
0N/A
0N/A
0N/A#
0N/A#
0N/A# Application Setup - creates ${TESTCLASSES}/Application.jar and the following
0N/A# procedures:
0N/A# startApplication - starts target application
0N/A# stopApplication $1 - stops application via TCP shutdown port $1
0N/A
0N/A$JAVAC -d "${TESTCLASSES}" "${TESTSRC}"/Application.java "${TESTSRC}"/Shutdown.java
0N/A$JAR -cfm "${TESTCLASSES}"/Application.jar "${TESTSRC}"/application.mf \
0N/A -C "${TESTCLASSES}" Application.class
0N/A
0N/AOUTPUTFILE=${TESTCLASSES}/Application.out
0N/Arm -f ${OUTPUTFILE}
0N/A
0N/AstartApplication()
0N/A{
4001N/A # put all output from the app into ${OUTPUTFILE}
4001N/A ${JAVA} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} 2>&1 &
0N/A pid="$!"
0N/A
0N/A # MKS creates an intermediate shell to launch ${JAVA} so
0N/A # ${pid} is not the actual pid. We have put in a small sleep
0N/A # to give the intermediate shell process time to launch the
0N/A # "java" process.
0N/A if [ "$OS" = "Windows" ]; then
0N/A sleep 2
2078N/A if [ "${isCygwin}" = "true" ] ; then
2078N/A realpid=`ps -p ${pid} | tail -1 | awk '{print $4;}'`
2078N/A else
2078N/A realpid=`ps -o pid,ppid,comm|grep ${pid}|grep "java"|cut -c1-6`
2078N/A fi
0N/A pid=${realpid}
0N/A fi
0N/A
0N/A echo "Waiting for Application to initialize..."
0N/A attempts=0
0N/A while true; do
0N/A sleep 1
2078N/A port=`tail -1 ${OUTPUTFILE} | sed -e 's@\\r@@g' `
0N/A if [ ! -z "$port" ]; then
0N/A # In case of errors wait time for output to be flushed
0N/A sleep 1
0N/A cat ${OUTPUTFILE}
0N/A break
0N/A fi
0N/A attempts=`expr $attempts + 1`
0N/A echo "Waiting $attempts second(s) ..."
0N/A done
0N/A echo "Application is process $pid, shutdown port is $port"
0N/A return $port
0N/A}
0N/A
0N/AstopApplication()
0N/A{
0N/A $JAVA -classpath "${TESTCLASSES}" Shutdown $1
0N/A}
0N/A