[V2X]道路施工(AI云)事件代码逻辑优化

This commit is contained in:
renwj
2022-08-29 16:39:32 +08:00
parent 39e9c14885
commit 08c752c849
5 changed files with 212 additions and 31 deletions

View File

@@ -0,0 +1,160 @@
package com.mogo.functions.test
import android.os.*
import androidx.test.core.app.*
import androidx.test.ext.junit.runners.*
import androidx.test.filters.*
import com.mogo.eagle.core.function.hmi.ui.*
import com.mogo.eagle.core.function.main.*
import com.mogo.eagle.core.function.v2x.events.*
import com.mogo.v2x.event.V2XEvent.RoadAI
import kotlinx.coroutines.*
import org.junit.*
import org.junit.runner.*
import roadwork.Road.*
import java.util.concurrent.*
import java.util.concurrent.TimeUnit.MILLISECONDS
import java.util.concurrent.TimeUnit.SECONDS
import kotlin.Result
@RunWith(AndroidJUnit4::class)
@LargeTest
class RoadAITest {
lateinit var launch: ActivityScenario<MainLauncherActivity>
@Before
fun before() {
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
}
@Test
fun test() = runBlocking(Dispatchers.Default) {
ensureMoGoHmiFragmentShow()
val nanos = System.nanoTime()
val child =
RW_PB
.newBuilder()
.setHeader(
Header
.newBuilder()
.setFrameId("rw")
.setModuleName("ai_cloud")
.setStamp(Time.newBuilder()
.setSec(TimeUnit.NANOSECONDS.convert(nanos, SECONDS).toInt())
.setNsec(180000000)
.build())
.build())
.setRoadwork(
Roadwork_PB
.newBuilder()
.setId("4e47e17d-4950-4c80-9b02-29a450e54b50")
.setScore(95)
.setDetectTime(nanos)
.setPoiType(100061)
.setType(1006)
.setCenter(
Center_PB
.newBuilder()
.setRoad(Road_PB
.newBuilder()
.setRoadId("200091")
.setLaneNo("-2")
.setTileId("556834853")
.setBearing(156)
.build())
.setPoint(GPSPoint_PB
.newBuilder()
.setLat(26.819533419884188)
.setLon(112.57506466334905)
.build())
.build())
.addPolygon(0, GPSPoint_PB
.newBuilder()
.setLat(26.819544927961125)
.setLon(112.57503948748804)
.build())
.addPolygon(1, GPSPoint_PB
.newBuilder()
.setLat(26.81953162903423)
.setLon(112.57503758421541)
.build())
.addPolygon(2, GPSPoint_PB
.newBuilder()
.setLat(26.81952255026517)
.setLon(112.5750496963295)
.build())
.addPolygon(3, GPSPoint_PB
.newBuilder()
.setLat(26.819517691652617)
.setLon(112.57507582382465)
.build())
.addPolygon(4, GPSPoint_PB
.newBuilder()
.setLat(26.819521911807858)
.setLon(112.57508983920647)
.build())
.addPolygon(5, GPSPoint_PB
.newBuilder()
.setLat(26.819535210732194)
.setLon(112.57509174248064)
.build())
.addPolygon(6, GPSPoint_PB
.newBuilder()
.setLat(26.81954428950259)
.setLon(112.5750796303722)
.build())
.addPolygon(7, GPSPoint_PB
.newBuilder()
.setLat(26.819549148117684)
.setLon(112.57505350287552)
.build())
.addRoad(0, Road_PB
.newBuilder()
.setRoadId("200090")
.setLaneNo("-2")
.setTileId("556834853")
.setBearing(154)
.build())
.addRoad(1, Road_PB
.newBuilder()
.setRoadId("200091")
.setLaneNo("-2")
.setTileId("556834853")
.setBearing(156)
.build())
.build())
.build()
val event = RoadAI(data = child)
while (true) {
delay(1000)
V2XEventManager.onAck(event)
}
}
private suspend fun ensureMoGoHmiFragmentShow(): MoGoHmiFragment = suspendCancellableCoroutine {
launch.onActivity { itx ->
val executor = Executors.newSingleThreadScheduledExecutor()
executor.scheduleAtFixedRate({
var find =
itx.supportFragmentManager.fragments.find { it is MoGoHmiFragment } as? MoGoHmiFragment
while (find == null) {
find =
itx.supportFragmentManager.fragments.find { it is MoGoHmiFragment } as? MoGoHmiFragment
}
while (!find.isResumed) {
Thread.sleep(500)
}
it.resumeWith(Result.success(find))
try {
Thread.sleep(500)
executor.shutdownNow()
} catch (e: Throwable) {
e.printStackTrace()
}
}, 50, 500, MILLISECONDS)
}
}
}