aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2018-08-24 10:41:04 +0200
committerJulius Bünger <buenger@mytum.de>2018-08-24 10:41:04 +0200
commitd8c24ef01b45a28d563bd96a6d1ee35d73fa1df7 (patch)
tree350c4e38cd7f2f9ae81fe8ee72ea84602dab2372
parent2cb60679f6078d53477859aedbee1210edfb8327 (diff)
downloadgnunet-d8c24ef01b45a28d563bd96a6d1ee35d73fa1df7.tar.gz
gnunet-d8c24ef01b45a28d563bd96a6d1ee35d73fa1df7.zip
Unify strings in rps profiler
-rw-r--r--src/rps/gnunet-rps-profiler.c224
1 files changed, 86 insertions, 138 deletions
diff --git a/src/rps/gnunet-rps-profiler.c b/src/rps/gnunet-rps-profiler.c
index a40a067ae..79f0fbe2f 100644
--- a/src/rps/gnunet-rps-profiler.c
+++ b/src/rps/gnunet-rps-profiler.c
@@ -93,6 +93,25 @@ enum STAT_TYPE
93 STAT_TYPE_MAX, /* 16 */ 93 STAT_TYPE_MAX, /* 16 */
94}; 94};
95 95
96static char* stat_type_strings[] = {
97 "# rounds",
98 "# rounds blocked",
99 "# rounds blocked - too many pushes",
100 "# rounds blocked - no pushes",
101 "# rounds blocked - no pull replies",
102 "# rounds blocked - too many pushes, no pull replies",
103 "# rounds blocked - no pushes, no pull replies",
104 "# push send issued",
105 "# pull request send issued",
106 "# pull reply send issued",
107 "# pushes sent",
108 "# pull requests sent",
109 "# pull replys sent",
110 "# push message received",
111 "# pull request message received",
112 "# pull reply messages received",
113};
114
96struct STATcls 115struct STATcls
97{ 116{
98 struct RPSPeer *rps_peer; 117 struct RPSPeer *rps_peer;
@@ -109,67 +128,99 @@ struct STATcls
109 */ 128 */
110enum STAT_TYPE stat_str_2_type (const char *stat_str) 129enum STAT_TYPE stat_str_2_type (const char *stat_str)
111{ 130{
112 if (0 == strncmp ("# rounds blocked - no pull replies", stat_str, strlen ("# rounds blocked - no pull replies"))) 131 if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS_NO_PULL],
132 stat_str,
133 strlen (stat_type_strings[STAT_TYPE_BLOCKS_NO_PULL])))
113 { 134 {
114 return STAT_TYPE_BLOCKS_NO_PULL; 135 return STAT_TYPE_BLOCKS_NO_PULL;
115 } 136 }
116 else if (0 == strncmp ("# rounds blocked - too many pushes, no pull replies", stat_str, strlen ("# rounds blocked - too many pushes, no pull replies"))) 137 else if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL],
138 stat_str,
139 strlen (stat_type_strings[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL])))
117 { 140 {
118 return STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL; 141 return STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL;
119 } 142 }
120 else if (0 == strncmp ("# rounds blocked - too many pushes", stat_str, strlen ("# rounds blocked - too many pushes"))) 143 else if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS_MANY_PUSH],
144 stat_str,
145 strlen (stat_type_strings[STAT_TYPE_BLOCKS_MANY_PUSH])))
121 { 146 {
122 return STAT_TYPE_BLOCKS_MANY_PUSH; 147 return STAT_TYPE_BLOCKS_MANY_PUSH;
123 } 148 }
124 else if (0 == strncmp ("# rounds blocked - no pushes, no pull replies", stat_str, strlen ("# rounds blocked - no pushes, no pull replies"))) 149 else if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL],
150 stat_str,
151 strlen (stat_type_strings[STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL])))
125 { 152 {
126 return STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL; 153 return STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL;
127 } 154 }
128 else if (0 == strncmp ("# rounds blocked - no pushes", stat_str, strlen ("# rounds blocked - no pushes"))) 155 else if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS_NO_PUSH],
156 stat_str,
157 strlen (stat_type_strings[STAT_TYPE_BLOCKS_NO_PUSH])))
129 { 158 {
130 return STAT_TYPE_BLOCKS_NO_PUSH; 159 return STAT_TYPE_BLOCKS_NO_PUSH;
131 } 160 }
132 else if (0 == strncmp ("# rounds blocked", stat_str, strlen ("# rounds blocked"))) 161 else if (0 == strncmp (stat_type_strings[STAT_TYPE_BLOCKS],
162 stat_str,
163 strlen (stat_type_strings[STAT_TYPE_BLOCKS])))
133 { 164 {
134 return STAT_TYPE_BLOCKS; 165 return STAT_TYPE_BLOCKS;
135 } 166 }
136 else if (0 == strncmp ("# rounds", stat_str, strlen ("# rounds"))) 167 else if (0 == strncmp (stat_type_strings[STAT_TYPE_ROUNDS],
168 stat_str,
169 strlen (stat_type_strings[STAT_TYPE_ROUNDS])))
137 { 170 {
138 return STAT_TYPE_ROUNDS; 171 return STAT_TYPE_ROUNDS;
139 } 172 }
140 else if (0 == strncmp ("# push send issued", stat_str, strlen ("# push send issued"))) 173 else if (0 == strncmp (stat_type_strings[STAT_TYPE_ISSUED_PUSH_SEND],
174 stat_str,
175 strlen (stat_type_strings[STAT_TYPE_ISSUED_PUSH_SEND])))
141 { 176 {
142 return STAT_TYPE_ISSUED_PUSH_SEND; 177 return STAT_TYPE_ISSUED_PUSH_SEND;
143 } 178 }
144 else if (0 == strncmp ("# pull request send issued", stat_str, strlen ("# pull request send issued"))) 179 else if (0 == strncmp (stat_type_strings[STAT_TYPE_ISSUED_PULL_REQ],
180 stat_str,
181 strlen (stat_type_strings[STAT_TYPE_ISSUED_PULL_REQ])))
145 { 182 {
146 return STAT_TYPE_ISSUED_PULL_REQ; 183 return STAT_TYPE_ISSUED_PULL_REQ;
147 } 184 }
148 else if (0 == strncmp ("# pull reply send issued", stat_str, strlen ("# pull reply send issued"))) 185 else if (0 == strncmp (stat_type_strings[STAT_TYPE_ISSUED_PULL_REP],
186 stat_str,
187 strlen (stat_type_strings[STAT_TYPE_ISSUED_PULL_REP])))
149 { 188 {
150 return STAT_TYPE_ISSUED_PULL_REP; 189 return STAT_TYPE_ISSUED_PULL_REP;
151 } 190 }
152 else if (0 == strncmp ("# pushes sent", stat_str, strlen ("# pushes sent"))) 191 else if (0 == strncmp (stat_type_strings[STAT_TYPE_SENT_PUSH_SEND],
192 stat_str,
193 strlen (stat_type_strings[STAT_TYPE_SENT_PUSH_SEND])))
153 { 194 {
154 return STAT_TYPE_SENT_PUSH_SEND; 195 return STAT_TYPE_SENT_PUSH_SEND;
155 } 196 }
156 else if (0 == strncmp ("# pull requests sent", stat_str, strlen ("# pull requests sent"))) 197 else if (0 == strncmp (stat_type_strings[STAT_TYPE_SENT_PULL_REQ],
198 stat_str,
199 strlen (stat_type_strings[STAT_TYPE_SENT_PULL_REQ])))
157 { 200 {
158 return STAT_TYPE_SENT_PULL_REQ; 201 return STAT_TYPE_SENT_PULL_REQ;
159 } 202 }
160 else if (0 == strncmp ("# pull replys sent", stat_str, strlen ("# pull replys sent"))) 203 else if (0 == strncmp (stat_type_strings[STAT_TYPE_SENT_PULL_REP],
204 stat_str,
205 strlen (stat_type_strings[STAT_TYPE_SENT_PULL_REP])))
161 { 206 {
162 return STAT_TYPE_SENT_PULL_REP; 207 return STAT_TYPE_SENT_PULL_REP;
163 } 208 }
164 else if (0 == strncmp ("# push message received", stat_str, strlen ("# push message received"))) 209 else if (0 == strncmp (stat_type_strings[STAT_TYPE_RECV_PUSH_SEND],
210 stat_str,
211 strlen (stat_type_strings[STAT_TYPE_RECV_PUSH_SEND])))
165 { 212 {
166 return STAT_TYPE_RECV_PUSH_SEND; 213 return STAT_TYPE_RECV_PUSH_SEND;
167 } 214 }
168 else if (0 == strncmp ("# pull request message received", stat_str, strlen ("# pull request message received"))) 215 else if (0 == strncmp (stat_type_strings[STAT_TYPE_RECV_PULL_REQ],
216 stat_str,
217 strlen (stat_type_strings[STAT_TYPE_RECV_PULL_REQ])))
169 { 218 {
170 return STAT_TYPE_RECV_PULL_REQ; 219 return STAT_TYPE_RECV_PULL_REQ;
171 } 220 }
172 else if (0 == strncmp ("# pull reply messages received", stat_str, strlen ("# pull reply messages received"))) 221 else if (0 == strncmp (stat_type_strings[STAT_TYPE_RECV_PULL_REP],
222 stat_str,
223 strlen (stat_type_strings[STAT_TYPE_RECV_PULL_REP])))
173 { 224 {
174 return STAT_TYPE_RECV_PULL_REP; 225 return STAT_TYPE_RECV_PULL_REP;
175 } 226 }
@@ -178,58 +229,6 @@ enum STAT_TYPE stat_str_2_type (const char *stat_str)
178 229
179 230
180/** 231/**
181 * @brief Converts #STAT_TYPE enum to the equivalent string representation that
182 * is stored with the statistics service.
183 *
184 * @param stat_type #STAT_TYPE enum
185 *
186 * @return string representation that matches statistics value
187 */
188char* stat_type_2_str (enum STAT_TYPE stat_type)
189{
190 switch (stat_type)
191 {
192 case STAT_TYPE_ROUNDS:
193 return "# rounds";
194 case STAT_TYPE_BLOCKS:
195 return "# rounds blocked";
196 case STAT_TYPE_BLOCKS_MANY_PUSH:
197 return "# rounds blocked - too many pushes";
198 case STAT_TYPE_BLOCKS_NO_PUSH:
199 return "# rounds blocked - no pushes";
200 case STAT_TYPE_BLOCKS_NO_PULL:
201 return "# rounds blocked - no pull replies";
202 case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
203 return "# rounds blocked - too many pushes, no pull replies";
204 case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
205 return "# rounds blocked - no pushes, no pull replies";
206 case STAT_TYPE_ISSUED_PUSH_SEND:
207 return "# push send issued";
208 case STAT_TYPE_ISSUED_PULL_REQ:
209 return "# pull request send issued";
210 case STAT_TYPE_ISSUED_PULL_REP:
211 return "# pull reply send issued";
212 case STAT_TYPE_SENT_PUSH_SEND:
213 return "# pushes sent";
214 case STAT_TYPE_SENT_PULL_REQ:
215 return "# pull requests sent";
216 case STAT_TYPE_SENT_PULL_REP:
217 return "# pull replys sent";
218 case STAT_TYPE_RECV_PUSH_SEND:
219 return "# push message received";
220 case STAT_TYPE_RECV_PULL_REQ:
221 return "# pull request message received";
222 case STAT_TYPE_RECV_PULL_REP:
223 return "# pull reply messages received";
224 case STAT_TYPE_MAX:
225 default:
226 return "ERROR";
227 ;
228 }
229}
230
231
232/**
233 * @brief Indicates whether peer should go off- or online 232 * @brief Indicates whether peer should go off- or online
234 */ 233 */
235enum PEER_ONLINE_DELTA { 234enum PEER_ONLINE_DELTA {
@@ -940,7 +939,7 @@ clean_peer (unsigned peer_index)
940 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 939 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
941 "(%u) did not yet receive stat value for `%s'\n", 940 "(%u) did not yet receive stat value for `%s'\n",
942 rps_peers[peer_index].index, 941 rps_peers[peer_index].index,
943 stat_type_2_str (stat_type)); 942 stat_type_strings[stat_type]);
944 GNUNET_STATISTICS_get_cancel ( 943 GNUNET_STATISTICS_get_cancel (
945 rps_peers[peer_index].h_stat_get[stat_type]); 944 rps_peers[peer_index].h_stat_get[stat_type]);
946 } 945 }
@@ -2350,7 +2349,7 @@ void write_final_stats (void){
2350 rps_peers[i].stats[STAT_TYPE_RECV_PUSH_SEND], 2349 rps_peers[i].stats[STAT_TYPE_RECV_PUSH_SEND],
2351 rps_peers[i].stats[STAT_TYPE_RECV_PULL_REQ], 2350 rps_peers[i].stats[STAT_TYPE_RECV_PULL_REQ],
2352 rps_peers[i].stats[STAT_TYPE_RECV_PULL_REP]); 2351 rps_peers[i].stats[STAT_TYPE_RECV_PULL_REP]);
2353 for (uint32_t stat_type = STAT_TYPE_ROUNDS; 2352 for (enum STAT_TYPE stat_type = STAT_TYPE_ROUNDS;
2354 stat_type < STAT_TYPE_MAX; 2353 stat_type < STAT_TYPE_MAX;
2355 stat_type++) 2354 stat_type++)
2356 { 2355 {
@@ -2452,72 +2451,21 @@ stat_iterator (void *cls,
2452{ 2451{
2453 const struct STATcls *stat_cls = (const struct STATcls *) cls; 2452 const struct STATcls *stat_cls = (const struct STATcls *) cls;
2454 struct RPSPeer *rps_peer = (struct RPSPeer *) stat_cls->rps_peer; 2453 struct RPSPeer *rps_peer = (struct RPSPeer *) stat_cls->rps_peer;
2454 enum STAT_TYPE stat_type;
2455 (void) subsystem;
2456 (void) is_persistent;
2455 2457
2456 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got stat value: %s - %" PRIu64 "\n", 2458 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got stat value: %s - %" PRIu64 "\n",
2457 //stat_type_2_str (stat_cls->stat_type),
2458 name, 2459 name,
2459 value); 2460 value);
2460 to_file (rps_peer->file_name_stats, 2461 to_file (rps_peer->file_name_stats,
2461 "%s: %" PRIu64 "\n", 2462 "%s: %" PRIu64 "\n",
2462 name, 2463 name,
2463 value); 2464 value);
2464 switch (stat_str_2_type (name)) 2465 stat_type = stat_str_2_type (name);
2465 { 2466 GNUNET_assert (STAT_TYPE_ROUNDS <= stat_type &&
2466 case STAT_TYPE_ROUNDS: 2467 STAT_TYPE_MAX > stat_type);
2467 rps_peer->stats[STAT_TYPE_ROUNDS] = value; 2468 rps_peer->stats[stat_type] = value;
2468 break;
2469 case STAT_TYPE_BLOCKS:
2470 rps_peer->stats[STAT_TYPE_BLOCKS] = value;
2471 break;
2472 case STAT_TYPE_BLOCKS_MANY_PUSH:
2473 rps_peer->stats[STAT_TYPE_BLOCKS_MANY_PUSH] = value;
2474 break;
2475 case STAT_TYPE_BLOCKS_NO_PUSH:
2476 rps_peer->stats[STAT_TYPE_BLOCKS_NO_PUSH] = value;
2477 break;
2478 case STAT_TYPE_BLOCKS_NO_PULL:
2479 rps_peer->stats[STAT_TYPE_BLOCKS_NO_PULL] = value;
2480 break;
2481 case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
2482 rps_peer->stats[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL] = value;
2483 break;
2484 case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
2485 rps_peer->stats[STAT_TYPE_BLOCKS] = value;
2486 break;
2487 case STAT_TYPE_ISSUED_PUSH_SEND:
2488 rps_peer->stats[STAT_TYPE_ISSUED_PUSH_SEND] = value;
2489 break;
2490 case STAT_TYPE_ISSUED_PULL_REQ:
2491 rps_peer->stats[STAT_TYPE_ISSUED_PULL_REQ] = value;
2492 break;
2493 case STAT_TYPE_ISSUED_PULL_REP:
2494 rps_peer->stats[STAT_TYPE_ISSUED_PULL_REP] = value;
2495 break;
2496 case STAT_TYPE_SENT_PUSH_SEND:
2497 rps_peer->stats[STAT_TYPE_SENT_PUSH_SEND] = value;
2498 break;
2499 case STAT_TYPE_SENT_PULL_REQ:
2500 rps_peer->stats[STAT_TYPE_SENT_PULL_REQ] = value;
2501 break;
2502 case STAT_TYPE_SENT_PULL_REP:
2503 rps_peer->stats[STAT_TYPE_SENT_PULL_REP] = value;
2504 break;
2505 case STAT_TYPE_RECV_PUSH_SEND:
2506 rps_peer->stats[STAT_TYPE_RECV_PUSH_SEND] = value;
2507 break;
2508 case STAT_TYPE_RECV_PULL_REQ:
2509 rps_peer->stats[STAT_TYPE_RECV_PULL_REQ] = value;
2510 break;
2511 case STAT_TYPE_RECV_PULL_REP:
2512 rps_peer->stats[STAT_TYPE_RECV_PULL_REP] = value;
2513 break;
2514 case STAT_TYPE_MAX:
2515 default:
2516 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2517 "Unknown statistics string: %s\n",
2518 name);
2519 break;
2520 }
2521 return GNUNET_OK; 2469 return GNUNET_OK;
2522} 2470}
2523 2471
@@ -2545,17 +2493,17 @@ void post_profiler (struct RPSPeer *rps_peer)
2545 stat_cls->stat_type = stat_type; 2493 stat_cls->stat_type = stat_type;
2546 rps_peer->file_name_stats = 2494 rps_peer->file_name_stats =
2547 store_prefix_file_name (rps_peer->peer_id, "stats"); 2495 store_prefix_file_name (rps_peer->peer_id, "stats");
2548 rps_peer->h_stat_get[stat_type] = GNUNET_STATISTICS_get ( 2496 rps_peer->h_stat_get[stat_type] =
2549 rps_peer->stats_h, 2497 GNUNET_STATISTICS_get (rps_peer->stats_h,
2550 "rps", 2498 "rps",
2551 stat_type_2_str (stat_type), 2499 stat_type_strings [stat_type],
2552 post_test_shutdown_ready_cb, 2500 post_test_shutdown_ready_cb,
2553 stat_iterator, 2501 stat_iterator,
2554 (struct STATcls *) stat_cls); 2502 (struct STATcls *) stat_cls);
2555 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 2503 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2556 "Requested statistics for %s (peer %" PRIu32 ")\n", 2504 "Requested statistics for %s (peer %" PRIu32 ")\n",
2557 stat_type_2_str (stat_type), 2505 stat_type_strings [stat_type],
2558 rps_peer->index); 2506 rps_peer->index);
2559 } 2507 }
2560 } 2508 }
2561} 2509}