[MAP] 高精地图Marker绘制逻辑重构

This commit is contained in:
renwj
2023-05-08 14:46:29 +08:00
parent eecea49493
commit 22cf999031
97 changed files with 3615 additions and 6757 deletions

View File

@@ -1,148 +1,148 @@
package com.mogo.functions.test
import androidx.test.core.app.ActivityScenario
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.ui.MoGoHmiProvider
import com.mogo.eagle.core.function.main.MainLauncherActivity
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import record_cache.RecordPanelOuterClass
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.random.Random
@RunWith(AndroidJUnit4::class)
@LargeTest
class AutoPilotBadCaseTest {
private lateinit var launch: ActivityScenario<MainLauncherActivity>
@Before
fun launch() {
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
}
@ExperimentalCoroutinesApi
@Test
fun showBadCaseEntrance1(): Unit = runBlocking(Dispatchers.Main) {
ensureMoGoHmiFragmentShow()
delay(TimeUnit.MILLISECONDS.toSeconds(30))
var index = 0
(1 until 50)
.map { it }
.asFlow()
.onEach {
delay(TimeUnit.SECONDS.toMillis(5))
val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
builder.also {
it.diskFree = (100 + index).toLong()
it.duration = 60.0.toFloat()
it.filename = "/user/general/record_$index.log"
it.id = 10 + index
it.key = index.toLong()
it.stat = 100
it.type = 1
it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
index++
}
// CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
}
.flowOn(Dispatchers.Default)
.collect()
delay(TimeUnit.HOURS.toMillis(2))
}
@ExperimentalCoroutinesApi
@Test
fun showBadCaseEntrance2(): Unit = runBlocking(Dispatchers.Main) {
ensureMoGoHmiFragmentShow()
var index = 0
(1 until 50)
.map { it }
.asFlow()
.onEach {
if (index in 1..4) {
delay(TimeUnit.SECONDS.toMillis(15))
} else {
delay(Random(20).nextLong())
}
val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
builder.also {
it.diskFree = (100 + index).toLong()
it.duration = 60.0.toFloat()
it.filename = "/user/general/record_$index.log"
it.id = 10 + index
it.key = index.toLong()
it.stat = 100
it.type = 1
it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
index++
}
// CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
}
.flowOn(Dispatchers.Default)
.collect()
delay(TimeUnit.HOURS.toMillis(2))
}
@ExperimentalCoroutinesApi
@Test
fun showBadCaseEntrance3(): Unit = runBlocking(Dispatchers.Main) {
var index = 0
(1 until 50)
.map { it }
.asFlow()
.onEach {
delay(TimeUnit.SECONDS.toMillis(20))
val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
builder.also {
it.diskFree = (100 + index).toLong()
it.duration = 60.0.toFloat()
it.filename = "/user/general/record_$index.log"
it.id = 10 + index
it.key = index.toLong()
it.stat = 100
it.type = 1
it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
index++
}
// CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
}
.flowOn(Dispatchers.Default)
.collect()
delay(TimeUnit.HOURS.toMillis(2))
}
private suspend fun ensureMoGoHmiFragmentShow(): MoGoHmiProvider = suspendCancellableCoroutine {
launch.onActivity { itx ->
val executor = Executors.newSingleThreadScheduledExecutor()
executor.scheduleAtFixedRate({
var find =
itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
while (find == null) {
find =
itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
}
while (!find.isResumed) {
Thread.sleep(500)
}
it.resumeWith(Result.success(find))
try {
Thread.sleep(500)
executor.shutdownNow()
} catch (e: Throwable) {
e.printStackTrace()
}
}, 50, 500, TimeUnit.MILLISECONDS)
}
}
}
//package com.mogo.functions.test
//
//import androidx.test.core.app.ActivityScenario
//import androidx.test.ext.junit.runners.AndroidJUnit4
//import androidx.test.filters.LargeTest
//import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
//import com.mogo.eagle.core.function.hmi.ui.MoGoHmiProvider
//import com.mogo.eagle.core.function.main.MainLauncherActivity
//import kotlinx.coroutines.*
//import kotlinx.coroutines.flow.*
//import org.junit.Before
//import org.junit.Test
//import org.junit.runner.RunWith
//import record_cache.RecordPanelOuterClass
//import java.text.SimpleDateFormat
//import java.util.*
//import java.util.concurrent.Executors
//import java.util.concurrent.TimeUnit
//import kotlin.random.Random
//
//@RunWith(AndroidJUnit4::class)
//@LargeTest
//class AutoPilotBadCaseTest {
//
// private lateinit var launch: ActivityScenario<MainLauncherActivity>
//
// @Before
// fun launch() {
// launch = ActivityScenario.launch(MainLauncherActivity::class.java)
// }
//
// @ExperimentalCoroutinesApi
// @Test
// fun showBadCaseEntrance1(): Unit = runBlocking(Dispatchers.Main) {
// ensureMoGoHmiFragmentShow()
// delay(TimeUnit.MILLISECONDS.toSeconds(30))
// var index = 0
// (1 until 50)
// .map { it }
// .asFlow()
// .onEach {
// delay(TimeUnit.SECONDS.toMillis(5))
// val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
// builder.also {
// it.diskFree = (100 + index).toLong()
// it.duration = 60.0.toFloat()
// it.filename = "/user/general/record_$index.log"
// it.id = 10 + index
// it.key = index.toLong()
// it.stat = 100
// it.type = 1
// it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
// index++
// }
// // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
// }
// .flowOn(Dispatchers.Default)
// .collect()
// delay(TimeUnit.HOURS.toMillis(2))
// }
//
//
// @ExperimentalCoroutinesApi
// @Test
// fun showBadCaseEntrance2(): Unit = runBlocking(Dispatchers.Main) {
// ensureMoGoHmiFragmentShow()
// var index = 0
// (1 until 50)
// .map { it }
// .asFlow()
// .onEach {
// if (index in 1..4) {
// delay(TimeUnit.SECONDS.toMillis(15))
// } else {
// delay(Random(20).nextLong())
// }
// val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
// builder.also {
// it.diskFree = (100 + index).toLong()
// it.duration = 60.0.toFloat()
// it.filename = "/user/general/record_$index.log"
// it.id = 10 + index
// it.key = index.toLong()
// it.stat = 100
// it.type = 1
// it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
// index++
// }
// // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
// }
// .flowOn(Dispatchers.Default)
// .collect()
// delay(TimeUnit.HOURS.toMillis(2))
// }
//
// @ExperimentalCoroutinesApi
// @Test
// fun showBadCaseEntrance3(): Unit = runBlocking(Dispatchers.Main) {
// var index = 0
// (1 until 50)
// .map { it }
// .asFlow()
// .onEach {
// delay(TimeUnit.SECONDS.toMillis(20))
// val builder = RecordPanelOuterClass.RecordPanel.newBuilder()
// builder.also {
// it.diskFree = (100 + index).toLong()
// it.duration = 60.0.toFloat()
// it.filename = "/user/general/record_$index.log"
// it.id = 10 + index
// it.key = index.toLong()
// it.stat = 100
// it.type = 1
// it.timestamp = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
// index++
// }
// // CallerDevaToolsManager.onReceiveBadCaseRecord(builder.build())
// }
// .flowOn(Dispatchers.Default)
// .collect()
// delay(TimeUnit.HOURS.toMillis(2))
// }
//
// private suspend fun ensureMoGoHmiFragmentShow(): MoGoHmiProvider = suspendCancellableCoroutine {
// launch.onActivity { itx ->
// val executor = Executors.newSingleThreadScheduledExecutor()
// executor.scheduleAtFixedRate({
// var find =
// itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
// while (find == null) {
// find =
// itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
//
// }
// while (!find.isResumed) {
// Thread.sleep(500)
// }
// it.resumeWith(Result.success(find))
// try {
// Thread.sleep(500)
// executor.shutdownNow()
// } catch (e: Throwable) {
// e.printStackTrace()
// }
// }, 50, 500, TimeUnit.MILLISECONDS)
// }
// }
//}