davidliu

Add node failure as a debug menu option

@@ -27,7 +27,6 @@ import io.livekit.android.sample.service.ForegroundService @@ -27,7 +27,6 @@ import io.livekit.android.sample.service.ForegroundService
27 import io.livekit.android.util.flow 27 import io.livekit.android.util.flow
28 import kotlinx.coroutines.flow.* 28 import kotlinx.coroutines.flow.*
29 import kotlinx.coroutines.launch 29 import kotlinx.coroutines.launch
30 -import livekit.LivekitRtc  
31 30
32 class CallViewModel( 31 class CallViewModel(
33 val url: String, 32 val url: String,
@@ -280,11 +279,11 @@ class CallViewModel( @@ -280,11 +279,11 @@ class CallViewModel(
280 279
281 // Debug functions 280 // Debug functions
282 fun simulateMigration() { 281 fun simulateMigration() {
283 - room.sendSimulateScenario(  
284 - LivekitRtc.SimulateScenario.newBuilder()  
285 - .setMigration(true)  
286 - .build()  
287 - ) 282 + room.sendSimulateScenario(Room.SimulateScenario.MIGRATION)
  283 + }
  284 +
  285 + fun simulateNodeFailure() {
  286 + room.sendSimulateScenario(Room.SimulateScenario.NODE_FAILURE)
288 } 287 }
289 288
290 fun reconnect() { 289 fun reconnect() {
@@ -86,6 +86,7 @@ class CallActivity : AppCompatActivity() { @@ -86,6 +86,7 @@ class CallActivity : AppCompatActivity() {
86 onExitClick = { finish() }, 86 onExitClick = { finish() },
87 onSendMessage = { viewModel.sendData(it) }, 87 onSendMessage = { viewModel.sendData(it) },
88 onSimulateMigration = { viewModel.simulateMigration() }, 88 onSimulateMigration = { viewModel.simulateMigration() },
  89 + onSimulateNodeFailure = { viewModel.simulateNodeFailure() },
89 fullReconnect = { viewModel.reconnect() }, 90 fullReconnect = { viewModel.reconnect() },
90 ) 91 )
91 } 92 }
@@ -136,6 +137,7 @@ class CallActivity : AppCompatActivity() { @@ -136,6 +137,7 @@ class CallActivity : AppCompatActivity() {
136 onSnackbarDismiss: () -> Unit = {}, 137 onSnackbarDismiss: () -> Unit = {},
137 onSendMessage: (String) -> Unit = {}, 138 onSendMessage: (String) -> Unit = {},
138 onSimulateMigration: () -> Unit = {}, 139 onSimulateMigration: () -> Unit = {},
  140 + onSimulateNodeFailure: () -> Unit = {},
139 fullReconnect: () -> Unit = {}, 141 fullReconnect: () -> Unit = {},
140 ) { 142 ) {
141 AppTheme(darkTheme = true) { 143 AppTheme(darkTheme = true) {
@@ -403,6 +405,7 @@ class CallActivity : AppCompatActivity() { @@ -403,6 +405,7 @@ class CallActivity : AppCompatActivity() {
403 DebugMenuDialog( 405 DebugMenuDialog(
404 onDismissRequest = { showDebugDialog = false }, 406 onDismissRequest = { showDebugDialog = false },
405 simulateMigration = { onSimulateMigration() }, 407 simulateMigration = { onSimulateMigration() },
  408 + simulateNodeFailure = { onSimulateNodeFailure() },
406 fullReconnect = { fullReconnect() }, 409 fullReconnect = { fullReconnect() },
407 ) 410 )
408 } 411 }
@@ -19,6 +19,7 @@ fun DebugMenuDialog( @@ -19,6 +19,7 @@ fun DebugMenuDialog(
19 onDismissRequest: () -> Unit = {}, 19 onDismissRequest: () -> Unit = {},
20 simulateMigration: () -> Unit = {}, 20 simulateMigration: () -> Unit = {},
21 fullReconnect: () -> Unit = {}, 21 fullReconnect: () -> Unit = {},
  22 + simulateNodeFailure: () -> Unit = {},
22 ) { 23 ) {
23 Dialog(onDismissRequest = onDismissRequest) { 24 Dialog(onDismissRequest = onDismissRequest) {
24 Column( 25 Column(
@@ -38,6 +39,12 @@ fun DebugMenuDialog( @@ -38,6 +39,12 @@ fun DebugMenuDialog(
38 Text("Simulate Migration") 39 Text("Simulate Migration")
39 } 40 }
40 Button(onClick = { 41 Button(onClick = {
  42 + simulateNodeFailure()
  43 + onDismissRequest()
  44 + }) {
  45 + Text("Simulate Node Failure")
  46 + }
  47 + Button(onClick = {
41 fullReconnect() 48 fullReconnect()
42 onDismissRequest() 49 onDismissRequest()
43 }) { 50 }) {