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驱动时间线事件时间戳不对应的主要内容,如果未能解决你的问题,请参考以下文章