48 lines
1.4 KiB
Scala
48 lines
1.4 KiB
Scala
/**
|
|
* Copyright (C) 2014-2016 Lightbend Inc. <http://www.lightbend.com>
|
|
*/
|
|
package akka.stream.tck
|
|
|
|
import java.nio.file.Files
|
|
import akka.actor.ActorSystem
|
|
import akka.event.Logging
|
|
import akka.stream.scaladsl.{ Sink, FileIO }
|
|
import akka.stream.testkit._
|
|
import akka.stream.testkit.Utils._
|
|
import akka.testkit.{ EventFilter, TestEvent }
|
|
import akka.util.ByteString
|
|
import org.reactivestreams.Publisher
|
|
import org.testng.annotations.{ AfterClass, BeforeClass }
|
|
import akka.testkit.AkkaSpec
|
|
|
|
class FilePublisherTest extends AkkaPublisherVerification[ByteString] {
|
|
|
|
val ChunkSize = 256
|
|
val Elements = 1000
|
|
|
|
@BeforeClass
|
|
override def createActorSystem(): Unit = {
|
|
_system = ActorSystem(Logging.simpleName(getClass), UnboundedMailboxConfig.withFallback(AkkaSpec.testConf))
|
|
_system.eventStream.publish(TestEvent.Mute(EventFilter[RuntimeException]("Test exception")))
|
|
}
|
|
|
|
val file = {
|
|
val f = Files.createTempFile("file-source-tck", ".tmp")
|
|
val chunk = "x" * ChunkSize
|
|
|
|
val fw = Files.newBufferedWriter(f)
|
|
for (i ← 1 to Elements) fw.append(chunk)
|
|
fw.close()
|
|
f
|
|
}
|
|
|
|
def createPublisher(elements: Long): Publisher[ByteString] =
|
|
FileIO.fromPath(file, chunkSize = 512)
|
|
.take(elements)
|
|
.runWith(Sink.asPublisher(false))
|
|
|
|
@AfterClass
|
|
def after() = Files.delete(file)
|
|
|
|
override def maxElementsFromPublisher(): Long = Elements
|
|
}
|