1
1
#include " common/common/assert.h"
2
2
3
3
#include " test/test_common/logging.h"
4
+ #include " test/test_common/utility.h"
4
5
5
6
#include " gtest/gtest.h"
6
7
@@ -47,16 +48,18 @@ TEST(EnvoyBugDeathTest, VariousLogs) {
47
48
auto envoy_bug_action_registration =
48
49
Assert::setEnvoyBugFailureRecordAction ([&]() { envoy_bug_fail_count++; });
49
50
50
- #ifndef NDEBUG
51
- EXPECT_DEATH ({ ENVOY_BUG (false , " " ); }, " .*envoy bug failure: false.*" );
52
- EXPECT_DEATH ({ ENVOY_BUG (false , " " ); }, " .*envoy bug failure: false.*" );
53
- EXPECT_DEATH ({ ENVOY_BUG (false , " With some logs" ); },
54
- " .*envoy bug failure: false. Details: With some logs.*" );
55
- EXPECT_EQ (0 , envoy_bug_fail_count);
56
- #else
57
- // Same log lines trigger exponential back-off.
51
+ EXPECT_ENVOY_BUG ({ ENVOY_BUG (false , " " ); }, " envoy bug failure: false." );
52
+ EXPECT_ENVOY_BUG ({ ENVOY_BUG (false , " " ); }, " envoy bug failure: false." );
53
+ EXPECT_ENVOY_BUG ({ ENVOY_BUG (false , " With some logs" ); },
54
+ " envoy bug failure: false. Details: With some logs" );
55
+
56
+ #ifdef NDEBUG
57
+ EXPECT_EQ (3 , envoy_bug_fail_count);
58
+ // Reset envoy bug count to simplify testing exponential back-off below.
59
+ envoy_bug_fail_count = 0 ;
60
+ // In release mode, same log lines trigger exponential back-off.
58
61
for (int i = 0 ; i < 4 ; i++) {
59
- ENVOY_BUG (false , " " );
62
+ ENVOY_BUG (false , " placeholder ENVOY_BUG " );
60
63
}
61
64
// 3 counts because 1st, 2nd, and 4th instances are powers of 2.
62
65
EXPECT_EQ (3 , envoy_bug_fail_count);
@@ -69,4 +72,13 @@ TEST(EnvoyBugDeathTest, VariousLogs) {
69
72
#endif
70
73
}
71
74
75
+ TEST (EnvoyBugDeathTest, TestResetCounters) {
76
+ // The callEnvoyBug counter has already been called in assert2_test.cc.
77
+ // ENVOY_BUG only log and increment stats on power of two cases. Ensure that counters are reset
78
+ // between tests by checking that two consecutive calls trigger the expectation.
79
+ for (int i = 0 ; i < 2 ; i++) {
80
+ EXPECT_ENVOY_BUG (TestEnvoyBug::callEnvoyBug (), " envoy bug failure: false." );
81
+ }
82
+ }
83
+
72
84
} // namespace Envoy
0 commit comments