#
# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#----------------------------------------------------------------------

$(BUILDTESTDIR)/TimeoutTest.ok: \
	    $(JTREG_IMAGEDIR)/lib/jtreg.jar \
	    $(JTREG_IMAGEDIR)/bin/jtreg
	$(MAKE) -C $(TESTDIR)/timeouts/test \
		TEST_OUTPUT_DIR=`pwd`/$(BUILDTESTDIR)/$(@:%.ok=%) \
		JT_JAVA=$(JDKHOME) \
		TESTJAVA=$(JDKHOME) \
		JTREG_HOME=`cd $(JTREG_IMAGEDIR); pwd`
	echo "test passed at `date`" > $@

# This test is not included by default because it is by its nature so
# slow to run.
# TESTS.jtreg += $(BUILDTESTDIR)/TimeoutTest.ok

#----------------------------------------------------------------------

# This is a description of the expected results in each mode:
#
# agentvm
#
# AAA_Pass: pass
# ZZZ_Pass: pass
# ExitTest: error (calls System.exit in Agent)
# SlowExitTest: pass (test finishes quickly but leaves a shutdown hook active in the agent)
# SlowInterruptibleTest: error (timeout)
# SlowUninterruptibleTest: error (timeout)
# pass: 3, error 3
#
# othervm
#
# AAA_Pass: pass
# ZZZ_Pass: pass
# ExitTest: failed (calls System.exit() with an unexpected exit code)
# SlowExitTest: error (timeout, shutdown hook prevents othervm from shutting down)
# SlowInterruptibleTest: error (timeout)
# SlowUninterruptibleTest: error (timeout)
# pass: 2, failed: 1, error: 3


$(BUILDTESTDIR)/TimeoutTest.agentvm.ok \
$(BUILDTESTDIR)/TimeoutTest.othervm.ok: \
	    $(JTREG_IMAGEDIR)/lib/jtreg.jar \
	    $(JTREG_IMAGEDIR)/bin/jtreg
	$(RM) $(@:%.ok=%) ; $(MKDIR) $(@:%.ok=%)
	$(JTREG_IMAGEDIR)/bin/jtreg $(JTREG_OPTS) \
		-w:$(@:%.ok=%)/work -r:$(@:%.ok=%)/report \
		-jdk:$(JDK6HOME) \
		-va \
		$(@:$(BUILDTESTDIR)/TimeoutTest.%.ok=-%) \
		$(TESTDIR)/timeouts/test  \
			> $(@:%.ok=%/jt.log) 2>&1 || \
	    true "non-zero exit code from JavaTest intentionally ignored"
	case $(@:$(BUILDTESTDIR)/TimeoutTest.%.ok=%) in \
	    othervm ) expect="Test results: passed: 2; failed: 1; error: 3" ;; \
	    agentvm ) expect="Test results: passed: 3; error: 3" ;; \
	esac ; \
	$(GREP) -s "$$expect" $(@:%.ok=%/jt.log) > /dev/null;
	echo "test passed at `date`" > $@

# These tests are not included by default because by their nature they are so
# slow to run.
# TESTS.jtreg += \
	$(BUILDTESTDIR)/TimeoutTest.agentvm.ok \
	$(BUILDTESTDIR)/TimeoutTest.othervm.ok

testtimeouts: \
	$(BUILDTESTDIR)/TimeoutTest.ok \
	$(BUILDTESTDIR)/TimeoutTest.agentvm.ok \
	$(BUILDTESTDIR)/TimeoutTest.othervm.ok
