1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2023 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*7594170eSAndroid Build Coastguard Worker# 7*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Worker# limitations under the License. 14*7594170eSAndroid Build Coastguard Workerimport io 15*7594170eSAndroid Build Coastguard Workerimport textwrap 16*7594170eSAndroid Build Coastguard Workerimport unittest 17*7594170eSAndroid Build Coastguard Workerfrom typing import TextIO 18*7594170eSAndroid Build Coastguard Worker 19*7594170eSAndroid Build Coastguard Workerfrom pretty import Aggregation 20*7594170eSAndroid Build Coastguard Workerfrom pretty import summarize_helper 21*7594170eSAndroid Build Coastguard Worker 22*7594170eSAndroid Build Coastguard Worker 23*7594170eSAndroid Build Coastguard Workerclass PrettyTest(unittest.TestCase): 24*7594170eSAndroid Build Coastguard Worker metrics: TextIO 25*7594170eSAndroid Build Coastguard Worker 26*7594170eSAndroid Build Coastguard Worker def setUp(self) -> None: 27*7594170eSAndroid Build Coastguard Worker self.metrics = io.StringIO( 28*7594170eSAndroid Build Coastguard Worker textwrap.dedent( 29*7594170eSAndroid Build Coastguard Worker """\ 30*7594170eSAndroid Build Coastguard Worker build_result,build_type,description,targets,a,ab,ac 31*7594170eSAndroid Build Coastguard Worker SUCCESS,B1,WARMUP,nothing,1,10,1:00 32*7594170eSAndroid Build Coastguard Worker SUCCESS,B1,do it,something,10,200, 33*7594170eSAndroid Build Coastguard Worker SUCCESS,B1,rebuild-1,something,4,,1:04 34*7594170eSAndroid Build Coastguard Worker SUCCESS,B1,rebuild-2,something,6,55,1:07 35*7594170eSAndroid Build Coastguard Worker TEST_FAILURE,B2,do it,something,601,, 36*7594170eSAndroid Build Coastguard Worker TEST_FAILURE,B2,do it,nothing,3600,, 37*7594170eSAndroid Build Coastguard Worker TEST_FAILURE,B2,undo it,something,240,, 38*7594170eSAndroid Build Coastguard Worker FAILED,B3,,,70000,70000,7:00:00 39*7594170eSAndroid Build Coastguard Worker """ 40*7594170eSAndroid Build Coastguard Worker ) 41*7594170eSAndroid Build Coastguard Worker ) 42*7594170eSAndroid Build Coastguard Worker 43*7594170eSAndroid Build Coastguard Worker def test_summarize_single_prop(self): 44*7594170eSAndroid Build Coastguard Worker result = summarize_helper(self.metrics, "a$", Aggregation.MAX) 45*7594170eSAndroid Build Coastguard Worker self.assertEqual(len(result), 1) 46*7594170eSAndroid Build Coastguard Worker self.assertEqual( 47*7594170eSAndroid Build Coastguard Worker textwrap.dedent( 48*7594170eSAndroid Build Coastguard Worker """\ 49*7594170eSAndroid Build Coastguard Worker cuj,targets,B1,B2 50*7594170eSAndroid Build Coastguard Worker WARMUP,nothing,1, 51*7594170eSAndroid Build Coastguard Worker do it,something,10,601 52*7594170eSAndroid Build Coastguard Worker do it,nothing,,3600 53*7594170eSAndroid Build Coastguard Worker rebuild,something,6[N=2], 54*7594170eSAndroid Build Coastguard Worker undo it,something,,240 55*7594170eSAndroid Build Coastguard Worker """ 56*7594170eSAndroid Build Coastguard Worker ), 57*7594170eSAndroid Build Coastguard Worker result["a"], 58*7594170eSAndroid Build Coastguard Worker ) 59*7594170eSAndroid Build Coastguard Worker 60*7594170eSAndroid Build Coastguard Worker def test_summarize_multiple_props(self): 61*7594170eSAndroid Build Coastguard Worker result = summarize_helper(self.metrics, "a.$", Aggregation.MEDIAN) 62*7594170eSAndroid Build Coastguard Worker self.assertEqual(len(result), 2) 63*7594170eSAndroid Build Coastguard Worker self.assertEqual( 64*7594170eSAndroid Build Coastguard Worker textwrap.dedent( 65*7594170eSAndroid Build Coastguard Worker """\ 66*7594170eSAndroid Build Coastguard Worker cuj,targets,B1,B2 67*7594170eSAndroid Build Coastguard Worker WARMUP,nothing,10, 68*7594170eSAndroid Build Coastguard Worker do it,something,200, 69*7594170eSAndroid Build Coastguard Worker do it,nothing,, 70*7594170eSAndroid Build Coastguard Worker rebuild,something,55, 71*7594170eSAndroid Build Coastguard Worker undo it,something,, 72*7594170eSAndroid Build Coastguard Worker """ 73*7594170eSAndroid Build Coastguard Worker ), 74*7594170eSAndroid Build Coastguard Worker result["ab"], 75*7594170eSAndroid Build Coastguard Worker ) 76*7594170eSAndroid Build Coastguard Worker self.assertEqual( 77*7594170eSAndroid Build Coastguard Worker textwrap.dedent( 78*7594170eSAndroid Build Coastguard Worker """\ 79*7594170eSAndroid Build Coastguard Worker cuj,targets,B1,B2 80*7594170eSAndroid Build Coastguard Worker WARMUP,nothing,01:00, 81*7594170eSAndroid Build Coastguard Worker do it,something,, 82*7594170eSAndroid Build Coastguard Worker do it,nothing,, 83*7594170eSAndroid Build Coastguard Worker rebuild,something,01:06[N=2], 84*7594170eSAndroid Build Coastguard Worker undo it,something,, 85*7594170eSAndroid Build Coastguard Worker """ 86*7594170eSAndroid Build Coastguard Worker ), 87*7594170eSAndroid Build Coastguard Worker result["ac"], 88*7594170eSAndroid Build Coastguard Worker ) 89*7594170eSAndroid Build Coastguard Worker 90*7594170eSAndroid Build Coastguard Worker def test_summarize_loose_pattern(self): 91*7594170eSAndroid Build Coastguard Worker result = summarize_helper(self.metrics, "^a", Aggregation.MEDIAN) 92*7594170eSAndroid Build Coastguard Worker self.assertEqual(len(result), 3) 93*7594170eSAndroid Build Coastguard Worker 94*7594170eSAndroid Build Coastguard Worker 95*7594170eSAndroid Build Coastguard Workerif __name__ == "__main__": 96*7594170eSAndroid Build Coastguard Worker unittest.main() 97