Skip to content

Commit

Permalink
Housekeeping + Scala 3 Version (#698)
Browse files Browse the repository at this point in the history
* Housekeeping + Scala 3 Version

Updated Scala Versions:
2.12.16 -> 2.12.18
2.13.10 -> 2.13.11
3.2.1   -> 3.3.0

Updated 3rd Party Versions:
ZIO:     2.0.0      -> 2.0.15
zio-aws: 5.17.224.4 -> 6.20.83.2

Other:
- Test utilities consolidated to the new 'zio.sqs.testing' package.
- New command alias 'validate' added to run tests across all Scala cross versions.

* [PR Request] Remove dead code.
  • Loading branch information
scottweaver authored Jul 18, 2023
1 parent 3ad474c commit 4d049ed
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 52 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
fail-fast: false
matrix:
java: ['[email protected]', '[email protected]']
scala: ['2.12.16', '2.13.10', '3.2.1']
scala: ['2.12.18', '2.13.11', '3.3.0']
steps:
- name: Checkout current branch
uses: actions/[email protected]
Expand Down
9 changes: 5 additions & 4 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
val mainScala = "2.13.10"
val allScala = Seq("3.2.1", "2.13.10", "2.12.16")
val zioVersion = "2.0.0"
val zioAwsVersion = "5.17.224.4"
val mainScala = "2.13.11"
val allScala = Seq("3.3.0", "2.13.11", "2.12.18")
val zioVersion = "2.0.15"
val zioAwsVersion = "6.20.83.2"

inThisBuild(
List(
Expand Down Expand Up @@ -34,6 +34,7 @@ publishTo := sonatypePublishToBundle.value

addCommandAlias("fmt", "all scalafmtSbt scalafmt test:scalafmt")
addCommandAlias("check", "all scalafmtSbtCheck scalafmtCheck test:scalafmtCheck")
addCommandAlias("validate", "check" + allScala.map(v => s"++${v}! test").mkString(";", ";", ""))

lazy val root = project
.in(file("."))
Expand Down
10 changes: 0 additions & 10 deletions zio-sqs/src/test/scala/zio/sqs/Util.scala

This file was deleted.

19 changes: 8 additions & 11 deletions zio-sqs/src/test/scala/zio/sqs/ZioSqsSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@ package zio.sqs
import zio.aws.sqs.Sqs
import zio.aws.sqs.model.Message
import zio._
import zio.durationInt
import zio.sqs.ZioSqsMockServer._
import zio.sqs.producer.{ Producer, ProducerEvent }
import zio.sqs.serialization.Serializer
import zio.test.Assertion._
import zio.test._
import zio.test.{ Live, TestClock, TestEnvironment }
import zio.test.{ Live, TestEnvironment }
import testing._

object ZioSqsSpec extends ZIOSpecDefault {

def spec: Spec[TestEnvironment, Any] =
override def spec =
suite("ZioSqsSpec")(
test("send messages") {
val settings: SqsStreamSettings = SqsStreamSettings(stopWhenQueueEmpty = true)

for {
messages <- gen.runHead.someOrFailException
list <- ZIO.scoped(serverResource.flatMap(_ => sendAndGet(messages, settings)))
list <- ZIO.scoped(serverResource *> (sendAndGet(messages, settings)))

} yield assert(list.map(_.body.getOrElse("")))(equalTo(messages))
},
Expand All @@ -31,7 +31,7 @@ object ZioSqsSpec extends ZIOSpecDefault {
for {
messages <- gen.runHead.someOrFailException
list <- ZIO.scoped {
serverResource.flatMap { _ =>
serverResource *> {
for {
messageFromQueue <- sendAndGet(messages, settings)
list <- deleteAndGet(messageFromQueue, settings)
Expand All @@ -47,7 +47,7 @@ object ZioSqsSpec extends ZIOSpecDefault {
for {
messages <- gen.runHead.someOrFailException
list <- ZIO.scoped {
serverResource.flatMap { _ =>
serverResource *> {
for {
_ <- sendAndGet(messages, settings)
list <- get(settings)
Expand All @@ -56,17 +56,14 @@ object ZioSqsSpec extends ZIOSpecDefault {
}
} yield assert(list)(isEmpty)
}
).provideCustomLayerShared((zio.aws.netty.NettyHttpClient.default >>> zio.aws.core.config.AwsConfig.default >>> clientResource).orDie)
).provideSomeLayerShared[TestEnvironment]((zio.aws.netty.NettyHttpClient.default >>> zio.aws.core.config.AwsConfig.default >>> clientResource).orDie)

override def aspects: Chunk[TestAspect[Nothing, TestEnvironment, Nothing, Any]] =
Chunk(TestAspect.executionStrategy(ExecutionStrategy.Sequential))

private val queueName = "TestQueue"

val gen: Gen[Sized, Chunk[String]] = Util.chunkOfStringsN(10)

def withFastClock: ZIO[Live, Any, Long] =
Live.withLive(TestClock.adjust(1.seconds))(_.repeat[Live, Long](Schedule.spaced(10.millis)))
val gen: Gen[Sized, Chunk[String]] = chunkOfStringsN(10)

def sendAndGet(messages: Seq[String], settings: SqsStreamSettings): ZIO[Live with Sqs, Throwable, Chunk[Message.ReadOnly]] =
for {
Expand Down
46 changes: 20 additions & 26 deletions zio-sqs/src/test/scala/zio/sqs/producer/ProducerSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import zio.durationInt
import zio.sqs.ZioSqsMockServer._
import zio.sqs.producer.Producer.{ DefaultProducer, SqsRequest, SqsRequestEntry, SqsResponseErrorEntry }
import zio.sqs.serialization.Serializer
import zio.sqs.{ Util, Utils }
import zio.sqs.Utils
import zio.stream.{ ZSink, ZStream }
import zio.test.Assertion._
import zio.test._
import zio.test.{ Live, TestClock, TestEnvironment }
import zio.{ test => _, _ }
import zio.sqs.testing._

import scala.language.implicitConversions

Expand All @@ -25,7 +25,7 @@ object ProducerSpec extends ZIOSpecDefault {
implicit def sendMessageBatchResponseAsReadOnly(e: SendMessageBatchResponse): SendMessageBatchResponse.ReadOnly =
SendMessageBatchResponse.wrap(e.buildAwsValue())

def spec: Spec[TestEnvironment, Any] =
def spec =
suite("Producer")(
test("nextPower2 can be calculated") {
assert(Producer.nextPower2(0))(equalTo(0)) &&
Expand Down Expand Up @@ -193,9 +193,8 @@ object ProducerSpec extends ZIOSpecDefault {
val eventCount = settings.batchSize
ZIO.scoped {
for {
events <- Util.chunkOfStringsN(eventCount)
.sample
.map(_.get.value.map(ProducerEvent(_)))
events <- chunkOfStringsN(eventCount).sample
.map(_.value.map(ProducerEvent(_)))
.run(ZSink.head[Chunk[ProducerEvent[String]]])
.someOrFailException
retryQueue <- queueResource(16)
Expand Down Expand Up @@ -223,10 +222,8 @@ object ProducerSpec extends ZIOSpecDefault {
val eventCount = (settings.batchSize * 2) + 3

for {
events <- Util
.chunkOfStringsN(eventCount)
.sample
.map(_.get.value.map(ProducerEvent(_)))
events <- chunkOfStringsN(eventCount).sample
.map(_.value.map(ProducerEvent(_)))
.run(ZSink.head[Chunk[ProducerEvent[String]]])
.someOrFailException
results <- ZIO.scoped {
Expand Down Expand Up @@ -269,10 +266,8 @@ object ProducerSpec extends ZIOSpecDefault {
val eventCount = settings.batchSize

for {
events <- Util
.chunkOfStringsN(eventCount)
.sample
.map(_.get.value.map(ProducerEvent(_)))
events <- chunkOfStringsN(eventCount).sample
.map(_.value.map(ProducerEvent(_)))
.run(ZSink.head[Chunk[ProducerEvent[String]]])
.someOrFailException
results <- ZIO.scoped {
Expand Down Expand Up @@ -311,10 +306,8 @@ object ProducerSpec extends ZIOSpecDefault {
val eventCount = settings.batchSize * 2

for {
events <- Util
.chunkOfStringsN(eventCount)
.sample
.map(_.get.value.map(ProducerEvent(_)))
events <- chunkOfStringsN(eventCount).sample
.map(_.value.map(ProducerEvent(_)))
.run(ZSink.head[Chunk[ProducerEvent[String]]])
.someOrFailException
results <- ZIO.scoped {
Expand Down Expand Up @@ -352,10 +345,8 @@ object ProducerSpec extends ZIOSpecDefault {
val eventCount = settings.batchSize

for {
events <- Util
.chunkOfStringsN(eventCount)
.sample
.map(_.get.value.map(ProducerEvent(_)))
events <- chunkOfStringsN(eventCount).sample
.map(_.value.map(ProducerEvent(_)))
.run(ZSink.head[Chunk[ProducerEvent[String]]])
.someOrFailException
results <- ZIO.scoped {
Expand Down Expand Up @@ -620,17 +611,14 @@ object ProducerSpec extends ZIOSpecDefault {
errOrResults <- producer.produceBatch(events).either
} yield assert(errOrResults.isLeft)(isTrue)
}
).provideCustomLayerShared((zio.aws.netty.NettyHttpClient.default >>> zio.aws.core.config.AwsConfig.default >>> clientResource).orDie)
).provideSomeLayerShared[TestEnvironment]((zio.aws.netty.NettyHttpClient.default >>> zio.aws.core.config.AwsConfig.default >>> clientResource).orDie)

override def aspects: Chunk[TestAspect[Nothing, TestEnvironment, Nothing, Any]] =
Chunk(TestAspect.executionStrategy(ExecutionStrategy.Sequential))

def queueResource(capacity: Int): ZIO[Scope, Throwable, Queue[SqsRequestEntry[String]]] =
ZIO.acquireRelease(Queue.bounded[SqsRequestEntry[String]](capacity))(_.shutdown)

def withFastClock: ZIO[Live, Any, Long] =
Live.withLive(TestClock.adjust(1.seconds))(_.repeat[Live, Long](Schedule.spaced(10.millis)))

/**
* A client that fails all incoming messages in the batch with unrecoverable error.
*/
Expand Down Expand Up @@ -676,4 +664,10 @@ case class StubSqsService(api: SqsAsyncClient = null) extends Sqs {
???
override def changeMessageVisibility(request: model.ChangeMessageVisibilityRequest): IO[AwsError, Unit] = ???
override def withAspect[R](newAspect: aspects.AwsCallAspect[R], r: ZEnvironment[R]): Sqs = ???

override def cancelMessageMoveTask(request: CancelMessageMoveTaskRequest): IO[AwsError, CancelMessageMoveTaskResponse.ReadOnly] = ???

override def startMessageMoveTask(request: StartMessageMoveTaskRequest): IO[AwsError, StartMessageMoveTaskResponse.ReadOnly] = ???

override def listMessageMoveTasks(request: ListMessageMoveTasksRequest): IO[AwsError, ListMessageMoveTasksResponse.ReadOnly] = ???
}
13 changes: 13 additions & 0 deletions zio-sqs/src/test/scala/zio/sqs/testing/package.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package zio.sqs

import zio.test._
import zio._

package object testing {

val withFastClock =
Live.withLive(TestClock.adjust(1.seconds))(_.repeat(Schedule.spaced(10.millis)))

def chunkOfStringsN(n: Int): Gen[Sized, Chunk[String]] = Gen.chunkOfN(n)(Gen.string(Gen.printableChar))

}

0 comments on commit 4d049ed

Please sign in to comment.