From bd1f299f82ec036d699f2cd04b88be3089d1326d Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sat, 18 Aug 2018 12:48:13 +0800 Subject: Robustify, speed up and scale up the websocket example tests --- example/websockets/app/test/src/ExampleTests.scala | 46 ++++++++++++---------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'example') diff --git a/example/websockets/app/test/src/ExampleTests.scala b/example/websockets/app/test/src/ExampleTests.scala index 969750c..896c051 100644 --- a/example/websockets/app/test/src/ExampleTests.scala +++ b/example/websockets/app/test/src/ExampleTests.scala @@ -1,5 +1,7 @@ package app +import java.util.concurrent.atomic.AtomicInteger + import org.asynchttpclient.ws.{WebSocket, WebSocketListener, WebSocketUpgradeHandler} import utest._ @@ -70,44 +72,48 @@ object ExampleTests extends TestSuite{ } } - 'Websockets1000 - test(Websockets){ host => + 'Websockets2000 - test(Websockets){ host => @volatile var out = List.empty[String] + val closed = new AtomicInteger(0) val client = org.asynchttpclient.Dsl.asyncHttpClient(); - val ws = Seq.fill(1000)(client.prepareGet("ws://localhost:8080/connect/haoyi") + val ws = Seq.fill(2000)(client.prepareGet("ws://localhost:8080/connect/haoyi") .execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener( new WebSocketListener() { - override def onTextFrame(payload: String, finalFragment: Boolean, rsv: Int) { - out = payload :: out + override def onTextFrame(payload: String, finalFragment: Boolean, rsv: Int) = { + ExampleTests.synchronized { + out = payload :: out + } } def onOpen(websocket: WebSocket) = () - def onClose(websocket: WebSocket, code: Int, reason: String) = () + def onClose(websocket: WebSocket, code: Int, reason: String) = { + closed.incrementAndGet() + } def onError(t: Throwable) = () }).build() ).get()) try{ - // 4. open websocket - // 5. send messages - ws.foreach{ w => - w.sendTextFrame("hello") - Thread.sleep(1) - } - ws.foreach { w => - w.sendTextFrame("world") - Thread.sleep(1) - } - ws.foreach { w => - w.sendTextFrame("") - Thread.sleep(1) - } - Thread.sleep(2000) + ws.foreach(_.sendTextFrame("hello")) + + Thread.sleep(1500) out.length ==> 2000 + ws.foreach(_.sendTextFrame("world")) + + Thread.sleep(1500) + out.length ==> 4000 + closed.get() ==> 0 + + ws.foreach(_.sendTextFrame("")) + + Thread.sleep(1500) + closed.get() ==> 2000 + }finally{ client.close() } -- cgit v1.2.3