Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David Liu
2021-11-02 11:29:27 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a1092771493f30e217e327002d469e6ea806953d
a1092771
1 parent
5077822d
tests for signal client message flow
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
68 行增加
和
13 行删除
livekit-android-sdk/src/test/java/io/livekit/android/room/SignalClientTest.kt
livekit-android-sdk/src/test/java/io/livekit/android/room/SignalClientTest.kt
查看文件 @
a109277
...
...
@@ -4,15 +4,19 @@ import com.google.protobuf.util.JsonFormat
import io.livekit.android.util.toOkioByteString
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.async
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.runBlockingTest
import kotlinx.serialization.json.Json
import livekit.LivekitRtc
import okhttp3.*
import org.junit.After
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito
import org.mockito.kotlin.argThat
import org.webrtc.SessionDescription
@ExperimentalCoroutinesApi
class SignalClientTest {
...
...
@@ -22,6 +26,9 @@ class SignalClientTest {
lateinit var listener: SignalClient.Listener
lateinit var okHttpClient: OkHttpClient
lateinit var coroutineDispatcher: TestCoroutineDispatcher
lateinit var coroutineScope: TestCoroutineScope
class MockWebsocketFactory : WebSocket.Factory {
lateinit var ws: WebSocket
lateinit var request: Request
...
...
@@ -34,6 +41,8 @@ class SignalClientTest {
@Before
fun setup() {
coroutineDispatcher = TestCoroutineDispatcher()
coroutineScope = TestCoroutineScope(coroutineDispatcher)
wsFactory = MockWebsocketFactory()
okHttpClient = Mockito.mock(OkHttpClient::class.java)
client = SignalClient(
...
...
@@ -43,11 +52,17 @@ class SignalClientTest {
Json,
useJson = false,
okHttpClient = okHttpClient,
ioDispatcher = coroutineDispatcher
)
listener = Mockito.mock(SignalClient.Listener::class.java)
client.listener = listener
}
@After
fun tearDown() {
coroutineScope.cleanupTestCoroutines()
}
private fun createOpenResponse(request: Request): Response {
return Response.Builder()
.request(request)
...
...
@@ -59,13 +74,11 @@ class SignalClientTest {
@Test
fun joinAndResponse() {
val job = TestCoroutineScope().async {
client.join("http://www.example.com", "", null)
val job = coroutineScope.async {
client.join(EXAMPLE_URL, "", null)
}
client.onOpen(
wsFactory.ws,
createOpenResponse(wsFactory.request)
)
client.onOpen(wsFactory.ws, createOpenResponse(wsFactory.request))
client.onMessage(wsFactory.ws, JOIN.toOkioByteString())
runBlockingTest {
...
...
@@ -76,21 +89,55 @@ class SignalClientTest {
@Test
fun reconnect() {
val job = TestCoroutineScope().async {
client.reconnect("http://www.example.com", "")
val job = coroutineScope.async {
client.reconnect(EXAMPLE_URL, "")
}
client.onOpen(
wsFactory.ws,
createOpenResponse(wsFactory.request)
)
client.onOpen(wsFactory.ws, createOpenResponse(wsFactory.request))
runBlockingTest {
job.await()
}
}
@Test
fun listenerNotCalledUntilOnReady() {
val listener = Mockito.mock(SignalClient.Listener::class.java)
client.listener = listener
val job = coroutineScope.async {
client.join(EXAMPLE_URL, "", null)
}
client.onOpen(wsFactory.ws, createOpenResponse(wsFactory.request))
client.onMessage(wsFactory.ws, JOIN.toOkioByteString())
client.onMessage(wsFactory.ws, OFFER.toOkioByteString())
runBlockingTest { job.await() }
Mockito.verifyNoInteractions(listener)
}
@Test
fun listenerCalledAfterOnReady() {
val listener = Mockito.mock(SignalClient.Listener::class.java)
client.listener = listener
val job = coroutineScope.async {
client.join(EXAMPLE_URL, "", null)
}
client.onOpen(wsFactory.ws, createOpenResponse(wsFactory.request))
client.onMessage(wsFactory.ws, JOIN.toOkioByteString())
client.onMessage(wsFactory.ws, OFFER.toOkioByteString())
runBlockingTest { job.await() }
client.onReady()
Mockito.verify(listener)
.onOffer(argThat { type == SessionDescription.Type.OFFER && description == OFFER.offer.sdp })
}
// mock data
companion object {
private val EXAMPLE_URL = "http://www.example.com"
private
const
val EXAMPLE_URL = "http://www.example.com"
private val JOIN = with(LivekitRtc.SignalResponse.newBuilder()) {
join = with(joinBuilder) {
...
...
@@ -103,5 +150,13 @@ class SignalClientTest {
}
build()
}
private val OFFER = with(LivekitRtc.SignalResponse.newBuilder()) {
offer = with(offerBuilder) {
sdp = ""
type = "offer"
build()
}
build()
}
}
}
\ No newline at end of file
...
...
请
注册
或
登录
后发表评论