Make docker image for dtests configurable

Also build against Java 11 if on trunk and Java 11 is available
(Java 8 is still used for test execution)
diff --git a/build-scripts/cassandra-dtest-pytest.sh b/build-scripts/cassandra-dtest-pytest.sh
index 7eae11e..9602cf9 100755
--- a/build-scripts/cassandra-dtest-pytest.sh
+++ b/build-scripts/cassandra-dtest-pytest.sh
@@ -21,6 +21,13 @@
 #Have Cassandra skip all fsyncs to improve test performance and reliability
 export CASSANDRA_SKIP_SYNC=true
 
+# set JAVA_HOME environment to enable multi-version jar files for >4.0
+# both JAVA8/11_HOME env variables must exist
+grep -q _build_multi_java $CASSANDRA_DIR/build.xml
+if [ $? -eq 0 -a -n "$JAVA8_HOME" -a -n "$JAVA11_HOME" ]; then
+   export JAVA_HOME="$JAVA11_HOME"
+fi
+
 # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
 for x in $(seq 1 3); do
     ant clean jar
@@ -35,6 +42,11 @@
     exit ${RETURN}
 fi
 
+# restore JAVA_HOME to Java 8 version we intent to run tests with
+if [ -n "$JAVA8_HOME" ]; then
+   export JAVA_HOME="$JAVA8_HOME"
+fi
+
 # Set up venv with dtest dependencies
 set -e # enable immediate exit if venv setup fails
 virtualenv --python=python3 --no-site-packages venv
diff --git a/docker/jenkins/jenkinscommand.sh b/docker/jenkins/jenkinscommand.sh
index 8a29dd7..e342ed4 100644
--- a/docker/jenkins/jenkinscommand.sh
+++ b/docker/jenkins/jenkinscommand.sh
@@ -1,15 +1,20 @@
 #!/bin/sh
-DOCKER_IMAGE="kjellman/cassandra-test:0.4.4"
+if [ "$#" -lt 7 ]; then
+   echo "Usage: jenkinscommand.sh GITHUB_USER BRANCH DTEST_REPO_URL DTEST_BRANCH BUILDS_REPO_URL BUILDS_BRANCH DOCKER_IMAGE [target]"
+   exit 1
+fi
 BUILDSREPO=$5
 BUILDSBRANCH=$6
+DOCKER_IMAGE=$7
+TARGET=$8
 cat > env.list <<EOF
 REPO=$1
 BRANCH=$2
 DTEST_REPO=$3
 DTEST_BRANCH=$4
 EOF
-echo "jenkinscommand.sh: running: git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $7"
-ID=$(docker run --env-file env.list -dt $DOCKER_IMAGE dumb-init bash -ilc "git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $7")
+echo "jenkinscommand.sh: running: git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $TARGET"
+ID=$(docker run --env-file env.list -dt $DOCKER_IMAGE dumb-init bash -ilc "git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $TARGET")
 # use docker attach instead of docker wait to get output
 docker attach --no-stdin $ID
 echo "$ID done, copying files"
diff --git a/jenkins-dsl/cassandra_job_dsl_seed.groovy b/jenkins-dsl/cassandra_job_dsl_seed.groovy
index 3bda0dc..71a0d9d 100644
--- a/jenkins-dsl/cassandra_job_dsl_seed.groovy
+++ b/jenkins-dsl/cassandra_job_dsl_seed.groovy
@@ -50,6 +50,10 @@
 if(binding.hasVariable("CASSANDRA_DTEST_TEST_TARGETS")) {
     dtestTargets = "${CASSANDRA_DTEST_TEST_TARGETS}".split(",")
 }
+def dtestDockerImage = 'kjellman/cassandra-test:0.4.4'
+if(binding.hasVariable("CASSANDRA_DOCKER_IMAGE")) {
+    dtestDockerImage = "${CASSANDRA_DOCKER_IMAGE}"
+}
 
 ////////////////////////////////////////////////////////////
 //
@@ -344,7 +348,7 @@
                     scm(triggerInterval)
                 }
                 steps {
-                    shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh apache ${branchName} https://github.com/apache/cassandra-dtest.git master ${buildsRepo} ${buildsBranch} ${targetName}")
+                    shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh apache ${branchName} https://github.com/apache/cassandra-dtest.git master ${buildsRepo} ${buildsBranch} ${dtestDockerImage} ${targetName}")
                 }
             }
         }
@@ -446,6 +450,7 @@
         stringParam('BRANCH', 'trunk', 'The branch of cassandra to checkout')
         stringParam('DTEST_REPO', "${dtestRepo}", 'The cassandra-dtest repo URL')
         stringParam('DTEST_BRANCH', 'master', 'The branch of cassandra-dtest to checkout')
+        stringParam('DOCKER_IMAGE', "${dtestDockerImage}", 'Docker image for running dtests')
     }
     scm {
         git {
@@ -461,7 +466,7 @@
     steps {
         buildDescription('', buildDescStr)
         shell("git clean -xdff ; git clone -b ${buildsBranch} ${buildsRepo}")
-        shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh \$REPO \$BRANCH \$DTEST_REPO \$DTEST_BRANCH ${buildsRepo} ${buildsBranch}")
+        shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh \$REPO \$BRANCH \$DTEST_REPO \$DTEST_BRANCH ${buildsRepo} ${buildsBranch} \$DOCKER_IMAGE")
     }
     publishers {
         archiveArtifacts('test_stdout.txt')