2015-04-16 02:24:01 +02:00
|
|
|
/**
|
2016-02-23 12:58:39 +01:00
|
|
|
* Copyright (C) 2014-2016 Lightbend Inc. <http://www.lightbend.com>
|
2015-04-16 02:24:01 +02:00
|
|
|
*/
|
|
|
|
|
package akka.stream.tck
|
|
|
|
|
|
2016-04-25 19:25:26 +10:00
|
|
|
import java.nio.file.Files
|
2015-04-16 02:24:01 +02:00
|
|
|
import akka.actor.ActorSystem
|
|
|
|
|
import akka.event.Logging
|
2016-04-25 19:25:26 +10:00
|
|
|
import akka.stream.scaladsl.{ Sink, FileIO }
|
2015-04-24 11:45:03 +03:00
|
|
|
import akka.stream.testkit._
|
|
|
|
|
import akka.stream.testkit.Utils._
|
2015-04-16 02:24:01 +02:00
|
|
|
import akka.testkit.{ EventFilter, TestEvent }
|
|
|
|
|
import akka.util.ByteString
|
|
|
|
|
import org.reactivestreams.Publisher
|
|
|
|
|
import org.testng.annotations.{ AfterClass, BeforeClass }
|
2016-02-25 14:27:45 +01:00
|
|
|
import akka.testkit.AkkaSpec
|
2015-04-16 02:24:01 +02:00
|
|
|
|
2015-11-14 22:42:22 +01:00
|
|
|
class FilePublisherTest extends AkkaPublisherVerification[ByteString] {
|
2015-04-16 02:24:01 +02:00
|
|
|
|
|
|
|
|
val ChunkSize = 256
|
|
|
|
|
val Elements = 1000
|
|
|
|
|
|
|
|
|
|
@BeforeClass
|
|
|
|
|
override def createActorSystem(): Unit = {
|
2015-04-24 11:45:03 +03:00
|
|
|
_system = ActorSystem(Logging.simpleName(getClass), UnboundedMailboxConfig.withFallback(AkkaSpec.testConf))
|
2015-04-16 02:24:01 +02:00
|
|
|
_system.eventStream.publish(TestEvent.Mute(EventFilter[RuntimeException]("Test exception")))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val file = {
|
2016-04-25 19:25:26 +10:00
|
|
|
val f = Files.createTempFile("file-source-tck", ".tmp")
|
2015-04-16 02:24:01 +02:00
|
|
|
val chunk = "x" * ChunkSize
|
2016-04-25 19:25:26 +10:00
|
|
|
|
|
|
|
|
val fw = Files.newBufferedWriter(f)
|
2015-04-16 02:24:01 +02:00
|
|
|
for (i ← 1 to Elements) fw.append(chunk)
|
|
|
|
|
fw.close()
|
|
|
|
|
f
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def createPublisher(elements: Long): Publisher[ByteString] =
|
2016-04-25 19:25:26 +10:00
|
|
|
FileIO.fromPath(file, chunkSize = 512)
|
2015-04-16 02:24:01 +02:00
|
|
|
.take(elements)
|
2015-12-17 11:48:30 +02:00
|
|
|
.runWith(Sink.asPublisher(false))
|
2015-04-16 02:24:01 +02:00
|
|
|
|
|
|
|
|
@AfterClass
|
2016-04-25 19:25:26 +10:00
|
|
|
def after() = Files.delete(file)
|
2015-04-16 02:24:01 +02:00
|
|
|
|
|
|
|
|
override def maxElementsFromPublisher(): Long = Elements
|
|
|
|
|
}
|