Skip to content

Commit 54f6688

Browse files
authored
Refactor CI test scripts (mmtk#263)
This PR tries to consolidate the new dacapo chopin tests and the old dacapo 2006 tests to make them consistent. It also exposes tests to mmtk-core using Github workflows rather than shell scripts (WIP, mmtk/mmtk-core#935). It fixes the heap sizes for 2006 tests (mmtk/mmtk-core#424). Changes in the PR: * Separate building from testing when we run dacapo 2006 tests mmtk-openjdk CI. * Using moderate heap sizes (proportional to the min heap size) to run dacapo 2006 tests. * The old `ci-test.sh` still works (binding tests in the mmtk-core repo is still functioning). WIP: * `test-core-extended.yml` and `test-core-minimal.yml` (mmtk/mmtk-core#935) needs more work. However, I cannot test them at the moment. Workflow dispatch only works if the workflows exist in the default branch. I need to get them merged first, then start modifying and testing them.
1 parent 6f26cd2 commit 54f6688

28 files changed

+761
-545
lines changed

.github/scripts/build-normal.sh

-20
This file was deleted.

.github/scripts/ci-build.sh

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ set -xe
22

33
. $(dirname "$0")/common.sh
44

5-
unset JAVA_TOOL_OPTIONS
6-
unset MMTK_PLAN
5+
ensure_env OPENJDK_PATH
76

8-
# To OpenJDK folder
9-
cd $OPENJDK_PATH
7+
# Use fastdebug if DEBUG_LEVEL is unset
8+
DEBUG_LEVEL=${DEBUG_LEVEL:="fastdebug"}
9+
10+
# Build target. Could be empty, or product-bundles.
11+
build_target=$1
1012

11-
# Build
13+
# Build product bundle
14+
cd $OPENJDK_PATH
1215
sh configure --disable-warnings-as-errors --with-debug-level=$DEBUG_LEVEL
13-
make CONF=linux-x86_64-normal-server-$DEBUG_LEVEL THIRD_PARTY_HEAP=$BINDING_PATH/openjdk
16+
make CONF=linux-x86_64-normal-server-$DEBUG_LEVEL THIRD_PARTY_HEAP=$BINDING_PATH/openjdk $OPENJDK_BUILD_TARGET

.github/scripts/ci-checkout.sh

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ set -ex
66
OPENJDK_URL=`cargo read-manifest --manifest-path=$BINDING_PATH/mmtk/Cargo.toml | python3 -c 'import json,sys; print(json.load(sys.stdin)["metadata"]["openjdk"]["openjdk_repo"])'`
77
OPENJDK_VERSION=`cargo read-manifest --manifest-path=$BINDING_PATH/mmtk/Cargo.toml | python3 -c 'import json,sys; print(json.load(sys.stdin)["metadata"]["openjdk"]["openjdk_version"])'`
88

9+
# Use default openjdk path if it is not set (this is only need when MMTk core calls the script)
10+
OPENJDK_PATH=${OPENJDK_PATH:="$BINDING_PATH/repos/openjdk"}
11+
912
rm -rf $OPENJDK_PATH
1013
git clone $OPENJDK_URL $OPENJDK_PATH
1114
git -C $OPENJDK_PATH checkout $OPENJDK_VERSION

.github/scripts/ci-setup.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ rustup component add clippy --toolchain $RUSTUP_TOOLCHAIN
99
rustup component add rustfmt --toolchain $RUSTUP_TOOLCHAIN
1010
rustup override set $RUSTUP_TOOLCHAIN
1111

12-
# Download dacapo
13-
mkdir -p $DACAPO_PATH
14-
wget https://downloads.sourceforge.net/project/dacapobench/archive/2006-10-MR2/dacapo-2006-10-MR2.jar -O $DACAPO_PATH/dacapo-2006-10-MR2.jar
12+
# Install running
13+
pip3 install running-ng
1514

1615
# Install dependencies
1716
sudo apt-get update -y
17+
sudo apt-get install dos2unix
1818
sudo apt-get install build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libasound2-dev libxrandr-dev

.github/scripts/ci-test-assertions.sh

+16-20
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,53 @@ set -xe
44

55
unset JAVA_TOOL_OPTIONS
66

7-
export MMTK_EXTREME_ASSERTIONS=1
8-
. $(dirname "$0")/ci-build.sh
7+
run_subset() {
8+
heap_multiplier=$1
99

10-
cd $OPENJDK_PATH
10+
runbms_dacapo2006_with_heap_multiplier fop $heap_multiplier
11+
runbms_dacapo2006_with_heap_multiplier luindex $heap_multiplier
12+
}
1113

1214
# -- SemiSpace --
1315
export MMTK_PLAN=SemiSpace
1416

15-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
16-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
17+
run_subset 4
1718

1819
# --- Immix ---
1920
export MMTK_PLAN=Immix
2021

21-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
22-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
22+
run_subset 4
2323

2424
# --- GenImmix ---
2525
export MMTK_PLAN=GenImmix
2626

27-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
28-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
27+
run_subset 4
2928

3029
# --- StickyImmix ---
3130
export MMTK_PLAN=StickyImmix
3231

33-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
34-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
32+
run_subset 4
3533

3634
# -- GenCopy --
3735
export MMTK_PLAN=GenCopy
3836

39-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
40-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
37+
run_subset 4
4138

4239
# -- NoGC --
4340
export MMTK_PLAN=NoGC
4441

45-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms1G -Xmx1G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
46-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms1G -Xmx1G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
42+
runbms_dacapo2006_with_heap_size fop 1000 1000
43+
runbms_dacapo2006_with_heap_size luindex 1000 1000
4744

4845
# --- MarkSweep ---
4946
export MMTK_PLAN=MarkSweep
5047

51-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
52-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
48+
run_subset 8
5349

5450
# -- PageProtect --
5551
sudo sysctl -w vm.max_map_count=655300
5652
export MMTK_PLAN=PageProtect
5753

58-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms4G -Xmx4G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
59-
# Note: Disable compressed pointers for luindex as it does not work well with GC plans that uses virtual memory excessively.
60-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -Xms4G -Xmx4G -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
54+
# Note: Disable compressed pointers as it does not work well with GC plans that uses virtual memory excessively.
55+
runbms_dacapo2006_with_heap_size fop 4000 4000 -XX:-UseCompressedOops -XX:-UseCompressedClassPointers
56+
runbms_dacapo2006_with_heap_size luindex 4000 4000 -XX:-UseCompressedOops -XX:-UseCompressedClassPointers

.github/scripts/ci-test-malloc-mark-sweep.sh

+1-28
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,11 @@ set -xe
22

33
. $(dirname "$0")/common.sh
44

5-
build() {
6-
cd $OPENJDK_PATH
7-
export MMTK_MALLOC_MARK_SWEEP=1
8-
sh configure --disable-warnings-as-errors --with-debug-level=$DEBUG_LEVEL
9-
make CONF=linux-x86_64-normal-server-$DEBUG_LEVEL THIRD_PARTY_HEAP=$BINDING_PATH/openjdk
10-
unset MMTK_MALLOC_MARK_SWEEP
11-
}
12-
135
run_test() {
146
export MMTK_PLAN=MarkSweep
157

168
# Malloc marksweep is horribly slow. We just run fop.
17-
18-
# build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar antlr
19-
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms50M -Xmx50M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
20-
# build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar luindex
21-
# build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar pmd
22-
# build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
23-
# build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
9+
runbms_dacapo2006_with_heap_multiplier fop 4 -XX:-UseCompressedOops -XX:-UseCompressedClassPointers
2410

2511
unset MMTK_PLAN
2612
}
@@ -29,17 +15,4 @@ unset JAVA_TOOL_OPTIONS
2915
unset MMTK_PLAN
3016

3117
# --- Normal test ---
32-
build
33-
run_test
34-
35-
# --- Header mark bit ---
36-
export MARK_IN_HEADER=1
37-
build
38-
run_test
39-
unset MARK_IN_HEADER
40-
41-
# --- Test assertions ---
42-
export MMTK_EXTREME_ASSERTIONS=1
43-
build
4418
run_test
45-
unset MMTK_EXTREME_ASSERTIONS
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
set -xe
2+
3+
. $(dirname "$0")/common.sh
4+
5+
unset JAVA_TOOL_OPTIONS
6+
7+
run_subset() {
8+
heap_multiplier=$1
9+
10+
runbms_dacapo2006_with_heap_multiplier antlr $heap_multiplier
11+
runbms_dacapo2006_with_heap_multiplier fop $heap_multiplier
12+
runbms_dacapo2006_with_heap_multiplier luindex $heap_multiplier
13+
}
14+
15+
# --- Immix ---
16+
# export MMTK_PLAN=Immix
17+
# run_subset 4
18+
19+
# --- GenImmix ---
20+
# export MMTK_PLAN=GenImmix
21+
# run_subset 4
22+
23+
# --- StickyImmix ---
24+
# export MMTK_PLAN=StickyImmix
25+
# run_subset 4
26+
27+
# --- MarkSweep ---
28+
export MMTK_PLAN=MarkSweep
29+
30+
run_subset 8

0 commit comments

Comments
 (0)