[AndroidTest]添加RxJava背压测试
This commit is contained in:
@@ -206,48 +206,48 @@ class ReminderTest {
|
||||
|
||||
@Test
|
||||
fun testWarningFloatForProject() = runBlocking {
|
||||
launch.onActivity {
|
||||
it.lifecycleScope.launchWhenResumed {
|
||||
for (i in 1..10) {
|
||||
val notificationView = V2XNotificationView(it)
|
||||
notificationView.setWarningIcon(EventTypeEnum.getWarningIcon("10003"))
|
||||
notificationView.setWarningContent("XXXXXX${i}")
|
||||
WarningFloat.with(it)
|
||||
.setTag("tag")
|
||||
.setLayout(notificationView)
|
||||
.setSidePattern(SidePattern.RESULT_TOP)
|
||||
.setCountDownTime(5000)
|
||||
.setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
|
||||
.setImmersionStatusBar(true)
|
||||
.addWarningStatusListener(object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
}
|
||||
})
|
||||
.setAnimator(object : DefaultAnimator() {
|
||||
override fun enterAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.enterAnim(view, params, windowManager, sidePattern)?.apply {
|
||||
interpolator = OvershootInterpolator()
|
||||
}
|
||||
|
||||
override fun exitAnim(
|
||||
view: View,
|
||||
params: WindowManager.LayoutParams,
|
||||
windowManager: WindowManager,
|
||||
sidePattern: SidePattern
|
||||
): Animator? =
|
||||
super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200)
|
||||
})
|
||||
.show()
|
||||
delay(2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
delay(TimeUnit.SECONDS.toMillis(100))
|
||||
// launch.onActivity {
|
||||
// it.lifecycleScope.launchWhenResumed {
|
||||
// for (i in 1..10) {
|
||||
// val notificationView = V2XNotificationView(it)
|
||||
// notificationView.setWarningIcon(EventTypeEnum.getWarningIcon("10003"))
|
||||
// notificationView.setWarningContent("XXXXXX${i}")
|
||||
// WarningFloat.with(it)
|
||||
// .setTag("tag")
|
||||
// .setLayout(notificationView)
|
||||
// .setSidePattern(SidePattern.RESULT_TOP)
|
||||
// .setCountDownTime(5000)
|
||||
// .setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
|
||||
// .setImmersionStatusBar(true)
|
||||
// .addWarningStatusListener(object : IMoGoWarningStatusListener {
|
||||
// override fun onShow() {
|
||||
// }
|
||||
// })
|
||||
// .setAnimator(object : DefaultAnimator() {
|
||||
// override fun enterAnim(
|
||||
// view: View,
|
||||
// params: WindowManager.LayoutParams,
|
||||
// windowManager: WindowManager,
|
||||
// sidePattern: SidePattern
|
||||
// ): Animator? =
|
||||
// super.enterAnim(view, params, windowManager, sidePattern)?.apply {
|
||||
// interpolator = OvershootInterpolator()
|
||||
// }
|
||||
//
|
||||
// override fun exitAnim(
|
||||
// view: View,
|
||||
// params: WindowManager.LayoutParams,
|
||||
// windowManager: WindowManager,
|
||||
// sidePattern: SidePattern
|
||||
// ): Animator? =
|
||||
// super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200)
|
||||
// })
|
||||
// .show()
|
||||
// delay(2000)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// delay(TimeUnit.SECONDS.toMillis(100))
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.mogo.functions.test
|
||||
|
||||
import android.os.Debug
|
||||
import android.util.Log
|
||||
import androidx.test.core.app.ActivityScenario
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.LargeTest
|
||||
import com.mogo.eagle.core.function.main.MainLauncherActivity
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.plugins.RxJavaPlugins
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.TimeUnit.MILLISECONDS
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@LargeTest
|
||||
class RxJavaBackPressureTest {
|
||||
|
||||
lateinit var launch: ActivityScenario<MainLauncherActivity>
|
||||
|
||||
@Before
|
||||
fun before() {
|
||||
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
|
||||
RxJavaPlugins.setErrorHandler {
|
||||
Log.e("RxJava2", it.message, it)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIntervalBackPressure() = runBlocking(Dispatchers.Default) {
|
||||
val subscription = Flowable.interval(50, MILLISECONDS).doOnNext {
|
||||
Log.d("RxJava2", "-- do action --")
|
||||
}.subscribeOn(Schedulers.computation()).observeOn(Schedulers.io()).subscribe {
|
||||
Thread.sleep(2000)
|
||||
}
|
||||
repeat(10) {
|
||||
delay(TimeUnit.SECONDS.toMillis(5))
|
||||
try {
|
||||
Debug.dumpHprofData(Date().toFileName())
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
}
|
||||
delay(TimeUnit.HOURS.toMillis(1))
|
||||
subscription.dispose()
|
||||
}
|
||||
|
||||
private fun Date.toFileName(): String = SimpleDateFormat("yyyyMMdd_HH_mm_ss", Locale.getDefault()).format(this) + ".hprof"
|
||||
}
|
||||
Reference in New Issue
Block a user