latency_info_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
12385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 22385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// Use of this source code is governed by a BSD-style license that can be 32385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// found in the LICENSE file. 42385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/latency_info.h" 62385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 72385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 82385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 92385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochnamespace ui { 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, AddTwoSeparateEvent) { 122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1, 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 5, 222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(1000), 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2, 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 2u); 272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, &component)); 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, &component)); 342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 1); 352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 1u); 362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 100); 372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 5); 402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 2u); 412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 1000); 422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, AddTwoSameEvent) { 452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 30, 492385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2, 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 13, 552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(200), 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 3, 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 1u); 602385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 612385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, &component)); 672385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 30); 682385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 5u); 692385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), (100 * 2 + 200 * 3) / 5); 702385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 712385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 722385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, MergeTwoSeparateEvent) { 732385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info1; 742385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info2; 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info1.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 762385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 772385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1, 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info2.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 822385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 832385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 5, 842385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(1000), 854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2, 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 872385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info1.MergeWith(info2); 882385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 892385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info1.latency_components.size(), 2u); 902385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 912385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 922385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info1.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_FALSE(info1.FindLatency( 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, &component)); 954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(info1.FindLatency( 964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, &component)); 972385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 1); 982385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 1u); 992385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 100); 1002385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 1012385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 1022385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 5); 1032385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 2u); 1042385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 1000); 1052385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1062385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1072385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, MergeTwoSameEvent) { 1082385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info1; 1092385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info2; 1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info1.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 1122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 30, 1132385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2, 1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info2.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 1182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 13, 1192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(200), 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 3, 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 1222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info1.MergeWith(info2); 1232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info1.latency_components.size(), 1u); 1252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 1262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 1272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info1.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 1282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 1302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, &component)); 1322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 30); 1332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 5u); 1342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), (100 * 2 + 200 * 3) / 5); 1352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, ClearEvents) { 1382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 1412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 30, 1422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 1434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2, 1444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true); 1452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 1u); 1472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.Clear(); 1482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 0u); 1492385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} // namespace ui 152