From 6f9dd46361ee585227dce4a6e85067ca520b070d Mon Sep 17 00:00:00 2001 From: Chris Wesdorp Date: Thu, 11 Apr 2019 17:42:02 +0200 Subject: [PATCH 1/5] Upgrade to Oracle Java 8u202 --- .travis.yml | 2 +- lib/buildpackutil.py | 55 ++++++++++++++++-------------- start.py | 4 +-- tests/run.sh | 2 +- tests/usecase/test_jdk_versions.py | 4 +-- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.travis.yml b/.travis.yml index ba546fcad..f30c0c905 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ before_script: - sudo update-ca-certificates script: - - make test + - travis_wait 30 make test notifications: email: false diff --git a/lib/buildpackutil.py b/lib/buildpackutil.py index 46df64d58..c188c6e6f 100644 --- a/lib/buildpackutil.py +++ b/lib/buildpackutil.py @@ -2,6 +2,7 @@ import json import logging import os +import re import subprocess import sys from distutils.util import strtobool @@ -160,25 +161,35 @@ class NotFoundException(Exception): def get_java_version(mx_version): - versions = {"7": "7u80", "8u51": "8u51", "8": "8", "8u202": "8u202"} - - if mx_version >= MXVersion("8"): - default = "8u202" - elif mx_version >= MXVersion("7.23.1"): - default = "8u202" + if mx_version >= MXVersion("7.23.1"): + java_version = { + "version": os.getenv("JAVA_VERSION", "8u202"), + "vendor": "AdoptOpenJDK", + } elif mx_version >= MXVersion("6.6"): - default = "8" + java_version = { + "version": os.getenv("JAVA_VERSION", "8u202"), + "vendor": "oracle", + } elif mx_version >= MXVersion("5.18"): - default = "8u51" + java_version = { + "version": os.getenv("JAVA_VERSION", "8u51"), + "vendor": "oracle", + } else: - default = "7" - main_java_version = os.getenv("JAVA_VERSION", default) + java_version = { + "version": os.getenv("JAVA_VERSION", "7u80"), + "vendor": "oracle", + } - if main_java_version not in list(versions.keys()): + if not re.match(r"^\d+u\d+$", java_version["version"]): raise Exception( - "Invalid Java version specified: %s" % main_java_version + "Invalid Java version specified: {}".format( + java_version["version"] + ) ) - return versions[main_java_version] + + return java_version def get_mpr_file_from_dir(directory): @@ -328,22 +339,14 @@ def ensure_and_get_mono(mx_version, cache_dir): def _determine_jdk(mx_version, package="jdk"): - oracle_jdks = ("7", "8u51", "8") - adoptopenjdk_jdks = ("8u202",) java_version = get_java_version(mx_version) - if java_version in oracle_jdks: - return {"version": java_version, "type": package, "vendor": "oracle"} - elif java_version in adoptopenjdk_jdks: - return { - "version": java_version, - "type": "AdoptOpenJDK-{}".format(package), - "vendor": "AdoptOpenJDK", - } + if java_version["vendor"] == "AdoptOpenJDK": + java_version.update({"type": "AdoptOpenJDK-{}".format(package)}) else: - raise Exception( - "Unknown java version identifier: {}".format(java_version) - ) + java_version.update({"type": package}) + + return java_version def _compose_jvm_target_dir(jdk): diff --git a/start.py b/start.py index e4cc902c5..8f3d390a7 100755 --- a/start.py +++ b/start.py @@ -68,7 +68,7 @@ def get_current_buildpack_commit(): logger.info( - "Started Mendix Cloud Foundry Buildpack v3.1.0 [commit:%s]", + "Started Mendix Cloud Foundry Buildpack v3.1.2 [commit:%s]", get_current_buildpack_commit(), ) logging.getLogger("m2ee").propagate = False @@ -847,7 +847,7 @@ def set_up_m2ee_client(vcap_data): ) java_version = buildpackutil.get_java_version( m2ee.config.get_runtime_version() - ) + )["version"] set_jvm_memory(m2ee.config._conf["m2ee"], vcap_data, java_version) set_jvm_locale(m2ee.config._conf["m2ee"], java_version) set_user_provided_java_options(m2ee.config._conf["m2ee"]) diff --git a/tests/run.sh b/tests/run.sh index bb236d041..38d9242cb 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -24,6 +24,6 @@ cleanup echo 'starting test run, tests will run in parallel and output shown at the end' export PYTHONPATH=$PWD/../lib/ -nosetests -s -vv --processes=10 --process-timeout=900 --with-timer usecase/ +nosetests --verbosity=3 --processes=10 --process-timeout=900 --with-timer usecase/ cleanup diff --git a/tests/usecase/test_jdk_versions.py b/tests/usecase/test_jdk_versions.py index e6f0dcdfc..e8079edf3 100644 --- a/tests/usecase/test_jdk_versions.py +++ b/tests/usecase/test_jdk_versions.py @@ -54,8 +54,8 @@ def test_oracle_jdk_8(self): jdk = buildpackutil._determine_jdk("7.16.0", "jre") target_dir = buildpackutil._compose_jvm_target_dir(jdk) - assert jdk["version"] == "8" - assert target_dir == "usr/lib/jvm/jre-8-oracle-x64" + assert jdk["version"] == "8u202" + assert target_dir == "usr/lib/jvm/jre-8u202-oracle-x64" self._check_java_presence(target_dir) From 5eb31499a85870ef097a9d8f017096b29b22f3ff Mon Sep 17 00:00:00 2001 From: Chris Wesdorp Date: Fri, 12 Apr 2019 12:18:23 +0200 Subject: [PATCH 2/5] Application deployed for mono4 doesn't have production mode security set. Using development mode --- .travis.yml | 2 +- tests/run.sh | 2 +- tests/usecase/test_mono4.py | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f30c0c905..c51ecec02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ before_script: - sudo update-ca-certificates script: - - travis_wait 30 make test + - travis_wait 45 make test notifications: email: false diff --git a/tests/run.sh b/tests/run.sh index 38d9242cb..33af6a48b 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -24,6 +24,6 @@ cleanup echo 'starting test run, tests will run in parallel and output shown at the end' export PYTHONPATH=$PWD/../lib/ -nosetests --verbosity=3 --processes=10 --process-timeout=900 --with-timer usecase/ +nosetests --verbosity=3 --processes=5 --process-timeout=900 --with-timer usecase/ cleanup diff --git a/tests/usecase/test_mono4.py b/tests/usecase/test_mono4.py index c13bbfbe8..f57690099 100644 --- a/tests/usecase/test_mono4.py +++ b/tests/usecase/test_mono4.py @@ -6,7 +6,10 @@ def setUp(self): super().setUp() self.setUpCF( "MontBlancApp720.mpk", - env_vars={"DEPLOY_PASSWORD": self.mx_password}, + env_vars={ + "DEPLOY_PASSWORD": self.mx_password, + "DEVELOPMENT_MODE": True, + }, ) self.startApp() From 7df4233a627af909fcbb77e380474c69e6a9fc2c Mon Sep 17 00:00:00 2001 From: Chris Wesdorp Date: Sat, 13 Apr 2019 00:08:27 +0200 Subject: [PATCH 3/5] Wait for mxbuild to be ready for serving requests --- tests/usecase/test_fastdeploy.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/usecase/test_fastdeploy.py b/tests/usecase/test_fastdeploy.py index 990b9ab6f..01481a665 100644 --- a/tests/usecase/test_fastdeploy.py +++ b/tests/usecase/test_fastdeploy.py @@ -7,8 +7,11 @@ class TestCaseFastdeploy(basetest.BaseTest): def setUp(self): super().setUp() self.setUpCF( - "MontBlancApp720.mpk", - env_vars={"DEPLOY_PASSWORD": self.mx_password}, + "ci-buildpack-test-app-mx7-18-3.mpk", + env_vars={ + "DEPLOY_PASSWORD": self.mx_password, + "USE_DATA_SNAPSHOT": "false", + }, ) self.startApp() @@ -18,15 +21,24 @@ def test_fast_deploy(self): "wget", "--quiet", "https://s3-eu-west-1.amazonaws.com" - "/mx-buildpack-ci/MontBlancApp720b.mpk", + "/mx-buildpack-ci/ci-buildpack-test-app-mx7-18-3.mpk", ) ) full_uri = "https://" + self.app_name + "/_mxbuild/" - time.sleep(10) + + max = 12 + for attempt in range(0, max): + time.sleep(10) + r = requests.get(full_uri, auth=("deploy", self.mx_password)) + if r.status_code == 501: + break + if attempt == max - 1: + raise Exception("Starting MxBuild takes too long") + r = requests.post( full_uri, auth=("deploy", self.mx_password), - files={"file": open("MontBlancApp720b.mpk", "rb")}, + files={"file": open("ci-buildpack-test-app-mx7-18-3.mpk", "rb")}, ) if r.status_code != 200: From 82f9b82637db1644443c2fb8d7af63edb7f4515e Mon Sep 17 00:00:00 2001 From: Chris Wesdorp Date: Sun, 14 Apr 2019 09:44:33 +0200 Subject: [PATCH 4/5] test_mxadmin_exposed_authorized.py can be run with MDA instead of MPK (source push) --- tests/usecase/test_mxadmin_exposed_authorized.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/usecase/test_mxadmin_exposed_authorized.py b/tests/usecase/test_mxadmin_exposed_authorized.py index b215eb285..dcbbc341e 100644 --- a/tests/usecase/test_mxadmin_exposed_authorized.py +++ b/tests/usecase/test_mxadmin_exposed_authorized.py @@ -5,7 +5,7 @@ class TestCaseMxAdminExposed(basetest.BaseTest): def setUp(self): super().setUp() - self.setUpCF("MontBlancApp720.mpk") + self.setUpCF("BuildpackTestApp-mx-7-16.mda") self.startApp() def test_mxadmin_exposed_unauthorized(self): From 44ac03192ee322d5467246b4d85741612ab4b26d Mon Sep 17 00:00:00 2001 From: Chris Wesdorp Date: Mon, 15 Apr 2019 09:41:40 +0200 Subject: [PATCH 5/5] Update to CF CLI 6.43.0 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c51ecec02..4de90b6c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ python: install: 'pip3 install -r tests/requirements.txt' before_script: - - wget --quiet "https://cli.run.pivotal.io/stable?release=debian64&version=6.30.0&source=github-rel" -O cli.deb + - wget --quiet "https://packages.cloudfoundry.org/stable?release=debian64&version=6.43.0&source=github-rel" -O cli.deb - sudo dpkg -i cli.deb - sudo curl -s https://download.mendix.com/Mendix-CA-G2.crt -o /usr/local/share/ca-certificates/ca.crt - sudo update-ca-certificates