aboutsummaryrefslogtreecommitdiff
path: root/src/service/peerstore/perf_peerstore_store.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/peerstore/perf_peerstore_store.c')
-rw-r--r--src/service/peerstore/perf_peerstore_store.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/service/peerstore/perf_peerstore_store.c b/src/service/peerstore/perf_peerstore_store.c
index e59af61e5..e328be93e 100644
--- a/src/service/peerstore/perf_peerstore_store.c
+++ b/src/service/peerstore/perf_peerstore_store.c
@@ -32,16 +32,20 @@ static int ok = 1;
32 32
33static struct GNUNET_PEERSTORE_Handle *h; 33static struct GNUNET_PEERSTORE_Handle *h;
34 34
35static struct GNUNET_PEERSTORE_WatchContext *wc;
36
35static char *ss = "test_peerstore_stress"; 37static char *ss = "test_peerstore_stress";
36static struct GNUNET_PeerIdentity p; 38static struct GNUNET_PeerIdentity p;
37static char *k = "test_peerstore_stress_key"; 39static char *k = "test_peerstore_stress_key";
38static char *v = "test_peerstore_stress_val"; 40static char *v = "test_peerstore_stress_val";
39 41
40static int count = 0; 42static int count = 0;
43static int count_fin = 0;
41 44
42static void 45static void
43disconnect () 46disconnect (void *cls)
44{ 47{
48 GNUNET_PEERSTORE_watch_cancel (wc);
45 if (NULL != h) 49 if (NULL != h)
46 GNUNET_PEERSTORE_disconnect (h); 50 GNUNET_PEERSTORE_disconnect (h);
47 GNUNET_SCHEDULER_shutdown (); 51 GNUNET_SCHEDULER_shutdown ();
@@ -49,14 +53,27 @@ disconnect ()
49 53
50 54
51static void 55static void
56store_cont (void *cls, int ret)
57{
58 count_fin++;
59 if (count_fin == count)
60 {
61 ok = 0;
62 GNUNET_SCHEDULER_add_now (&disconnect, NULL);
63 }
64}
65
66
67static void
52store () 68store ()
53{ 69{
70 count++;
54 GNUNET_PEERSTORE_store (h, ss, &p, k, v, strlen (v) + 1, 71 GNUNET_PEERSTORE_store (h, ss, &p, k, v, strlen (v) + 1,
55 GNUNET_TIME_UNIT_FOREVER_ABS, 72 GNUNET_TIME_UNIT_FOREVER_ABS,
56 (count == 73 (count ==
57 0) ? GNUNET_PEERSTORE_STOREOPTION_REPLACE : 74 0) ? GNUNET_PEERSTORE_STOREOPTION_REPLACE :
58 GNUNET_PEERSTORE_STOREOPTION_MULTIPLE, NULL, NULL); 75 GNUNET_PEERSTORE_STOREOPTION_MULTIPLE, store_cont,
59 count++; 76 NULL);
60} 77}
61 78
62 79
@@ -65,12 +82,7 @@ watch_cb (void *cls, const struct GNUNET_PEERSTORE_Record *record,
65 const char *emsg) 82 const char *emsg)
66{ 83{
67 GNUNET_assert (NULL == emsg); 84 GNUNET_assert (NULL == emsg);
68 if (STORES == count) 85 if (STORES > count)
69 {
70 ok = 0;
71 disconnect ();
72 }
73 else
74 store (); 86 store ();
75} 87}
76 88
@@ -82,7 +94,7 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg,
82 memset (&p, 5, sizeof(p)); 94 memset (&p, 5, sizeof(p));
83 h = GNUNET_PEERSTORE_connect (cfg); 95 h = GNUNET_PEERSTORE_connect (cfg);
84 GNUNET_assert (NULL != h); 96 GNUNET_assert (NULL != h);
85 GNUNET_PEERSTORE_watch (h, ss, &p, k, &watch_cb, NULL); 97 wc = GNUNET_PEERSTORE_watch (h, ss, &p, k, &watch_cb, NULL);
86 store (); 98 store ();
87} 99}
88 100