aqa-tests icon indicating copy to clipboard operation
aqa-tests copied to clipboard

jck do not have enabled rerun

Open judovana opened this issue 1 year ago • 4 comments

Current jcks are split (https://github.com/adoptium/aqa-tests/tree/master/jck/splitter) into the chunks (eg https://github.com/adoptium/aqa-tests/blob/06f6219f7a91af8bdf756ddb67d60fb1ca58e13a/jck/runtime.api/playlist.xml#L815) , which once run, looks (from https://github.com/adoptium/aqa-tests/blob/06f6219f7a91af8bdf756ddb67d60fb1ca58e13a/jck/jck.mk#L152 ) like

===============================================
Running test jck-runtime-api-javax_activity_0 ...
===============================================
jck-runtime-api-javax_activity_0 Start Time: Fri Sep 27 00:42:07 2024 Epoch Time (ms): 1727397727349
variation: NoOptions
JVM_OPTIONS:  
{ \
echo "";	echo "TEST SETUP:"; \
echo "Nothing to be done for setup."; \
mkdir -p "/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/jck-runtime-api-javax_activity_0"; \
cd "/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/jck-runtime-api-javax_activity_0"; \
echo "";	echo "TESTING:"; \
"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-7.fc40.2.x86_64/bin/java" -Djvm.options=" " -Dother.opts="" -cp /home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../jck/jtrunner/bin JavatestUtil testRoot=/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/.. jckRoot=/home/tester/jck-via-aqavit-1727351423/aqa-tck jckversion=jck8d workdir="/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/jck-runtime-api-javax_activity_0" configAltPath=/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../jck/jtrunner/config testJava="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-7.fc40.2.x86_64/bin/java" riJava="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-7.fc40.2.x86_64/bin/java" task=cmdfilegen spec=linux_x86-64  tests=api/javax_activity testsuite=RUNTIME; \
	"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-7.fc40.2.x86_64/bin/java" -jar /home/tester/jck-via-aqavit-1727351423/aqa-tck/JCK-runtime-8d/lib/javatest.jar -config /home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../jck/jtrunner/config/jck8d/runtime.jti @"/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/jck-runtime-api-javax_activity_0"/generated.jtb; \
	if [ $? -eq 0 ]; then echo "-----------------------------------"; echo "jck-runtime-api-javax_activity_0""_PASSED"; echo "-----------------------------------"; cd /home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/..;  else echo "-----------------------------------"; echo "jck-runtime-api-javax_activity_0""_FAILED"; echo "-----------------------------------"; fi; \
	"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-7.fc40.2.x86_64/bin/java" -Djvm.options=" " -Dother.opts="" -cp /home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../jck/jtrunner/bin JavatestUtil testRoot=/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/.. jckRoot=/home/tester/jck-via-aqavit-1727351423/aqa-tck jckversion=jck8d configAltPath=/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../jck/jtrunner/config workdir="/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/jck-runtime-api-javax_activity_0" spec=linux_x86-64 task=summarygen tests=api/javax_activity testsuite=RUNTIME; \
echo "";	echo "TEST TEARDOWN:"; \
echo "Nothing to be done for teardown."; \
 } 2>&1 | tee -a "/home/tester/jck-via-aqavit-1727351423/aqa-tck-work/aqa-tests/TKG/../TKG/output_1727397727920/TestTargetResult";

That suggests that jck simply runs once. However by combination of existing, correct workdit and running all non passed tests:

  if [[ -d "$JCK_DIR/JCK-$SUIT-$MAJOR-work" ]] ; then
    local -r CREATE=''
  else
    local -r CREATE="-create"
  fi
...
-workdir $CREATE $JCK_DIR/JCK-$SUIT-$MAJOR-work \
...
-verbose:date,non-pass,start,stop

It is easy to achieve very stable rerun mechanism, which will iterate for known number of iterations or until full pass, depending what comes first. If the https://github.com/adoptium/aqa-tests/issues/5654 will be implemented, then any subsequent run then first, should be on concurency 1. Advantage is, that final result xml should contain only final version of accumulated passes.

wdyt? (note, this is battle tested in RH, we even have various reruns slightly different - first headless, and some tests excluded, second headfull and still high concurency, and then few loops on concrency 1, and then the remaining tests. As current AQA runners are pretty stable, I would like to not get into this depth just simply looping (especially with https://github.com/adoptium/aqa-tests/issues/5654 in) few times)

judovana avatar Sep 28 '24 14:09 judovana

We have a different rerun mechanism that is used for all types of tests. At the end of a test job, the testcase failures are gathered, and just those failures are rerun when RERUN_ITERATIONS=1 (or some value above the default value of 0).

smlambert avatar Sep 28 '24 15:09 smlambert

I know that one. And is awesome! Still in case of TCK, even one subset is quite long, and it may be better to reuse the in-tck mechanism to get rid of one or two false negatives right out of thebox.

judovana avatar Sep 28 '24 16:09 judovana

Let's chat on Tuesday when I am back from vacation.

smlambert avatar Sep 28 '24 17:09 smlambert

Sure! This is just idea, no enforcement. The individual susbets are very Very VERY stable, so including embedded rerun may add unnecessary complexity.

judovana avatar Sep 30 '24 08:09 judovana