Skip to content

Commit ea4cbbf

Browse files
committed
Experiment: log error/success on teardown and look at private _outcome
1 parent 101fa0b commit ea4cbbf

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

framework/test_cases/base_testcase.py

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,33 @@
1414
"""Base test case used for xds test suites."""
1515
import inspect
1616
import traceback
17-
from typing import Optional, Union
18-
import unittest
17+
from typing import Optional, TypeVar, Union
18+
import unittest.case
1919

2020
from absl import logging
2121
from absl.testing import absltest
22+
from typing_extensions import override
23+
24+
# Aliases
25+
_OutcomeType: TypeVar = unittest.case._Outcome # noqa
2226

2327

2428
class BaseTestCase(absltest.TestCase):
25-
# @override
29+
@override
30+
def tearDown(self) -> None:
31+
if not (outcome := self._get_outcome()):
32+
return
33+
if outcome.success:
34+
logging.info(
35+
"----- PSM Test Case PASSED: %s -----\n", self.test_name
36+
)
37+
return
38+
39+
test_errors = [error for test, error in outcome.errors if test is self]
40+
logging.error("----- PSM Test Case FAILED: %s -----", self.test_name)
41+
self._log_test_errors(test_errors)
42+
43+
@override
2644
def run(self, result: Optional[unittest.TestResult] = None) -> None:
2745
super().run(result)
2846
# TODO(sergiitk): should this method be returning result? See
@@ -40,17 +58,18 @@ def run(self, result: Optional[unittest.TestResult] = None) -> None:
4058
)
4159
# Assume one test case will only have one status.
4260
if test_errors or test_failures:
43-
total_errors = len(test_errors) + len(test_failures)
44-
logging.error(
45-
"----- PSM Test Case FAILED: %s -----", self.test_name
46-
)
47-
self._log_test_errors(test_errors, is_unexpected=True)
48-
self._log_test_errors(test_failures)
49-
logging.info(
50-
"----- PSM Test Case %s Error Count: %s -----",
51-
self.test_name,
52-
total_errors,
53-
)
61+
pass
62+
# total_errors = len(test_errors) + len(test_failures)
63+
# logging.error(
64+
# "----- PSM Test Case FAILED: %s -----", self.test_name
65+
# )
66+
# self._log_test_errors(test_errors, is_unexpected=True)
67+
# self._log_test_errors(test_failures)
68+
# logging.info(
69+
# "----- PSM Test Case %s Error Count: %s -----",
70+
# self.test_name,
71+
# total_errors,
72+
# )
5473
elif test_unexpected_successes:
5574
logging.error(
5675
"----- PSM Test Case UNEXPECTEDLY SUCCEEDED: %s -----\n",
@@ -69,6 +88,9 @@ def run(self, result: Optional[unittest.TestResult] = None) -> None:
6988
self.test_name,
7089
)
7190

91+
def _get_outcome(self) -> Optional[_OutcomeType]:
92+
return getattr(self, "_outcome", None)
93+
7294
@property
7395
def test_name(self) -> str:
7496
"""Pretty test name (details in the description).

framework/xds_k8s_testcase.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,8 @@ def initKubernetesClientRunner(self, **kwargs) -> KubernetesClientRunner:
752752
raise NotImplementedError
753753

754754
def tearDown(self):
755+
super().tearDown()
756+
755757
logger.info("----- TestMethod %s teardown -----", self.test_name)
756758
logger.debug("Getting pods restart times")
757759
client_restarts: int = 0

tests/bootstrap_generator_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ def tearDownClass(cls):
123123
super().tearDownClass()
124124

125125
def tearDown(self):
126+
super().tearDown()
126127
logger.info("----- TestMethod %s teardown -----", self.test_name)
127128
retryer = retryers.constant_retryer(
128129
wait_fixed=_timedelta(seconds=10),
@@ -133,7 +134,6 @@ def tearDown(self):
133134
retryer(self._cleanup)
134135
except retryers.RetryError:
135136
logger.exception("Got error during teardown")
136-
super().tearDown()
137137

138138
def _cleanup(self):
139139
self.client_runner.cleanup(force=self.force_cleanup)
@@ -168,6 +168,7 @@ class BootstrapGeneratorServerTest(
168168
test_server: XdsTestServer
169169

170170
def tearDown(self):
171+
super().tearDown()
171172
logger.info("----- TestMethod %s teardown -----", self.test_name)
172173
retryer = retryers.constant_retryer(
173174
wait_fixed=_timedelta(seconds=10),
@@ -178,7 +179,6 @@ def tearDown(self):
178179
retryer(self._cleanup)
179180
except retryers.RetryError:
180181
logger.exception("Got error during teardown")
181-
super().tearDown()
182182

183183
def _cleanup(self):
184184
self.client_runner.cleanup(force=self.force_cleanup)

0 commit comments

Comments
 (0)