blob: 93794ccad3d008aac4d2ee3aa7ba63a3920d7ecf [file] [log] [blame]
Haiyang Pane33028c2024-10-25 20:03:581#!/usr/bin/env vpython3
2#
3# Copyright 2024 The Chromium Authors
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7import unittest
8
9from unittest import mock
10
11import test_runner
12
13
Haiyang Panbb722192025-03-25 23:17:0114class UploadTestScriptRecordsTest(unittest.TestCase):
Haiyang Pane33028c2024-10-25 20:03:5815
16 def setUp(self):
17 self.sink_client = mock.MagicMock()
18 self.exc_recorder = mock.MagicMock()
Haiyang Panbb722192025-03-25 23:17:0119 self.mm_recorder = mock.MagicMock()
Haiyang Pane33028c2024-10-25 20:03:5820
Haiyang Panbb722192025-03-25 23:17:0121 def testNoRecords(self):
Haiyang Pane33028c2024-10-25 20:03:5822 self.exc_recorder.size.return_value = 0
Haiyang Panbb722192025-03-25 23:17:0123 self.mm_recorder.size.return_value = 0
24 test_runner.UploadTestScriptRecords(self.sink_client, self.exc_recorder,
25 self.mm_recorder)
Haiyang Pane33028c2024-10-25 20:03:5826 self.exc_recorder.to_dict.assert_not_called()
Haiyang Panbb722192025-03-25 23:17:0127 self.mm_recorder.to_dict.assert_not_called()
Haiyang Pane33028c2024-10-25 20:03:5828 self.sink_client.UpdateInvocationExtendedProperties.assert_not_called()
29
30 def testUploadSuccess(self):
Haiyang Panbb722192025-03-25 23:17:0131 test_runner.UploadTestScriptRecords(self.sink_client, self.exc_recorder,
32 self.mm_recorder)
Haiyang Pane33028c2024-10-25 20:03:5833 self.exc_recorder.to_dict.assert_called_once()
Haiyang Panbb722192025-03-25 23:17:0134 self.mm_recorder.to_dict.assert_called_once()
Haiyang Pane33028c2024-10-25 20:03:5835 self.sink_client.UpdateInvocationExtendedProperties.assert_called_once()
36 self.exc_recorder.clear.assert_called_once()
Haiyang Panbb722192025-03-25 23:17:0137 self.mm_recorder.clear.assert_called_once()
Haiyang Pane33028c2024-10-25 20:03:5838
39 def testUploadSuccessWithClearStacktrace(self):
40 self.sink_client.UpdateInvocationExtendedProperties.side_effect = [
41 Exception("Error 1"), None
42 ]
Haiyang Panbb722192025-03-25 23:17:0143 test_runner.UploadTestScriptRecords(self.sink_client, self.exc_recorder,
44 self.mm_recorder)
Haiyang Pane33028c2024-10-25 20:03:5845 self.assertEqual(self.exc_recorder.to_dict.call_count, 2)
Haiyang Panbb722192025-03-25 23:17:0146 self.assertEqual(self.mm_recorder.to_dict.call_count, 2)
Haiyang Pane33028c2024-10-25 20:03:5847 self.assertEqual(
48 self.sink_client.UpdateInvocationExtendedProperties.call_count, 2)
49 self.exc_recorder.clear_stacktrace.assert_called_once()
50 self.exc_recorder.clear.assert_called_once()
Haiyang Panbb722192025-03-25 23:17:0151 self.mm_recorder.clear.assert_called_once()
Haiyang Pane33028c2024-10-25 20:03:5852
53 def testUploadSuccessWithClearRecords(self):
54 self.sink_client.UpdateInvocationExtendedProperties.side_effect = [
55 Exception("Error 1"), Exception("Error 2"), None
56 ]
Haiyang Panbb722192025-03-25 23:17:0157 test_runner.UploadTestScriptRecords(self.sink_client, self.exc_recorder,
58 self.mm_recorder)
Haiyang Pane33028c2024-10-25 20:03:5859 self.assertEqual(self.exc_recorder.to_dict.call_count, 3)
Haiyang Panbb722192025-03-25 23:17:0160 self.assertEqual(self.mm_recorder.to_dict.call_count, 3)
Haiyang Pane33028c2024-10-25 20:03:5861 self.assertEqual(
62 self.sink_client.UpdateInvocationExtendedProperties.call_count, 3)
63 self.exc_recorder.clear_stacktrace.assert_called_once()
64 self.assertEqual(self.exc_recorder.clear.call_count, 2)
65 self.exc_recorder.register.assert_called_once()
Haiyang Panbb722192025-03-25 23:17:0166 self.mm_recorder.clear.assert_called_once()
Haiyang Pane33028c2024-10-25 20:03:5867
68 def testUploadFailure(self):
69 self.sink_client.UpdateInvocationExtendedProperties.side_effect = (
70 Exception("Error"))
Haiyang Panbb722192025-03-25 23:17:0171 test_runner.UploadTestScriptRecords(self.sink_client, self.exc_recorder,
72 self.mm_recorder)
Haiyang Pane33028c2024-10-25 20:03:5873 self.assertEqual(self.exc_recorder.to_dict.call_count, 3)
Haiyang Panbb722192025-03-25 23:17:0174 self.assertEqual(self.mm_recorder.to_dict.call_count, 3)
Haiyang Pane33028c2024-10-25 20:03:5875 self.assertEqual(
76 self.sink_client.UpdateInvocationExtendedProperties.call_count, 3)
77 self.assertEqual(self.exc_recorder.clear.call_count, 2)
78 self.exc_recorder.clear_stacktrace.assert_called_once()
79 self.exc_recorder.register.assert_called_once()
Haiyang Panbb722192025-03-25 23:17:0180 self.mm_recorder.clear.assert_called_once()
Ben Joyce0184a582025-05-14 22:56:3581
82
83if __name__ == '__main__':
84 # Suppress logging messages.
85 unittest.main(buffer=True)