VmService时间戳与flutter驱动时间线事件时间戳不对应

Posted

技术标签:

【中文标题】VmService时间戳与flutter驱动时间线事件时间戳不对应【英文标题】:VmService timestamp does not correspond to the flutter driver timeline event timestamp 【发布时间】:2020-11-17 17:08:05 【问题描述】:

我在哪里进行飞镖测试

setUp() async 
  vm_service.VmService vms = await vmServiceConnectUri(vmUrl);
  vmsStartTime = (await vms.getVMTimelineMicros()).timestamp;
  await flutterDriver.startTracing()

tearDown() async 
  vmsEndTime = (await vms.getVMTimelineMicros()).timestamp;
  Timeline timeline = await driver.stopTracingAndDownloadTimeline();

每个测试运行大约 30 秒。出于某种原因,在测试之后我有类似的东西

vmsStartTime = 4323069605
vmsEndTime =   4323088753

在时间轴上的第一个事件 timestampMicros 是

"ts":                      4318344424

还有:

"timeOriginMicros": 4318344424,
"timeExtentMicros": 2080190

我使用 vmsStartTest 和 vmsEndTest 过滤掉与每个测试相关的事件,并且由于此类问题,我错过了时间线上与测试相关的所有事件。请帮助我了解为什么会发生这种情况以及如何处理?

【问题讨论】:

【参考方案1】:

目前使用traceAction 似乎可以得到最好的结果。所以我在测试期间所做的每一个动作都是traceAction 的主题。每个下一个traceAction 的时间线附加到全局时间线 json 对象(附加事件,持续时间计算为 customTimelineJson["timeExtentMicros"] = timeline.json["timeOriginMicros"] + timeline.json["timeExtentMicros"] - customTimelineJson["timeOriginMicros"]; 这有助于将大部分事件保留在时间线中。测试开始时间映射到时间线中第一个事件中第一个事件的timestampMicros。测试结束取自最后一个traceAction 的最后一个时间线中的最后一个事件。 timeOriginMicros 取自第一个 traceAction 时间线的第一个事件

【讨论】:

以上是关于VmService时间戳与flutter驱动时间线事件时间戳不对应的主要内容,如果未能解决你的问题,请参考以下文章

熊猫时间戳与日期时间的性能缓慢

转换时间戳与时间截取

unix时间戳与时间

时间戳与日期相互转换

Python将时间戳与输入时间进行比较

Python时间戳与日期的相互转化