iomgr/time_averaged_stats_test.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
21 #include <math.h>
22 
23 #include <grpc/support/log.h>
24 
26 
27 #define EXPECT_EQ(a, b) GPR_ASSERT((a) == (b))
28 #define EXPECT_DOUBLE_EQ(a, b) GPR_ASSERT(fabs((a) - (b)) < 1e-9)
29 
30 static void no_regress_no_persist_test_1(void) {
32  grpc_time_averaged_stats_init(&tas, 1000, 0, 0.0);
35 
36  /* Should have no effect */
40 
41  /* Should replace old average */
46 }
47 
48 static void no_regress_no_persist_test_2(void) {
50  grpc_time_averaged_stats_init(&tas, 1000, 0, 0.0);
52  /* Should replace init value */
57 
62 }
63 
64 static void no_regress_no_persist_test_3(void) {
66  grpc_time_averaged_stats_init(&tas, 1000, 0, 0.0);
68  /* Should replace init value */
73 
79 }
80 
81 static void some_regress_no_persist_test(void) {
83  grpc_time_averaged_stats_init(&tas, 1000, 0.5, 0.0);
89  /* (2 * 2000 + 0.5 * 1000) / 2.5 */
92 }
93 
94 static void some_decay_test(void) {
96  grpc_time_averaged_stats_init(&tas, 1000, 1, 0.0);
98  /* Should avg with init value */
103 
108 
113 }
114 
115 static void no_regress_full_persist_test(void) {
117  grpc_time_averaged_stats_init(&tas, 1000, 0, 1.0);
120 
121  /* Should replace init value */
126 
127  /* Will result in average of the 3 samples. */
133 }
134 
135 static void no_regress_some_persist_test(void) {
137  grpc_time_averaged_stats_init(&tas, 1000, 0, 0.5);
138  /* Should replace init value */
143 
149 }
150 
153  grpc_time_averaged_stats_init(&tas, 1000, 0.4, 0.6);
154  /* Sample weight = 0 */
157 
159  /* (0.6 * 0 * 1000 + 0.4 * 1000 / 0.4) */
162 
165  /* (1 * 2640 + 0.6 * 0.4 * 1000 + 0.4 * 1000 / (1 + 0.6 * 0.4 + 0.4) */
168 
171  /* (1 * 2876.8 + 0.6 * 1.64 * 2000 + 0.4 * 1000 / (1 + 0.6 * 1.64 + 0.4) */
174 
177  /* (1 * 4944.32 + 0.6 * 2.384 * 2200 + 0.4 * 1000) /
178  (1 + 0.6 * 2.384 + 0.4) */
181 }
182 
183 int main(int argc, char** argv) {
184  grpc::testing::TestEnvironment env(&argc, argv);
189  some_decay_test();
193  return 0;
194 }
some_regress_no_persist_test
static void some_regress_no_persist_test(void)
Definition: iomgr/time_averaged_stats_test.cc:81
log.h
generate.env
env
Definition: generate.py:37
grpc_time_averaged_stats_init
void grpc_time_averaged_stats_init(grpc_time_averaged_stats *stats, double init_avg, double regress_weight, double persistence_factor)
Definition: iomgr/time_averaged_stats.cc:23
no_regress_no_persist_test_1
static void no_regress_no_persist_test_1(void)
Definition: iomgr/time_averaged_stats_test.cc:30
no_regress_full_persist_test
static void no_regress_full_persist_test(void)
Definition: iomgr/time_averaged_stats_test.cc:115
grpc_time_averaged_stats
Definition: iomgr/time_averaged_stats.h:27
EXPECT_EQ
#define EXPECT_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:27
grpc_time_averaged_stats::aggregate_total_weight
double aggregate_total_weight
Definition: iomgr/time_averaged_stats.h:55
grpc_time_averaged_stats_add_sample
void grpc_time_averaged_stats_add_sample(grpc_time_averaged_stats *stats, double value)
Definition: iomgr/time_averaged_stats.cc:35
grpc_time_averaged_stats_update_average
double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats *stats)
Definition: iomgr/time_averaged_stats.cc:41
main
int main(int argc, char **argv)
Definition: iomgr/time_averaged_stats_test.cc:183
no_regress_no_persist_test_2
static void no_regress_no_persist_test_2(void)
Definition: iomgr/time_averaged_stats_test.cc:48
some_decay_test
static void some_decay_test(void)
Definition: iomgr/time_averaged_stats_test.cc:94
no_regress_some_persist_test
static void no_regress_some_persist_test(void)
Definition: iomgr/time_averaged_stats_test.cc:135
test_config.h
time_averaged_stats.h
grpc::testing::TestEnvironment
Definition: test/core/util/test_config.h:54
EXPECT_DOUBLE_EQ
#define EXPECT_DOUBLE_EQ(a, b)
Definition: iomgr/time_averaged_stats_test.cc:28
some_regress_some_persist_test
static void some_regress_some_persist_test(void)
Definition: iomgr/time_averaged_stats_test.cc:151
no_regress_no_persist_test_3
static void no_regress_no_persist_test_3(void)
Definition: iomgr/time_averaged_stats_test.cc:64
grpc_time_averaged_stats::aggregate_weighted_avg
double aggregate_weighted_avg
Definition: iomgr/time_averaged_stats.h:58


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:36