#
# Copyright (c) 1997, 2022, 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.
#

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

AUTOVM_FILES := $(shell find $(TESTDIR)/autovm -type f )
		
$(BUILDTESTDIR)/autovm.ok: $(AUTOVM_FILES) \
	    $(JTREG_IMAGEDIR)/lib/javatest.jar \
	    $(JTREG_IMAGEDIR)/lib/jtreg.jar
	for ts in none agentvm othervm; do \
	    $(RM) $(BUILDTESTDIR)/autovm/tests/default.$$ts ; \
	    $(MKDIR) -p $(BUILDTESTDIR)/autovm/tests/default.$$ts ; \
	    $(CP) -R $(TESTDIR)/autovm/* $(BUILDTESTDIR)/autovm/tests/default.$$ts ; \
	    if [ $$ts != none ]; then \
		echo "defaultExecMode=$$ts" >> $(BUILDTESTDIR)/autovm/tests/default.$$ts/TEST.ROOT ; \
	    fi \
	done ; \
	for mode in none agentvm othervm ; do for ts in none agentvm othervm ; do \
	    $(JDKJAVA) -jar $(JTREG_IMAGEDIR)/lib/jtreg.jar \
		-jdk:$(JDKHOME) \
		-w $(BUILDTESTDIR)/autovm/jtreg/mode.$$mode/ts.$$ts/work \
		-r $(BUILDTESTDIR)/autovm/jtreg/mode.$$mode/ts.$$ts/report \
		`if [ $$mode != none ]; then echo "-$$mode" ; fi` \
		$(BUILDTESTDIR)/autovm/tests/default.$$ts ; \
	done ; done ; \
	cd $(BUILDTESTDIR)/autovm/jtreg ; find mode.*/ts.*/work -name \*.jtr | \
	    grep -v Shell | while read file ; do \
	    	echo $$file `grep '^Mode:' $$file | sort -u` ; \
		found=`grep '^Mode:' $$file | sed -e 's/ \[.*\]$$//'` ; \
		case $$file in \
		    */work/*/othervm/* ) expect_compile=othervm ;; \
		    mode.agentvm/* | mode.none/ts.agentvm/* ) expect_compile=agentvm ;; \
		    mode.none/ts.none/* | mode.none/ts.othervm/* | mode.othervm/* ) expect_compile=othervm ;; \
		    * ) echo "Can't match $$file" ; exit 1 ;; \
		esac ; \
		case $$file in \
		    */work/*[Oo]ther* ) expect_run=othervm ;; \
		    * ) expect_run=$$expect_compile ;; \
		esac ; \
		expect=`echo "Mode: $$expect_compile" ; echo "Mode: $$expect_run"` ; \
		if [ "$$found" != "$$expect" ]; then \
		    echo "$$file: expected: $$expect, found: $$found" ; exit 1; \
		fi \
	    done
	echo "test passed at `date`" > $@

TESTS.jtreg += $(BUILDTESTDIR)/autovm.ok

