pekko/akka-stream-tests/src/test/scala/akka/stream/scaladsl/SinkAsJavaStreamSpec.scala

74 lines
2.7 KiB
Scala
Raw Normal View History

/*
* Copyright (C) 2015-2019 Lightbend Inc. <https://www.lightbend.com>
2016-01-14 15:22:25 +01:00
*/
2016-01-14 15:22:25 +01:00
package akka.stream.scaladsl
import java.util.stream.Collectors
2016-07-27 13:29:23 +02:00
2016-01-14 15:22:25 +01:00
import akka.stream._
import akka.stream.impl.PhasedFusingActorMaterializer
import akka.stream.impl.StreamSupervisor
2019-09-05 16:08:37 +02:00
import akka.stream.impl.StreamSupervisor.Children
2016-01-14 15:22:25 +01:00
import akka.stream.testkit.Utils._
import akka.stream.testkit._
import akka.stream.testkit.scaladsl.StreamTestKit._
2016-01-14 15:22:25 +01:00
import akka.stream.testkit.scaladsl.TestSource
import akka.util.ByteString
class SinkAsJavaStreamSpec extends StreamSpec(UnboundedMailboxConfig) {
2016-01-14 15:22:25 +01:00
"Java Stream Sink" must {
"work in happy case" in {
val javaSource = Source(1 to 100).runWith(StreamConverters.asJavaStream())
javaSource.count() should ===(100L)
2016-01-14 15:22:25 +01:00
}
"fail if parent stream is failed" in {
val javaSource = Source(1 to 100).map(_ => throw TE("")).runWith(StreamConverters.asJavaStream())
2016-01-14 15:22:25 +01:00
a[TE] shouldBe thrownBy {
javaSource.findFirst()
}
}
"work with collector that is assigned to materialized value" in {
val javaSource = Source(1 to 100).map(_.toString).runWith(StreamConverters.asJavaStream())
javaSource.collect(Collectors.joining(", ")) should ===((1 to 100).mkString(", "))
}
"work with empty stream" in {
val javaSource = Source.empty.runWith(StreamConverters.asJavaStream())
javaSource.count() should ===(0L)
2016-01-14 15:22:25 +01:00
}
2018-06-15 18:16:58 +03:00
"work with endless stream" in assertAllStagesStopped {
2016-01-14 15:22:25 +01:00
val javaSource = Source.repeat(1).runWith(StreamConverters.asJavaStream())
javaSource.limit(10).count() should ===(10L)
2016-01-14 15:22:25 +01:00
javaSource.close()
}
2018-06-15 18:16:58 +03:00
"allow overriding the dispatcher using Attributes" in assertAllStagesStopped {
2019-09-05 16:08:37 +02:00
val probe = TestSource
.probe[ByteString]
.to(StreamConverters.asJavaStream().addAttributes(ActorAttributes.dispatcher("akka.actor.default-dispatcher")))
.run()
SystemMaterializer(system).materializer
.asInstanceOf[PhasedFusingActorMaterializer]
.supervisor
.tell(StreamSupervisor.GetChildren, testActor)
val ref = expectMsgType[Children].children.find(_.path.toString contains "asJavaStream").get
assertDispatcher(ref, "akka.actor.default-dispatcher")
probe.sendComplete()
}
2018-06-15 18:16:58 +03:00
"work in separate IO dispatcher" in assertAllStagesStopped {
2019-09-05 16:08:37 +02:00
val materializer = Materializer.create(system)
TestSource.probe[ByteString].runWith(StreamConverters.asJavaStream())(materializer)
materializer.asInstanceOf[PhasedFusingActorMaterializer].supervisor.tell(StreamSupervisor.GetChildren, testActor)
val ref = expectMsgType[Children].children.find(_.path.toString contains "asJavaStream").get
assertDispatcher(ref, ActorAttributes.IODispatcher.dispatcher)
2016-01-14 15:22:25 +01:00
}
}
}