summaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-08-18 12:48:13 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-08-18 13:12:32 +0800
commitbd1f299f82ec036d699f2cd04b88be3089d1326d (patch)
tree4ebe6efce00b1ee2d3194a8da561ca9f38f4776d /example
parent907695586cf144a63b59c26f76bad53907a7fb38 (diff)
downloadcask-bd1f299f82ec036d699f2cd04b88be3089d1326d.tar.gz
cask-bd1f299f82ec036d699f2cd04b88be3089d1326d.tar.bz2
cask-bd1f299f82ec036d699f2cd04b88be3089d1326d.zip
Robustify, speed up and scale up the websocket example tests
Diffstat (limited to 'example')
-rw-r--r--example/websockets/app/test/src/ExampleTests.scala46
1 files changed, 26 insertions, 20 deletions
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()
}