markusthoemmes closed pull request #2627: Bumping Scala dependencies and clean up dependency usage. URL: https://github.com/apache/incubator-openwhisk/pull/2627
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/build.gradle b/build.gradle index 135c13b792..05aba2771d 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ buildscript { } dependencies { classpath "cz.alenkacz:gradle-scalafmt:${gradle.scalafmt.version}" + classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.2.1' } } @@ -37,3 +38,7 @@ def configureUnixClasspath(File script) { } .join('\n') } + +allprojects { + apply plugin: 'ca.cutterslade.analyze' +} diff --git a/common/scala/build.gradle b/common/scala/build.gradle index 2c04731bbf..31fe20ebd4 100644 --- a/common/scala/build.gradle +++ b/common/scala/build.gradle @@ -9,37 +9,53 @@ repositories { } dependencies { - compile "org.scala-lang:scala-library:${gradle.scala.version}" - - compile 'com.github.pureconfig:pureconfig_2.11:0.7.2' - compile 'io.spray:spray-json_2.11:1.3.3' - - compile 'com.typesafe.akka:akka-actor_2.11:2.5.6' - compile 'com.typesafe.akka:akka-stream_2.11:2.5.6' - compile 'com.typesafe.akka:akka-slf4j_2.11:2.5.6' - - compile 'com.typesafe.akka:akka-http-core_2.11:10.0.10' - compile 'com.typesafe.akka:akka-http-spray-json_2.11:10.0.10' - - compile 'com.lightbend.akka:akka-stream-alpakka-file_2.11:0.15' - - compile 'ch.qos.logback:logback-classic:1.2.3' - compile 'org.slf4j:jcl-over-slf4j:1.7.25' - compile 'org.slf4j:log4j-over-slf4j:1.7.25' - compile 'commons-codec:commons-codec:1.9' + /** + * Scala Dependencies + */ + compile "org.scala-lang:scala-library:${gradle.scala.major}.${gradle.scala.minor}.${gradle.scala.patch}" + + // Runtime logging + permitUnusedDeclared "com.typesafe.akka:akka-slf4j_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + runtime 'ch.qos.logback:logback-classic:1.2.3' + runtime 'org.slf4j:jcl-over-slf4j:1.7.25' + runtime 'org.slf4j:log4j-over-slf4j:1.7.25' + + // Configuration + compile 'com.typesafe:config:1.3.2' + compile "com.github.pureconfig:pureconfig_${gradle.scala.major}.${gradle.scala.minor}:0.7.2" + + // Akka + compile "com.typesafe.akka:akka-actor_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-stream_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-slf4j_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + + // Akka HTTP + compile "com.typesafe.akka:akka-http_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "com.typesafe.akka:akka-http-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "com.typesafe.akka:akka-http-spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "io.spray:spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.spray_json.version}" + compile "com.chuusai:shapeless_${gradle.scala.major}.${gradle.scala.minor}:${gradle.shapeless.version}" + + compile "com.lightbend.akka:akka-stream-alpakka-file_${gradle.scala.major}.${gradle.scala.minor}:0.15" + + // Kamon + compile "io.kamon:kamon-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.kamon.version}" + runtime "io.kamon:kamon-statsd_${gradle.scala.major}.${gradle.scala.minor}:${gradle.kamon.version}" + + /** + * Java Dependencies + */ compile 'commons-io:commons-io:2.4' - compile 'commons-collections:commons-collections:3.2.2' - compile 'org.apache.kafka:kafka-clients:0.11.0.1' - compile ('org.apache.httpcomponents:httpclient:4.4.1') { + compile 'org.apache.commons:commons-collections4:4.1' + compile "org.apache.kafka:kafka-clients:${gradle.kafka.version}" + compile 'org.apache.httpcomponents:httpcore:4.4.4' + compile ('org.apache.httpcomponents:httpclient:4.5.2') { exclude group: 'commons-logging' } compile ('com.fasterxml.uuid:java-uuid-generator:3.1.3') { exclude group: 'log4j' } compile 'com.github.ben-manes.caffeine:caffeine:2.4.0' - compile 'com.google.code.findbugs:jsr305:3.0.2' - compile 'io.kamon:kamon-core_2.11:0.6.7' - compile 'io.kamon:kamon-statsd_2.11:0.6.7' } tasks.withType(ScalaCompile) { diff --git a/common/scala/src/main/scala/whisk/common/RingBuffer.scala b/common/scala/src/main/scala/whisk/common/RingBuffer.scala index 4f5a6c789e..a81db8c332 100644 --- a/common/scala/src/main/scala/whisk/common/RingBuffer.scala +++ b/common/scala/src/main/scala/whisk/common/RingBuffer.scala @@ -17,16 +17,16 @@ package whisk.common -import org.apache.commons.collections.buffer.CircularFifoBuffer +import org.apache.commons.collections4.queue.CircularFifoQueue object RingBuffer { def apply[T](size: Int) = new RingBuffer[T](size) } class RingBuffer[T](size: Int) { - private val inner = new CircularFifoBuffer(size) + private val inner = new CircularFifoQueue[T](size) - def add(el: T) = inner.add(el) + def add(el: T) = inner.offer(el) def toList() = inner.toArray().asInstanceOf[Array[T]].toList } diff --git a/common/scala/src/main/scala/whisk/core/entity/ArgNormalizer.scala b/common/scala/src/main/scala/whisk/core/entity/ArgNormalizer.scala index 66676397f3..5dd6536dbb 100644 --- a/common/scala/src/main/scala/whisk/core/entity/ArgNormalizer.scala +++ b/common/scala/src/main/scala/whisk/core/entity/ArgNormalizer.scala @@ -17,9 +17,7 @@ package whisk.core.entity -import spray.json.RootJsonFormat -import spray.json.pimpString -import spray.json.JsString +import spray.json._ import scala.util.Try protected[entity] trait ArgNormalizer[T] { diff --git a/core/controller/build.gradle b/core/controller/build.gradle index 45aba6d7fc..b5bbb0980d 100644 --- a/core/controller/build.gradle +++ b/core/controller/build.gradle @@ -11,9 +11,35 @@ repositories { } dependencies { - compile 'com.typesafe.akka:akka-distributed-data_2.11:2.5.4' - compile "org.scala-lang:scala-library:${gradle.scala.version}" + /** + * Scala Dependencies + */ + compile "org.scala-lang:scala-library:${gradle.scala.major}.${gradle.scala.minor}.${gradle.scala.patch}" compile project(':common:scala') + + // Configuration + compile "com.github.pureconfig:pureconfig_${gradle.scala.major}.${gradle.scala.minor}:0.7.2" + + // Akka + compile "com.typesafe.akka:akka-actor_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-stream_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-cluster_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-distributed-data_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + + // Akka HTTP + compile "com.typesafe.akka:akka-http_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "com.typesafe.akka:akka-http-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "com.typesafe.akka:akka-http-spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "io.spray:spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.spray_json.version}" + compile "com.chuusai:shapeless_${gradle.scala.major}.${gradle.scala.minor}:${gradle.shapeless.version}" + + // Kamon + compile "io.kamon:kamon-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.kamon.version}" + + /** + * Java Dependencies + */ + compile "org.apache.kafka:kafka-clients:${gradle.kafka.version}" } tasks.withType(ScalaCompile) { diff --git a/core/invoker/build.gradle b/core/invoker/build.gradle index 4a9ceff902..0c866f7a8e 100644 --- a/core/invoker/build.gradle +++ b/core/invoker/build.gradle @@ -10,11 +10,42 @@ repositories { mavenCentral() } +analyzeClassesDependencies { + justWarn = true +} + dependencies { - compile "org.scala-lang:scala-library:${gradle.scala.version}" + /** + * Scala Dependencies + */ + compile "org.scala-lang:scala-library:${gradle.scala.major}.${gradle.scala.minor}.${gradle.scala.patch}" compile project(':common:scala') + // Configuration + compile "com.github.pureconfig:pureconfig_${gradle.scala.major}.${gradle.scala.minor}:0.7.2" + + // Akka + compile "com.typesafe.akka:akka-actor_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + compile "com.typesafe.akka:akka-stream_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + + // Akka HTTP + compile "com.typesafe.akka:akka-http_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "com.typesafe.akka:akka-http-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + compile "io.spray:spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.spray_json.version}" + compile "com.chuusai:shapeless_${gradle.scala.major}.${gradle.scala.minor}:${gradle.shapeless.version}" + + compile "com.lightbend.akka:akka-stream-alpakka-file_${gradle.scala.major}.${gradle.scala.minor}:0.15" + + // Kamon + compile "io.kamon:kamon-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.kamon.version}" + + /** + * Java Dependencies + */ + compile "org.apache.kafka:kafka-clients:${gradle.kafka.version}" compile 'org.apache.curator:curator-recipes:4.0.0', { exclude group: 'org.apache.zookeeper', module:'zookeeper' } + compile 'org.apache.curator:curator-framework:4.0.0', { exclude group: 'org.apache.zookeeper', module:'zookeeper' } + compile 'org.apache.curator:curator-client:4.0.0', { exclude group: 'org.apache.zookeeper', module:'zookeeper' } compile 'org.apache.zookeeper:zookeeper:3.4.11' } diff --git a/settings.gradle b/settings.gradle index 57c899386a..1b812855ab 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,12 +19,21 @@ include 'tests:dat:blackbox:badproxy' rootProject.name = 'openwhisk' -gradle.ext.scala = [ - version: '2.11.11', - compileFlags: ['-feature', '-unchecked', '-deprecation', '-Xfatal-warnings', '-Ywarn-unused-import'] -] - gradle.ext.scalafmt = [ version: '1.5.0', config: new File(rootProject.projectDir, '.scalafmt.conf') ] + +gradle.ext.scala = [ + major: 2, + minor: 11, + patch: 12, + compileFlags: ['-feature', '-unchecked', '-deprecation', '-Xfatal-warnings', '-Ywarn-unused-import'] +] +gradle.ext.akka = [version: '2.5.8'] +gradle.ext.akka_http = [version: '10.0.10'] +gradle.ext.kafka = [version: '0.11.0.1'] +gradle.ext.spray_json = [version: '1.3.3'] + +gradle.ext.kamon = [version: '0.6.7'] +gradle.ext.shapeless = [version: '2.3.2'] diff --git a/tests/build.gradle b/tests/build.gradle index 2aa602ac1f..aebf2c1cff 100644 --- a/tests/build.gradle +++ b/tests/build.gradle @@ -6,6 +6,10 @@ repositories { mavenCentral() } +analyzeTestClassesDependencies { + justWarn = true +} + tasks.withType(Test) { systemProperties(System.getProperties()) @@ -51,23 +55,43 @@ test.dependsOn([ ]) dependencies { - compile "org.scala-lang:scala-library:${gradle.scala.version}" - compile 'org.apache.commons:commons-lang3:3.3.2' - compile 'org.apache.httpcomponents:httpclient:4.5.2:tests' - compile 'org.apache.httpcomponents:httpmime:4.3.6' - compile 'junit:junit:4.11' - compile 'com.jayway.restassured:rest-assured:2.6.0' - compile 'org.scalatest:scalatest_2.11:3.0.1' - compile 'com.typesafe.akka:akka-testkit_2.11:2.5.4' - compile 'com.google.code.gson:gson:2.3.1' - compile 'org.scalamock:scalamock-scalatest-support_2.11:3.4.2' - compile 'com.typesafe.akka:akka-testkit_2.11:2.4.16' - compile 'com.typesafe.akka:akka-http-testkit_2.11:10.0.10' - compile 'com.github.java-json-tools:json-schema-validator:2.2.8'; - - compile project(':common:scala') - compile project(':core:controller') - compile project(':core:invoker') + testCompile "org.scala-lang:scala-library:${gradle.scala.major}.${gradle.scala.minor}.${gradle.scala.patch}" + testCompile project(':common:scala') + testCompile project(':core:controller') + testCompile project(':core:invoker') + + testCompile "io.spray:spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.spray_json.version}" + + testCompile "com.typesafe.akka:akka-actor_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + testCompile "com.typesafe.akka:akka-stream_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + testCompile "com.typesafe.akka:akka-http_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + testCompile "com.typesafe.akka:akka-http-core_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + testCompile "com.typesafe.akka:akka-http-spray-json_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + + testCompile "org.apache.kafka:kafka-clients:${gradle.kafka.version}" + + testCompile 'junit:junit:4.11' + testCompile "org.scalatest:scalatest_${gradle.scala.major}.${gradle.scala.minor}:3.0.1" + testCompile "org.scalactic:scalactic_${gradle.scala.major}.${gradle.scala.minor}:3.0.1" + testCompile "org.scalamock:scalamock-core_${gradle.scala.major}.${gradle.scala.minor}:3.4.2" + testCompile "org.scalamock:scalamock-scalatest-support_${gradle.scala.major}.${gradle.scala.minor}:3.4.2" + testCompile "com.typesafe.akka:akka-testkit_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka.version}" + testCompile "com.typesafe.akka:akka-http-testkit_${gradle.scala.major}.${gradle.scala.minor}:${gradle.akka_http.version}" + + testCompile 'com.typesafe:config:1.3.1' + testCompile "com.typesafe:ssl-config-core_${gradle.scala.major}.${gradle.scala.minor}:0.2.2" + + testCompile 'org.apache.httpcomponents:httpcore:4.4.6' + testCompile 'commons-io:commons-io:2.4' + testCompile "org.apache.kafka:kafka-clients:${gradle.kafka.version}" + + testCompile 'org.apache.commons:commons-lang3:3.3.2' + testCompile 'org.apache.httpcomponents:httpclient:4.5.2:tests' + testCompile 'com.jayway.restassured:rest-assured:2.6.0' + testCompile 'com.google.code.gson:gson:2.3.1' + testCompile 'com.fasterxml.jackson.core:jackson-databind:2.2.3' + testCompile 'com.github.java-json-tools:json-schema-core:1.2.8' + testCompile 'com.github.java-json-tools:json-schema-validator:2.2.8' } tasks.withType(ScalaCompile) { diff --git a/tests/src/test/scala/whisk/core/connector/test/MessageFeedTests.scala b/tests/src/test/scala/whisk/core/connector/test/MessageFeedTests.scala index b240eddf8a..b7b1d0ffc6 100644 --- a/tests/src/test/scala/whisk/core/connector/test/MessageFeedTests.scala +++ b/tests/src/test/scala/whisk/core/connector/test/MessageFeedTests.scala @@ -145,7 +145,7 @@ class MessageFeedTests connector.expectMsg(Transition(connector.fsm, FillingPipeline, DrainingPipeline)) connector.peekCount.get shouldBe peeks - connector.expectNoMsg(500.milliseconds) + connector.expectNoMessage(500.milliseconds) } it should "transition from drain to fill mode" in { @@ -162,7 +162,7 @@ class MessageFeedTests // stay in drain mode, no more peeking timeout(connector.fsm) // should be ignored - connector.expectNoMsg(500.milliseconds) + connector.expectNoMessage(500.milliseconds) connector.peekCount.get shouldBe peeks // no new reads // expecting overflow of 2 in the queue, which is true if all expected messages were sent @@ -170,7 +170,7 @@ class MessageFeedTests // drain one, should stay in draining state connector.fsm ! Processed - connector.expectNoMsg(500.milliseconds) + connector.expectNoMessage(500.milliseconds) connector.peekCount.get shouldBe peeks // no new reads // back to fill mode @@ -182,6 +182,6 @@ class MessageFeedTests connector.fill(1) connector.expectMsg(Transition(connector.fsm, FillingPipeline, DrainingPipeline)) - connector.expectNoMsg(500.milliseconds) + connector.expectNoMessage(500.milliseconds) } } diff --git a/tests/src/test/scala/whisk/core/containerpool/test/ContainerPoolTests.scala b/tests/src/test/scala/whisk/core/containerpool/test/ContainerPoolTests.scala index 0b531033d1..7e29d1d94d 100644 --- a/tests/src/test/scala/whisk/core/containerpool/test/ContainerPoolTests.scala +++ b/tests/src/test/scala/whisk/core/containerpool/test/ContainerPoolTests.scala @@ -131,7 +131,7 @@ class ContainerPoolTests pool ! runMessage containers(0).expectMsg(runMessage) - containers(1).expectNoMsg(100.milliseconds) + containers(1).expectNoMessage(100.milliseconds) } it should "reuse a warm container when action is the same even if revision changes" in within(timeout) { @@ -145,7 +145,7 @@ class ContainerPoolTests pool ! runMessageDifferentVersion containers(0).expectMsg(runMessageDifferentVersion) - containers(1).expectNoMsg(100.milliseconds) + containers(1).expectNoMessage(100.milliseconds) } it should "create a container if it cannot find a matching container" in within(timeout) { @@ -227,7 +227,7 @@ class ContainerPoolTests containers(0).expectMsg(runMessage) containers(0).send(pool, RescheduleJob) // emulate container failure ... containers(0).send(pool, runMessage) // ... causing job to be rescheduled - feed.expectNoMsg(100.millis) + feed.expectNoMessage(100.millis) containers(1).expectMsg(runMessage) // job resent to new actor } diff --git a/tools/travis/build.sh b/tools/travis/build.sh index 4870acb72a..1f98c5c33f 100755 --- a/tools/travis/build.sh +++ b/tools/travis/build.sh @@ -14,9 +14,9 @@ git clone https://github.com/apache/incubator-openwhisk-utilities.git # run the scancode util. against project source code starting at its root incubator-openwhisk-utilities/scancode/scanCode.py $ROOTDIR --config $ROOTDIR/tools/build/scanCode.cfg -# run scalafmt checks +# run static code checks cd $ROOTDIR -TERM=dumb ./gradlew checkScalafmtAll +TERM=dumb ./gradlew checkScalafmtAll analyzeDependencies cd $ROOTDIR/ansible ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services