aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2018-06-08 10:11:32 +0200
committerJulius Bünger <buenger@mytum.de>2018-06-08 10:11:32 +0200
commit8900fb0e0101cd722e392ffb9aa36245c22ea770 (patch)
tree2c2472e20a69767a38389fbf9ae3500d339c3500
parent365e3bcae1e79c4f71f68e0d1d41172d86c51e76 (diff)
rps profiler: rewrite statistics handling
-rw-r--r--src/rps/gnunet-rps-profiler.c519
1 files changed, 241 insertions, 278 deletions
diff --git a/src/rps/gnunet-rps-profiler.c b/src/rps/gnunet-rps-profiler.c
index 8450ee65d7..5ef42187f2 100644
--- a/src/rps/gnunet-rps-profiler.c
+++ b/src/rps/gnunet-rps-profiler.c
@@ -34,6 +34,8 @@
#include <inttypes.h>
+#define BIT(n) (1 << (n))
+
/**
* How many peers do we start?
*/
@@ -67,6 +69,163 @@ static unsigned int mal_type = 0;
*/
static struct GNUNET_TESTBED_Peer **testbed_peers;
+enum STAT_TYPE
+{
+ STAT_TYPE_ROUNDS, /* 0 */
+ STAT_TYPE_BLOCKS, /* 1 */
+ STAT_TYPE_BLOCKS_MANY_PUSH, /* 2 */
+ STAT_TYPE_BLOCKS_NO_PUSH, /* 3 */
+ STAT_TYPE_BLOCKS_NO_PULL, /* 4 */
+ STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL, /* 5 */
+ STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL, /* 6 */
+ STAT_TYPE_ISSUED_PUSH_SEND, /* 7 */
+ STAT_TYPE_ISSUED_PULL_REQ, /* 8 */
+ STAT_TYPE_ISSUED_PULL_REP, /* 9 */
+ STAT_TYPE_SENT_PUSH_SEND, /* 10 */
+ STAT_TYPE_SENT_PULL_REQ, /* 11 */
+ STAT_TYPE_SENT_PULL_REP, /* 12 */
+ STAT_TYPE_RECV_PUSH_SEND, /* 13 */
+ STAT_TYPE_RECV_PULL_REQ, /* 14 */
+ STAT_TYPE_RECV_PULL_REP, /* 15 */
+ STAT_TYPE_MAX, /* 16 */
+};
+
+struct STATcls
+{
+ struct RPSPeer *rps_peer;
+ enum STAT_TYPE stat_type;
+};
+
+
+/**
+ * @brief Converts string representation to the corresponding #STAT_TYPE enum.
+ *
+ * @param stat_str string representation of statistics specifier
+ *
+ * @return corresponding enum
+ */
+enum STAT_TYPE stat_str_2_type (const char *stat_str)
+{
+ if (0 == strncmp ("# rounds blocked - no pull replies", stat_str, strlen ("# rounds blocked - no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PULL;
+ }
+ else if (0 == strncmp ("# rounds blocked - too many pushes, no pull replies", stat_str, strlen ("# rounds blocked - too many pushes, no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL;
+ }
+ else if (0 == strncmp ("# rounds blocked - too many pushes", stat_str, strlen ("# rounds blocked - too many pushes")))
+ {
+ return STAT_TYPE_BLOCKS_MANY_PUSH;
+ }
+ else if (0 == strncmp ("# rounds blocked - no pushes, no pull replies", stat_str, strlen ("# rounds blocked - no pushes, no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL;
+ }
+ else if (0 == strncmp ("# rounds blocked - no pushes", stat_str, strlen ("# rounds blocked - no pushes")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PUSH;
+ }
+ else if (0 == strncmp ("# rounds blocked", stat_str, strlen ("# rounds blocked")))
+ {
+ return STAT_TYPE_BLOCKS;
+ }
+ else if (0 == strncmp ("# rounds", stat_str, strlen ("# rounds")))
+ {
+ return STAT_TYPE_ROUNDS;
+ }
+ else if (0 == strncmp ("# push send issued", stat_str, strlen ("# push send issued")))
+ {
+ return STAT_TYPE_ISSUED_PUSH_SEND;
+ }
+ else if (0 == strncmp ("# pull request send issued", stat_str, strlen ("# pull request send issued")))
+ {
+ return STAT_TYPE_ISSUED_PULL_REQ;
+ }
+ else if (0 == strncmp ("# pull reply send issued", stat_str, strlen ("# pull reply send issued")))
+ {
+ return STAT_TYPE_ISSUED_PULL_REP;
+ }
+ else if (0 == strncmp ("# pushes sent", stat_str, strlen ("# pushes sent")))
+ {
+ return STAT_TYPE_SENT_PUSH_SEND;
+ }
+ else if (0 == strncmp ("# pull requests sent", stat_str, strlen ("# pull requests sent")))
+ {
+ return STAT_TYPE_SENT_PULL_REQ;
+ }
+ else if (0 == strncmp ("# pull replys sent", stat_str, strlen ("# pull replys sent")))
+ {
+ return STAT_TYPE_SENT_PULL_REP;
+ }
+ else if (0 == strncmp ("# push message received", stat_str, strlen ("# push message received")))
+ {
+ return STAT_TYPE_RECV_PUSH_SEND;
+ }
+ else if (0 == strncmp ("# pull request message received", stat_str, strlen ("# pull request message received")))
+ {
+ return STAT_TYPE_RECV_PULL_REQ;
+ }
+ else if (0 == strncmp ("# pull reply messages received", stat_str, strlen ("# pull reply messages received")))
+ {
+ return STAT_TYPE_RECV_PULL_REP;
+ }
+ return STAT_TYPE_MAX;
+}
+
+
+/**
+ * @brief Converts #STAT_TYPE enum to the equivalent string representation that
+ * is stored with the statistics service.
+ *
+ * @param stat_type #STAT_TYPE enum
+ *
+ * @return string representation that matches statistics value
+ */
+char* stat_type_2_str (enum STAT_TYPE stat_type)
+{
+ switch (stat_type)
+ {
+ case STAT_TYPE_ROUNDS:
+ return "# rounds";
+ case STAT_TYPE_BLOCKS:
+ return "# rounds blocked";
+ case STAT_TYPE_BLOCKS_MANY_PUSH:
+ return "# rounds blocked - too many pushes";
+ case STAT_TYPE_BLOCKS_NO_PUSH:
+ return "# rounds blocked - no pushes";
+ case STAT_TYPE_BLOCKS_NO_PULL:
+ return "# rounds blocked - no pull replies";
+ case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
+ return "# rounds blocked - too many pushes, no pull replies";
+ case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
+ return "# rounds blocked - no pushes, no pull replies";
+ case STAT_TYPE_ISSUED_PUSH_SEND:
+ return "# push send issued";
+ case STAT_TYPE_ISSUED_PULL_REQ:
+ return "# pull request send issued";
+ case STAT_TYPE_ISSUED_PULL_REP:
+ return "# pull reply send issued";
+ case STAT_TYPE_SENT_PUSH_SEND:
+ return "# pushes sent";
+ case STAT_TYPE_SENT_PULL_REQ:
+ return "# pull requests sent";
+ case STAT_TYPE_SENT_PULL_REP:
+ return "# pull replys sent";
+ case STAT_TYPE_RECV_PUSH_SEND:
+ return "# push message received";
+ case STAT_TYPE_RECV_PULL_REQ:
+ return "# pull request message received";
+ case STAT_TYPE_RECV_PULL_REP:
+ return "# pull reply messages received";
+ case STAT_TYPE_MAX:
+ default:
+ return "ERROR";
+ ;
+ }
+}
+
+
/**
* @brief Indicates whether peer should go off- or online
*/
@@ -287,52 +446,9 @@ struct RPSPeer
/**
* @brief statistics values
*/
- uint64_t num_rounds;
- uint64_t num_blocks;
- uint64_t num_blocks_many_push;
- uint64_t num_blocks_no_push;
- uint64_t num_blocks_no_pull;
- uint64_t num_blocks_many_push_no_pull;
- uint64_t num_blocks_no_push_no_pull;
- uint64_t num_issued_push;
- uint64_t num_issued_pull_req;
- uint64_t num_issued_pull_rep;
- uint64_t num_sent_push;
- uint64_t num_sent_pull_req;
- uint64_t num_sent_pull_rep;
- uint64_t num_recv_push;
- uint64_t num_recv_pull_req;
- uint64_t num_recv_pull_rep;
+ uint64_t stats[STAT_TYPE_MAX];
};
-enum STAT_TYPE
-{
- STAT_TYPE_ROUNDS = 0x1, /* 1 */
- STAT_TYPE_BLOCKS = 0x2, /* 2 */
- STAT_TYPE_BLOCKS_MANY_PUSH = 0x4, /* 3 */
- STAT_TYPE_BLOCKS_NO_PUSH = 0x8, /* 4 */
- STAT_TYPE_BLOCKS_NO_PULL = 0x10, /* 5 */
- STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL = 0x20, /* 6 */
- STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL = 0x40, /* 7 */
- STAT_TYPE_ISSUED_PUSH_SEND = 0x80, /* 8 */
- STAT_TYPE_ISSUED_PULL_REQ = 0x100, /* 9 */
- STAT_TYPE_ISSUED_PULL_REP = 0x200, /* 10 */
- STAT_TYPE_SENT_PUSH_SEND = 0x400, /* 11 */
- STAT_TYPE_SENT_PULL_REQ = 0x800, /* 12 */
- STAT_TYPE_SENT_PULL_REP = 0x1000, /* 13 */
- STAT_TYPE_RECV_PUSH_SEND = 0x2000, /* 14 */
- STAT_TYPE_RECV_PULL_REQ = 0x4000, /* 15 */
- STAT_TYPE_RECV_PULL_REP = 0x8000, /* 16 */
- STAT_TYPE_MAX = 0x80000000, /* 32 */
-};
-
-struct STATcls
-{
- struct RPSPeer *rps_peer;
- enum STAT_TYPE stat_type;
-};
-
-
/**
* Information for all the peers.
*/
@@ -2100,25 +2216,9 @@ pre_profiler (struct RPSPeer *rps_peer, struct GNUNET_RPS_Handle *h)
}
void write_final_stats (void){
- uint32_t i;
- uint64_t sum_rounds = 0;
- uint64_t sum_blocks = 0;
- uint64_t sum_b_mpush = 0;
- uint64_t sum_b_npush = 0;
- uint64_t sum_b_npull = 0;
- uint64_t sum_b_mpush_npull = 0;
- uint64_t sum_b_npush_npull = 0;
- uint64_t sum_iss_push = 0;
- uint64_t sum_iss_pull_req = 0;
- uint64_t sum_iss_pull_rep = 0;
- uint64_t sum_sent_push = 0;
- uint64_t sum_sent_pull_req = 0;
- uint64_t sum_sent_pull_rep = 0;
- uint64_t sum_recv_push = 0;
- uint64_t sum_recv_pull_req = 0;
- uint64_t sum_recv_pull_rep = 0;
+ uint64_t sums[STAT_TYPE_MAX] = { 0 };
- for (i = 0; i < num_peers; i++)
+ for (uint32_t i = 0; i < num_peers; i++)
{
to_file ("/tmp/rps/final_stats.dat",
"%" PRIu32 " " /* index */
@@ -2130,38 +2230,34 @@ void write_final_stats (void){
PRIu64 " %" PRIu64 " %" PRIu64 /* recv */,
i,
GNUNET_i2s (rps_peers[i].peer_id),
- rps_peers[i].num_rounds,
- rps_peers[i].num_blocks,
- rps_peers[i].num_blocks_many_push,
- rps_peers[i].num_blocks_no_push,
- rps_peers[i].num_blocks_no_pull,
- rps_peers[i].num_blocks_many_push_no_pull,
- rps_peers[i].num_blocks_no_push_no_pull,
- rps_peers[i].num_issued_push,
- rps_peers[i].num_issued_pull_req,
- rps_peers[i].num_issued_pull_rep,
- rps_peers[i].num_sent_push,
- rps_peers[i].num_sent_pull_req,
- rps_peers[i].num_sent_pull_rep,
- rps_peers[i].num_recv_push,
- rps_peers[i].num_recv_pull_req,
- rps_peers[i].num_recv_pull_rep);
- sum_rounds += rps_peers[i].num_rounds;
- sum_blocks += rps_peers[i].num_blocks;
- sum_b_mpush += rps_peers[i].num_blocks_many_push;
- sum_b_npush += rps_peers[i].num_blocks_no_push;
- sum_b_npull += rps_peers[i].num_blocks_no_pull;
- sum_b_mpush_npull += rps_peers[i].num_blocks_many_push_no_pull;
- sum_b_npush_npull += rps_peers[i].num_blocks_no_push_no_pull;
- sum_iss_push += rps_peers[i].num_issued_push;
- sum_iss_pull_req += rps_peers[i].num_issued_pull_req;
- sum_iss_pull_rep += rps_peers[i].num_issued_pull_rep;
- sum_sent_push += rps_peers[i].num_sent_push;
- sum_sent_pull_req += rps_peers[i].num_sent_pull_req;
- sum_sent_pull_rep += rps_peers[i].num_sent_pull_rep;
- sum_recv_push += rps_peers[i].num_recv_push;
- sum_recv_pull_req += rps_peers[i].num_recv_pull_req;
- sum_recv_pull_rep += rps_peers[i].num_recv_pull_rep;
+ rps_peers[i].stats[STAT_TYPE_ROUNDS],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS_MANY_PUSH],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS_NO_PUSH],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS_NO_PULL],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL],
+ rps_peers[i].stats[STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL],
+ rps_peers[i].stats[STAT_TYPE_ISSUED_PUSH_SEND],
+ rps_peers[i].stats[STAT_TYPE_ISSUED_PULL_REQ],
+ rps_peers[i].stats[STAT_TYPE_ISSUED_PULL_REP],
+ rps_peers[i].stats[STAT_TYPE_SENT_PUSH_SEND],
+ rps_peers[i].stats[STAT_TYPE_SENT_PULL_REQ],
+ rps_peers[i].stats[STAT_TYPE_SENT_PULL_REP],
+ rps_peers[i].stats[STAT_TYPE_RECV_PUSH_SEND],
+ rps_peers[i].stats[STAT_TYPE_RECV_PULL_REQ],
+ rps_peers[i].stats[STAT_TYPE_RECV_PULL_REP]);
+ for (uint32_t stat_type = STAT_TYPE_ROUNDS;
+ stat_type < STAT_TYPE_MAX;
+ stat_type++)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Add to sum (%" PRIu64 ") %" PRIu64 " of stat type %u - %s\n",
+ sums[stat_type],
+ rps_peers[i].stats[stat_type],
+ stat_type,
+ stat_type_2_str (stat_type));
+ sums[stat_type] += rps_peers[i].stats[stat_type];
+ }
}
to_file ("/tmp/rps/final_stats.dat",
"SUM %"
@@ -2170,22 +2266,22 @@ void write_final_stats (void){
PRIu64 " %" PRIu64 " %" PRIu64 " %" /* issued */
PRIu64 " %" PRIu64 " %" PRIu64 " %" /* sent */
PRIu64 " %" PRIu64 " %" PRIu64 /* recv */,
- sum_rounds,
- sum_blocks,
- sum_b_mpush,
- sum_b_npush,
- sum_b_npull,
- sum_b_mpush_npull,
- sum_b_npush_npull,
- sum_iss_push,
- sum_iss_pull_req,
- sum_iss_pull_rep,
- sum_sent_push,
- sum_sent_pull_req,
- sum_sent_pull_rep,
- sum_recv_push,
- sum_recv_pull_req,
- sum_recv_pull_rep);
+ sums[STAT_TYPE_ROUNDS],
+ sums[STAT_TYPE_BLOCKS],
+ sums[STAT_TYPE_BLOCKS_MANY_PUSH],
+ sums[STAT_TYPE_BLOCKS_NO_PUSH],
+ sums[STAT_TYPE_BLOCKS_NO_PULL],
+ sums[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL],
+ sums[STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL],
+ sums[STAT_TYPE_ISSUED_PUSH_SEND],
+ sums[STAT_TYPE_ISSUED_PULL_REQ],
+ sums[STAT_TYPE_ISSUED_PULL_REP],
+ sums[STAT_TYPE_SENT_PUSH_SEND],
+ sums[STAT_TYPE_SENT_PULL_REQ],
+ sums[STAT_TYPE_SENT_PULL_REP],
+ sums[STAT_TYPE_RECV_PUSH_SEND],
+ sums[STAT_TYPE_RECV_PULL_REQ],
+ sums[STAT_TYPE_RECV_PULL_REP]);
}
/**
@@ -2208,7 +2304,7 @@ post_test_shutdown_ready_cb (void *cls,
if (GNUNET_OK == success)
{
/* set flag that we we got the value */
- rps_peer->stat_collected_flags |= stat_cls->stat_type;
+ rps_peer->stat_collected_flags |= BIT(stat_cls->stat_type);
} else {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Peer %u did not receive statistics value\n",
@@ -2237,134 +2333,6 @@ post_test_shutdown_ready_cb (void *cls,
}
/**
- * @brief Converts string representation to the corresponding #STAT_TYPE enum.
- *
- * @param stat_str string representation of statistics specifier
- *
- * @return corresponding enum
- */
-enum STAT_TYPE stat_str_2_type (const char *stat_str)
-{
- if (0 == strncmp ("# rounds blocked - no pull replies", stat_str, strlen ("# rounds blocked - no pull replies")))
- {
- return STAT_TYPE_BLOCKS_NO_PULL;
- }
- else if (0 == strncmp ("# rounds blocked - too many pushes, no pull replies", stat_str, strlen ("# rounds blocked - too many pushes, no pull replies")))
- {
- return STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL;
- }
- else if (0 == strncmp ("# rounds blocked - too many pushes", stat_str, strlen ("# rounds blocked - too many pushes")))
- {
- return STAT_TYPE_BLOCKS_MANY_PUSH;
- }
- else if (0 == strncmp ("# rounds blocked - no pushes, no pull replies", stat_str, strlen ("# rounds blocked - no pushes, no pull replies")))
- {
- return STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL;
- }
- else if (0 == strncmp ("# rounds blocked - no pushes", stat_str, strlen ("# rounds blocked - no pushes")))
- {
- return STAT_TYPE_BLOCKS_NO_PUSH;
- }
- else if (0 == strncmp ("# rounds blocked", stat_str, strlen ("# rounds blocked")))
- {
- return STAT_TYPE_BLOCKS;
- }
- else if (0 == strncmp ("# rounds", stat_str, strlen ("# rounds")))
- {
- return STAT_TYPE_ROUNDS;
- }
- else if (0 == strncmp ("# push send issued", stat_str, strlen ("# push send issued")))
- {
- return STAT_TYPE_ISSUED_PUSH_SEND;
- }
- else if (0 == strncmp ("# pull request send issued", stat_str, strlen ("# pull request send issued")))
- {
- return STAT_TYPE_ISSUED_PULL_REQ;
- }
- else if (0 == strncmp ("# pull reply send issued", stat_str, strlen ("# pull reply send issued")))
- {
- return STAT_TYPE_ISSUED_PULL_REP;
- }
- else if (0 == strncmp ("# pushes sent", stat_str, strlen ("# pushes sent")))
- {
- return STAT_TYPE_SENT_PUSH_SEND;
- }
- else if (0 == strncmp ("# pull requests sent", stat_str, strlen ("# pull requests sent")))
- {
- return STAT_TYPE_SENT_PULL_REQ;
- }
- else if (0 == strncmp ("# pull replys sent", stat_str, strlen ("# pull replys sent")))
- {
- return STAT_TYPE_SENT_PULL_REP;
- }
- else if (0 == strncmp ("# push message received", stat_str, strlen ("# push message received")))
- {
- return STAT_TYPE_RECV_PUSH_SEND;
- }
- else if (0 == strncmp ("# pull request message received", stat_str, strlen ("# pull request message received")))
- {
- return STAT_TYPE_RECV_PULL_REQ;
- }
- else if (0 == strncmp ("# pull reply messages received", stat_str, strlen ("# pull reply messages received")))
- {
- return STAT_TYPE_RECV_PULL_REP;
- }
- return STAT_TYPE_MAX;
-}
-
-
-/**
- * @brief Converts #STAT_TYPE enum to the equivalent string representation that
- * is stored with the statistics service.
- *
- * @param stat_type #STAT_TYPE enum
- *
- * @return string representation that matches statistics value
- */
-char* stat_type_2_str (enum STAT_TYPE stat_type)
-{
- switch (stat_type)
- {
- case STAT_TYPE_ROUNDS:
- return "# rounds";
- case STAT_TYPE_BLOCKS:
- return "# rounds blocked";
- case STAT_TYPE_BLOCKS_MANY_PUSH:
- return "# rounds blocked - too many pushes";
- case STAT_TYPE_BLOCKS_NO_PUSH:
- return "# rounds blocked - no pushes";
- case STAT_TYPE_BLOCKS_NO_PULL:
- return "# rounds blocked - no pull replies";
- case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
- return "# rounds blocked - too many pushes, no pull replies";
- case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
- return "# rounds blocked - no pushes, no pull replies";
- case STAT_TYPE_ISSUED_PUSH_SEND:
- return "# push send issued";
- case STAT_TYPE_ISSUED_PULL_REQ:
- return "# pull request send issued";
- case STAT_TYPE_ISSUED_PULL_REP:
- return "# pull reply send issued";
- case STAT_TYPE_SENT_PUSH_SEND:
- return "# pushes sent";
- case STAT_TYPE_SENT_PULL_REQ:
- return "# pull requests sent";
- case STAT_TYPE_SENT_PULL_REP:
- return "# pull replys sent";
- case STAT_TYPE_RECV_PUSH_SEND:
- return "# push message received";
- case STAT_TYPE_RECV_PULL_REQ:
- return "# pull request message received";
- case STAT_TYPE_RECV_PULL_REP:
- return "# pull reply messages received";
- case STAT_TYPE_MAX:
- default:
- return "ERROR";
- ;
- }
-}
-
-/**
* Callback function to process statistic values.
*
* @param cls closure
@@ -2394,52 +2362,52 @@ stat_iterator (void *cls,
switch (stat_str_2_type (name))
{
case STAT_TYPE_ROUNDS:
- rps_peer->num_rounds = value;
+ rps_peer->stats[STAT_TYPE_ROUNDS] = value;
break;
case STAT_TYPE_BLOCKS:
- rps_peer->num_blocks = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS] = value;
break;
case STAT_TYPE_BLOCKS_MANY_PUSH:
- rps_peer->num_blocks_many_push = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS_MANY_PUSH] = value;
break;
case STAT_TYPE_BLOCKS_NO_PUSH:
- rps_peer->num_blocks_no_push = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS_NO_PUSH] = value;
break;
case STAT_TYPE_BLOCKS_NO_PULL:
- rps_peer->num_blocks_no_pull = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS_NO_PULL] = value;
break;
case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
- rps_peer->num_blocks_many_push_no_pull = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL] = value;
break;
case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
- rps_peer->num_blocks_no_push_no_pull = value;
+ rps_peer->stats[STAT_TYPE_BLOCKS] = value;
break;
case STAT_TYPE_ISSUED_PUSH_SEND:
- rps_peer->num_issued_push = value;
+ rps_peer->stats[STAT_TYPE_ISSUED_PUSH_SEND] = value;
break;
case STAT_TYPE_ISSUED_PULL_REQ:
- rps_peer->num_issued_pull_req = value;
+ rps_peer->stats[STAT_TYPE_ISSUED_PULL_REQ] = value;
break;
case STAT_TYPE_ISSUED_PULL_REP:
- rps_peer->num_issued_pull_rep = value;
+ rps_peer->stats[STAT_TYPE_ISSUED_PULL_REP] = value;
break;
case STAT_TYPE_SENT_PUSH_SEND:
- rps_peer->num_sent_push = value;
+ rps_peer->stats[STAT_TYPE_SENT_PUSH_SEND] = value;
break;
case STAT_TYPE_SENT_PULL_REQ:
- rps_peer->num_sent_pull_req = value;
+ rps_peer->stats[STAT_TYPE_SENT_PULL_REQ] = value;
break;
case STAT_TYPE_SENT_PULL_REP:
- rps_peer->num_sent_pull_rep = value;
+ rps_peer->stats[STAT_TYPE_SENT_PULL_REP] = value;
break;
case STAT_TYPE_RECV_PUSH_SEND:
- rps_peer->num_recv_push = value;
+ rps_peer->stats[STAT_TYPE_RECV_PUSH_SEND] = value;
break;
case STAT_TYPE_RECV_PULL_REQ:
- rps_peer->num_recv_pull_req = value;
+ rps_peer->stats[STAT_TYPE_RECV_PULL_REQ] = value;
break;
case STAT_TYPE_RECV_PULL_REP:
- rps_peer->num_recv_pull_rep = value;
+ rps_peer->stats[STAT_TYPE_RECV_PULL_REP] = value;
break;
case STAT_TYPE_MAX:
default:
@@ -2466,9 +2434,9 @@ void post_profiler (struct RPSPeer *rps_peer)
uint32_t stat_type;
for (stat_type = STAT_TYPE_ROUNDS;
stat_type < STAT_TYPE_MAX;
- stat_type = stat_type <<1)
+ stat_type++)
{
- if (stat_type & cur_test_run.stat_collect_flags)
+ if (BIT(stat_type) & cur_test_run.stat_collect_flags)
{
stat_cls = GNUNET_malloc (sizeof (struct STATcls));
stat_cls->rps_peer = rps_peer;
@@ -2634,22 +2602,22 @@ run (void *cls,
cur_test_run.have_churn = HAVE_NO_CHURN;
cur_test_run.have_quick_quit = HAVE_NO_QUICK_QUIT;
cur_test_run.have_collect_statistics = COLLECT_STATISTICS;
- cur_test_run.stat_collect_flags = STAT_TYPE_ROUNDS |
- STAT_TYPE_BLOCKS |
- STAT_TYPE_BLOCKS_MANY_PUSH |
- STAT_TYPE_BLOCKS_NO_PUSH |
- STAT_TYPE_BLOCKS_NO_PULL |
- STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL |
- STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL |
- STAT_TYPE_ISSUED_PUSH_SEND |
- STAT_TYPE_ISSUED_PULL_REQ |
- STAT_TYPE_ISSUED_PULL_REP |
- STAT_TYPE_SENT_PUSH_SEND |
- STAT_TYPE_SENT_PULL_REQ |
- STAT_TYPE_SENT_PULL_REP |
- STAT_TYPE_RECV_PUSH_SEND |
- STAT_TYPE_RECV_PULL_REQ |
- STAT_TYPE_RECV_PULL_REP;
+ cur_test_run.stat_collect_flags = BIT(STAT_TYPE_ROUNDS) |
+ BIT(STAT_TYPE_BLOCKS) |
+ BIT(STAT_TYPE_BLOCKS_MANY_PUSH) |
+ BIT(STAT_TYPE_BLOCKS_NO_PUSH) |
+ BIT(STAT_TYPE_BLOCKS_NO_PULL) |
+ BIT(STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL) |
+ BIT(STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL) |
+ BIT(STAT_TYPE_ISSUED_PUSH_SEND) |
+ BIT(STAT_TYPE_ISSUED_PULL_REQ) |
+ BIT(STAT_TYPE_ISSUED_PULL_REP) |
+ BIT(STAT_TYPE_SENT_PUSH_SEND) |
+ BIT(STAT_TYPE_SENT_PULL_REQ) |
+ BIT(STAT_TYPE_SENT_PULL_REP) |
+ BIT(STAT_TYPE_RECV_PUSH_SEND) |
+ BIT(STAT_TYPE_RECV_PULL_REQ) |
+ BIT(STAT_TYPE_RECV_PULL_REP);
cur_test_run.have_collect_view = COLLECT_VIEW;
timeout_s = 300;
@@ -2672,11 +2640,6 @@ run (void *cls,
ok = 1;
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"before _run()\n");
- //ret_value = GNUNET_TESTBED_test_run (cur_test_run.name,
- // "test_rps.conf",
- // num_peers,
- // 0, NULL, NULL,
- // &test_run, NULL);
GNUNET_TESTBED_run (NULL,
cfg,
num_peers,