Skip to content

Commit

Permalink
Scala 2.13
Browse files Browse the repository at this point in the history
fix #22
  • Loading branch information
francisdb committed Nov 18, 2019
1 parent d41a37c commit 8666b1f
Show file tree
Hide file tree
Showing 29 changed files with 198 additions and 219 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ before_install:

language: scala
scala:
- 2.12.4
- 2.13.1

jdk:
- oraclejdk8
Expand Down
66 changes: 31 additions & 35 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ import sbt.Keys.thisProjectRef

organization in ThisBuild := "io.waylay.kairosdb"

val playWsVersion = "2.0.3"
val playJsonVersion = "2.7.2"
val akkaVersion = "2.5.22"
val specs2Version = "4.0.2"
val dockerTestkitVersion = "0.9.8"
val scalaTestVersion = "3.0.4"
val playVersion = "2.7.1" // test only
val playWsVersion = "2.0.7"
val playJsonVersion = "2.7.4"
val akkaVersion = "2.5.23"
val specs2Version = "4.8.1"
val dockerTestkitVersion = "0.10.0-beta8"
val scalaTestVersion = "3.0.8"
val playVersion = "2.7.3" // test only

val scala2_11 = "2.11.12"
val scala2_12 = "2.12.8"
val scala2_12 = "2.12.10"
val scala2_13 = "2.13.1"

scalaVersion := scala2_12
crossScalaVersions := Seq(scala2_11, scala2_12)
scalaVersion := scala2_13
crossScalaVersions := Seq(scala2_12, scala2_13)

releaseCrossBuild := true

Expand All @@ -27,68 +27,64 @@ val exclusions = Seq(
"netty-handler",
"netty-transport-native-epoll",
"netty-codec-socks",
"netty-codec-http").map(name => ExclusionRule(organization = "io.netty", name = name))
"netty-codec-http"
).map(name => ExclusionRule(organization = "io.netty", name = name))

lazy val root = (project in file("."))
.settings(
name := "kairosdb-scala",

fork in Test := true,
parallelExecution in IntegrationTest := false,

// Be wary of adding extra dependencies (especially the Waylay common dependencies)
// They may pull in a newer Netty version, breaking play-ws
libraryDependencies ++= Seq(
"org.scala-lang.modules" %% "scala-collection-compat" % "2.1.2",
"com.typesafe.play" %% "play-json" % playJsonVersion,
"com.typesafe.play" %% "play-ws-standalone" % playWsVersion,
"com.typesafe.play" %% "play-ws-standalone-json" % playWsVersion,
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.0",
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.2",
"com.typesafe.akka" %% "akka-actor" % akkaVersion,


"io.lemonlabs" %% "scala-uri" % "0.4.16",

"io.lemonlabs" %% "scala-uri" % "1.5.1",
// TEST
"org.specs2" %% "specs2-core" % specs2Version % Test,
"org.specs2" %% "specs2-junit" % specs2Version % Test,
"de.leanovate.play-mockws" %% "play-mockws" % "2.6.2" % Test,
"com.typesafe.play" %% "play-ahc-ws" % playVersion % TestAndIntegrationTest, // neede for play-mockws
"de.leanovate.play-mockws" %% "play-mockws" % "2.7.1" % Test,
"com.typesafe.play" %% "play-ahc-ws" % playVersion % TestAndIntegrationTest, // neede for play-mockws
"com.typesafe.play" %% "play-test" % playVersion % TestAndIntegrationTest, // play-mockws depends on some types in this dependency
"com.typesafe.play" %% "play-ahc-ws-standalone" % playWsVersion % TestAndIntegrationTest,

// INTEGRATION TESTS
// TODO investigate if we can do this with specs2
"org.scalatest" %% "scalatest" % scalaTestVersion % TestAndIntegrationTest,
"com.whisk" %% "docker-testkit-scalatest" % dockerTestkitVersion % TestAndIntegrationTest excludeAll(exclusions:_*),
"com.whisk" %% "docker-testkit-impl-spotify" % dockerTestkitVersion % TestAndIntegrationTest excludeAll(exclusions:_*)
"com.whisk" %% "docker-testkit-scalatest" % dockerTestkitVersion % TestAndIntegrationTest excludeAll (exclusions: _*)
),
scalacOptions ++= Seq(
"-feature",
"-deprecation",
"-unchecked",
"-encoding", "UTF-8", // yes, this is 2 args
"-encoding",
"UTF-8", // yes, this is 2 args
"-language:existentials",
"-language:higherKinds",
"-language:implicitConversions",
"-unchecked",
"-Xlint",
"-Yno-adapted-args",
"-Ywarn-dead-code",
"-Xfuture"
"-Ywarn-dead-code"
)
)
.configs(IntegrationTest).settings(Defaults.itSettings: _*)

.configs(IntegrationTest)
.settings(Defaults.itSettings: _*)

