1#!/usr/bin/env python3 2# Copyright (C) 2021 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16# Discarded events that do not get to GPU are invisible for UMA metric and 17# therefore should be excluded in trace-based metric. This tests ensures that's 18# the case. 19 20from os import sys 21 22import synth_common 23 24from synth_common import ms_to_ns 25trace = synth_common.create_trace() 26 27from chrome_scroll_helper import ChromeScrollHelper 28 29helper = ChromeScrollHelper(trace, start_id=1234, start_gesture_id=5678) 30 31helper.begin(from_ms=0, dur_ms=10) 32helper.update(from_ms=15, dur_ms=10) 33# The next update should be recognized as janky 34helper.update(from_ms=30, dur_ms=30) 35helper.end(from_ms=70, dur_ms=10) 36 37helper.begin(from_ms=100, dur_ms=10) 38helper.update(from_ms=115, dur_ms=10) 39# The next update doesn't get to GPU, therefore would not be a part of jank 40# calculation 41helper.update(from_ms=130, dur_ms=30, gets_to_gpu=False) 42helper.end(from_ms=170, dur_ms=10) 43 44sys.stdout.buffer.write(trace.trace.SerializeToString()) 45