From dc1737f3e6ae3b2ce72afe1154da4d94f4de4a86 Mon Sep 17 00:00:00 2001 From: Boltres Andreas Date: Tue, 28 Jun 2022 18:10:56 +0200 Subject: [PATCH] upgraded dependencies (cloudsim7.3.0, jdk17, gradle7.4, etc.) and implemented resulting API changes --- build.gradle | 27 +- gradle/wrapper/gradle-wrapper.jar | Bin 55436 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 286 +++++++++++------- gradlew.bat | 43 +-- .../java/pl/edu/agh/csg/CloudSimProxy.java | 9 +- 6 files changed, 217 insertions(+), 151 deletions(-) diff --git a/build.gradle b/build.gradle index bb5d00f..1c65ab3 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ apply plugin: 'com.bmuschko.docker-java-application' buildscript { repositories { gradlePluginPortal() } dependencies { - classpath 'com.bmuschko:gradle-docker-plugin:4.10.0' + classpath 'com.bmuschko:gradle-docker-plugin:7.4.0' } } @@ -25,7 +25,6 @@ repositories { // You can declare any Maven/Ivy/file repository here. mavenCentral() mavenLocal() - jcenter() } sourceCompatibility = 1.8 @@ -35,26 +34,26 @@ def dockerImageTag = 'pkoperek/cloudsimplus-gateway:1.8.8' // In this section you declare the dependencies for your production and test code dependencies { // The production code uses the SLF4J logging API at compile time - compile 'org.slf4j:slf4j-api:1.7.21' - compile 'org.cloudsimplus:cloudsim-plus:5.0.4' - compile group: 'net.sf.py4j', name: 'py4j', version: '0.10.7' - compile group: "ch.qos.logback", name: "logback-classic", version: "1.2.3" - compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.0' - compile 'com.google.code.gson:gson:2.8.5' - compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5' - compile group: 'org.hamcrest', name: 'hamcrest', version: '2.2' + implementation 'org.slf4j:slf4j-api:1.7.36' + implementation 'org.cloudsimplus:cloudsim-plus:7.3.0' + implementation group: 'net.sf.py4j', name: 'py4j', version: '0.10.9.5' + implementation group: "ch.qos.logback", name: "logback-classic", version: "1.2.11" + implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' + implementation 'com.google.code.gson:gson:2.9.0' + implementation group: 'org.postgresql', name: 'postgresql', version: '42.3.6' + implementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2' - testCompile 'junit:junit:4.12' - testCompile 'com.github.stefanbirkner:system-lambda:1.2.0' + testImplementation 'junit:junit:4.13.2' + testImplementation 'com.github.stefanbirkner:system-lambda:1.2.1' } docker { url = 'unix:///var/run/docker.sock' javaApplication { - baseImage = 'openjdk:11-jre' + baseImage = 'openjdk:17-jre' maintainer = 'Pawel Koperek "pkoperek@gmail.com"' ports = [25333] - tag = dockerImageTag + // tag = dockerImageTag jvmArgs = ['-Xms1G', '-Xmx4G'] } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1e64f399ced7f001933971a817b75f45bbfd2331..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 40977 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 delta 36829 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index e95643d..ac1b06f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/pl/edu/agh/csg/CloudSimProxy.java b/src/main/java/pl/edu/agh/csg/CloudSimProxy.java index edb09ab..27d6706 100644 --- a/src/main/java/pl/edu/agh/csg/CloudSimProxy.java +++ b/src/main/java/pl/edu/agh/csg/CloudSimProxy.java @@ -6,7 +6,7 @@ import org.cloudbus.cloudsim.cloudlets.Cloudlet; import org.cloudbus.cloudsim.cloudlets.CloudletExecution; import org.cloudbus.cloudsim.core.CloudSim; -import org.cloudbus.cloudsim.core.CloudSimTags; +import org.cloudbus.cloudsim.core.CloudSimTag; import org.cloudbus.cloudsim.core.events.SimEvent; import org.cloudbus.cloudsim.datacenters.Datacenter; import org.cloudbus.cloudsim.datacenters.DatacenterSimple; @@ -16,6 +16,7 @@ import org.cloudbus.cloudsim.provisioners.ResourceProvisionerSimple; import org.cloudbus.cloudsim.resources.Pe; import org.cloudbus.cloudsim.resources.PeSimple; +import org.cloudbus.cloudsim.schedulers.MipsShare; import org.cloudbus.cloudsim.schedulers.cloudlet.CloudletSchedulerSpaceShared; import org.cloudbus.cloudsim.schedulers.vm.VmSchedulerTimeShared; import org.cloudbus.cloudsim.vms.Vm; @@ -98,7 +99,7 @@ private void scheduleAdditionalCloudletProcessingEvent(final List jobs datacenter, datacenter, c.getSubmissionDelay() + 1.0, - CloudSimTags.VM_UPDATE_CLOUDLET_PROCESSING, + CloudSimTag.VM_UPDATE_CLOUDLET_PROCESSING, ResubmitAnchor.THE_VALUE ) ); @@ -297,7 +298,7 @@ private void cancelInvalidEvents() { public boolean test(SimEvent current) { // remove dupes if (previous != null && - current.getTag() == CloudSimTags.VM_UPDATE_CLOUDLET_PROCESSING && + current.getTag() == CloudSimTag.VM_UPDATE_CLOUDLET_PROCESSING && current.getSource() == datacenter && current.getDestination() == datacenter && previous.getTime() == current.getTime() && @@ -487,7 +488,7 @@ public double getRunningCost() { class CloudletScheduler extends CloudletSchedulerSpaceShared { @Override - public double updateProcessing(double currentTime, List mipsShare) { + public double updateProcessing(double currentTime, MipsShare mipsShare) { final int sizeBefore = this.getCloudletWaitingList().size(); final double nextSimulationTime = super.updateProcessing(currentTime, mipsShare); final int sizeAfter = this.getCloudletWaitingList().size();