enablePlugins(GhpagesPlugin)
enablePlugins(SiteScaladocPlugin)

val publishScalaDoc = (ref: ProjectRef) => ReleaseStep(
action = releaseStepTaskAggregated(ghpagesPushSite in ref) // publish scaladoc
val publishScalaDoc = (ref: ProjectRef) =>
ReleaseStep(
action = releaseStepTaskAggregated(ghpagesPushSite in ref) // publish scaladoc
)

val runIntegrationTest = (ref: ProjectRef) => ReleaseStep(
action = releaseStepTaskAggregated(test in IntegrationTest in ref)
val runIntegrationTest = (ref: ProjectRef) =>
ReleaseStep(
action = releaseStepTaskAggregated(test in IntegrationTest in ref)
)

releaseProcess := {
Expand Down Expand Up @@ -116,7 +112,7 @@ git.remoteRepo := "[email protected]:waylayio/kairosdb-scala.git"
lazy val examples = project
.dependsOn(root)
.settings(
scalaVersion := scala2_12,
scalaVersion := scala2_13,
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-ahc-ws-standalone" % playWsVersion
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,18 @@ import io.waylay.kairosdb.driver.models.QueryResponse.{ResponseQuery, Result, Ta
import io.waylay.kairosdb.driver.models.RangeAggregator.Align
import io.waylay.kairosdb.driver.models.{DataPoint, _}

import scala.concurrent.ExecutionContext.global
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
import scala.collection.immutable.Seq

class AddAndQueryDataPointsIntegrationSpec extends IntegrationSpec {

"Adding data points and then querying them" should "work for a single data point" in {
val instant = Instant.ofEpochSecond(1470837457L)
val start = Instant.ofEpochSecond(1470830000L)
val qm = QueryMetrics(Seq(Query("my.new.metric", QueryTag("aoeu" -> "snth"))), start)

val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val res = for {
port <- kairosPort
kairosDB = new KairosDB(wsClient, KairosDBConfig(port = port), global)
_ <- kairosDB.addDataPoint(DataPoint(MetricName("my.new.metric"), KNumber(555), instant, Seq(Tag("aoeu", "snth"))))
result <- kairosDB.queryMetrics(qm)
} yield {
Expand All @@ -46,9 +45,8 @@ class AddAndQueryDataPointsIntegrationSpec extends IntegrationSpec {
DataPoint(metric2, KNumber(333), instant.plusMillis(3), Seq(Tag("aoeu", "456")))
)

val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val res = for {
port <- kairosPort
kairosDB = new KairosDB(wsClient, KairosDBConfig(port = port), global)
_ <- kairosDB.addDataPoints(dps, gzip = true)
result <- kairosDB.queryMetrics(qm)
} yield {
Expand Down Expand Up @@ -92,9 +90,9 @@ class AddAndQueryDataPointsIntegrationSpec extends IntegrationSpec {
))
), TimeSpan(start, Some(end)))

val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)

val res = for {
port <- kairosPort
kairosDB = new KairosDB(wsClient, KairosDBConfig(port = port), global)
_ <- kairosDB.addDataPoint(datapoint)
_ <- kairosDB.addDataPoint(datapoint.copy(timestamp = secondPoint))
version <- kairosDB.version
Expand Down
33 changes: 16 additions & 17 deletions src/it/scala/integration/AuthSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package integration

import java.nio.file.Paths

import com.whisk.docker.VolumeMapping
import com.spotify.docker.client.messages.HostConfig
import io.waylay.kairosdb.driver.KairosDB
import io.waylay.kairosdb.driver.KairosDB.KairosDBResponseException
import io.waylay.kairosdb.driver.models._

import scala.concurrent.ExecutionContext.global
import scala.concurrent.ExecutionContext.Implicits.global
import scala.collection.immutable.Seq

class AuthSpec extends IntegrationSpec {

Expand All @@ -24,30 +25,28 @@ class AuthSpec extends IntegrationSpec {

// enabling auth by providing a properties file
override lazy val volumes = Seq(
VolumeMapping(Paths.get("src/it/resources/conf").toAbsolutePath.toString, "/opt/kairosdb/conf")
HostConfig.Bind
.from(Paths.get("src/it/resources/conf").toAbsolutePath.toString)
.to("/opt/kairosdb/conf")
.build()
)

"The health status" should " fail without auth" in {
val res = kairosPort.flatMap { kairosPort =>
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
kairosDB.healthStatus
}.failed.futureValue
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val res = kairosDB.healthStatus.failed.futureValue

res shouldBe an[KairosDBResponseException]
res should be(KairosDBResponseException(401, "Unauthorized", Seq.empty))
}

it should "succeed with auth" in {

val res = kairosPort.flatMap { kairosPort =>
val kairosConfig = KairosDBConfig(
port = kairosPort,
username = Some("test"),
password = Some("test")
)
val kairosDB = new KairosDB(wsClient, kairosConfig, global)
kairosDB.healthStatus
}.futureValue
val kairosConfig = KairosDBConfig(
port = kairosPort,
username = Some("test"),
password = Some("test")
)
val kairosDB = new KairosDB(wsClient, kairosConfig, global)
val res = kairosDB.healthStatus.futureValue

res should be(HealthStatusResults(Seq("JVM-Thread-Deadlock: OK", "Datastore-Query: OK")))
}
Expand Down
15 changes: 7 additions & 8 deletions src/it/scala/integration/DeleteDataPointIntegrationSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import io.waylay.kairosdb.driver.models.KairosQuery.QueryTag
import io.waylay.kairosdb.driver.models.QueryResponse.{ResponseQuery, Result}
import io.waylay.kairosdb.driver.models._

import scala.concurrent.ExecutionContext._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.collection.immutable.Seq

class DeleteDataPointIntegrationSpec extends IntegrationSpec {

Expand All @@ -18,14 +19,12 @@ class DeleteDataPointIntegrationSpec extends IntegrationSpec {
val start = Instant.ofEpochSecond(1470830000L)
val qm = QueryMetrics(Seq(Query("my.new.metric", QueryTag("aoeu" -> "snth"))), start)

val res = kairosPort.flatMap { kairosPort: Int =>
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)

kairosDB.addDataPoint(DataPoint(MetricName("my.new.metric"), KNumber(555), instant, Seq(Tag("aoeu", "snth")))) flatMap { _ =>
kairosDB.deleteDataPoints(qm)
} flatMap { _ =>
kairosDB.queryMetrics(qm)
}
val res = kairosDB.addDataPoint(DataPoint(MetricName("my.new.metric"), KNumber(555), instant, Seq(Tag("aoeu", "snth")))).flatMap{ _ =>
kairosDB.deleteDataPoints(qm)
}.flatMap { _ =>
kairosDB.queryMetrics(qm)
}.futureValue

res should be(QueryResponse.Response(Seq(ResponseQuery(0, Seq(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import io.waylay.kairosdb.driver.models.KairosQuery.QueryTag
import io.waylay.kairosdb.driver.models.QueryResponse.{ResponseQuery, Result, TagResult}
import io.waylay.kairosdb.driver.models._

import scala.concurrent.ExecutionContext._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.collection.immutable.Seq


class DeleteDataPointsByTagIntegrationSpec extends IntegrationSpec {
Expand All @@ -28,14 +29,12 @@ class DeleteDataPointsByTagIntegrationSpec extends IntegrationSpec {
DataPoint(MetricName("my.other.metric"), KNumber(555), instant.plusMillis(6), Seq(Tag("aoeu", "snth")))
)

val res = kairosPort.flatMap { kairosPort =>
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)

kairosDB.addDataPoints(dps) flatMap { _ =>
kairosDB.deleteDataPoints(delete)
} flatMap { _ =>
kairosDB.queryMetrics(qm)
}
val res = kairosDB.addDataPoints(dps).flatMap { _ =>
kairosDB.deleteDataPoints(delete)
}.flatMap { _ =>
kairosDB.queryMetrics(qm)
}.futureValue

res should be(QueryResponse.Response(Seq(ResponseQuery(3, Seq(
Expand Down
16 changes: 8 additions & 8 deletions src/it/scala/integration/DeleteMetricIntegrationSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ import io.waylay.kairosdb.driver.KairosDB
import io.waylay.kairosdb.driver.models.KairosCompatibleType.KNumber
import io.waylay.kairosdb.driver.models.{DataPoint, KairosDBConfig, MetricName, Tag}

import scala.concurrent.ExecutionContext.global
import scala.concurrent.ExecutionContext.Implicits.global

import scala.collection.immutable.Seq

class DeleteMetricIntegrationSpec extends IntegrationSpec {
"Deleting a metric name" should "after deleting a metric, all metrics should not contain the metric" in {
val res = kairosPort.flatMap { kairosPort =>
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
kairosDB.addDataPoint(DataPoint(MetricName("my.new.metric"), KNumber(555), tags = Seq(Tag("aoeu", "snth")))) flatMap { _ =>
kairosDB.deleteMetric(MetricName("my.new.metric"))
} flatMap { _ =>
kairosDB.listMetricNames
}
val kairosDB = new KairosDB(wsClient, KairosDBConfig(port = kairosPort), global)
val res = kairosDB.addDataPoint(DataPoint(MetricName("my.new.metric"), KNumber(555), tags = Seq(Tag("aoeu", "snth")))).flatMap{ _ =>
kairosDB.deleteMetric(MetricName("my.new.metric"))
}.flatMap{ _ =>
kairosDB.listMetricNames
}.futureValue

res should not contain MetricName("my.new.metric")
Expand Down
45 changes: 0 additions & 45 deletions src/it/scala/integration/DockerKairosDBService.scala

This file was deleted.

Loading

0 comments on commit 8666b1f

Please sign in to comment.