aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-10-14 09:43:29 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-10-14 09:43:29 +0000
commit80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c (patch)
tree1cae690fc5094411a2b91024d7d7713262c00c02
parent03aa0cd22bdf00a0ed5f716eadcfa97d89660399 (diff)
downloadgnunet-80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c.tar.gz
gnunet-80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c.zip
-rw-r--r--src/ats/test_ats_api_bandwidth_consumption.c93
-rw-r--r--src/ats/test_ats_api_scheduling.c2
2 files changed, 77 insertions, 18 deletions
diff --git a/src/ats/test_ats_api_bandwidth_consumption.c b/src/ats/test_ats_api_bandwidth_consumption.c
index 5ff19fd83..5952237f4 100644
--- a/src/ats/test_ats_api_bandwidth_consumption.c
+++ b/src/ats/test_ats_api_bandwidth_consumption.c
@@ -28,7 +28,7 @@
28#include "gnunet_ats_service.h" 28#include "gnunet_ats_service.h"
29#include "ats.h" 29#include "ats.h"
30 30
31#define VERBOSE GNUNET_YES 31#define VERBOSE GNUNET_EXTRA_LOGGING
32 32
33#define VERBOSE_ARM GNUNET_EXTRA_LOGGING 33#define VERBOSE_ARM GNUNET_EXTRA_LOGGING
34 34
@@ -36,15 +36,21 @@
36 36
37static GNUNET_SCHEDULER_TaskIdentifier die_task; 37static GNUNET_SCHEDULER_TaskIdentifier die_task;
38 38
39static GNUNET_SCHEDULER_TaskIdentifier consume_task;
40
39static struct GNUNET_ATS_SchedulingHandle *ats; 41static struct GNUNET_ATS_SchedulingHandle *ats;
40 42
41static struct GNUNET_ATS_PerformanceHandle *atp; 43static struct GNUNET_ATS_PerformanceHandle *atp;
42 44
45struct GNUNET_ATS_ReservationContext *sh;
46
43static struct GNUNET_OS_Process * arm_proc; 47static struct GNUNET_OS_Process * arm_proc;
44 48
45static struct GNUNET_BANDWIDTH_Value32NBO bw_in; 49static struct PeerContext * p;
46 50
47static struct GNUNET_BANDWIDTH_Value32NBO bw_out; 51static uint32_t bw_in;
52
53static uint32_t bw_out;
48 54
49static int ret; 55static int ret;
50 56
@@ -85,11 +91,24 @@ static void
85end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 91end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
86{ 92{
87 die_task = GNUNET_SCHEDULER_NO_TASK; 93 die_task = GNUNET_SCHEDULER_NO_TASK;
94
95 if (consume_task != GNUNET_SCHEDULER_NO_TASK)
96 {
97 GNUNET_SCHEDULER_cancel(consume_task);
98 consume_task = GNUNET_SCHEDULER_NO_TASK;
99 }
100
101 if (sh != NULL)
102 GNUNET_ATS_reserve_bandwidth_cancel(sh);
103
88 if (ats != NULL) 104 if (ats != NULL)
89 GNUNET_ATS_scheduling_done (ats); 105 GNUNET_ATS_scheduling_done (ats);
90 if (atp != NULL) 106 if (atp != NULL)
91 GNUNET_ATS_performance_done (atp); 107 GNUNET_ATS_performance_done (atp);
92 108
109 GNUNET_free (p->addr);
110 GNUNET_free (p);
111
93 ret = GNUNET_SYSERR; 112 ret = GNUNET_SYSERR;
94 113
95 stop_arm (); 114 stop_arm ();
@@ -105,10 +124,19 @@ end ()
105 die_task = GNUNET_SCHEDULER_NO_TASK; 124 die_task = GNUNET_SCHEDULER_NO_TASK;
106 } 125 }
107 126
127 if (consume_task != GNUNET_SCHEDULER_NO_TASK)
128 {
129 GNUNET_SCHEDULER_cancel(consume_task);
130 consume_task = GNUNET_SCHEDULER_NO_TASK;
131 }
132
108 GNUNET_ATS_scheduling_done (ats); 133 GNUNET_ATS_scheduling_done (ats);
109 134
110 GNUNET_ATS_performance_done (atp); 135 GNUNET_ATS_performance_done (atp);
111 136
137 GNUNET_free (p->addr);
138 GNUNET_free (p);
139
112 ret = 0; 140 ret = 0;
113 141
114 stop_arm (); 142 stop_arm ();
@@ -135,6 +163,34 @@ void performance_cb (void *cls,
135 163
136} 164}
137 165
166void reservation_cb (void *cls,
167 const struct
168 GNUNET_PeerIdentity *
169 peer,
170 int32_t amount,
171 struct
172 GNUNET_TIME_Relative
173 res_delay)
174{
175 sh = NULL;
176 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS reserved bandwidth of %i to peer `%s' in %llu ms\n",
177 amount,
178 GNUNET_i2s (peer),
179 res_delay.rel_value);
180}
181
182static void
183consume_bandwidth (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
184{
185 consume_task = GNUNET_SCHEDULER_NO_TASK;
186 int32_t to_reserve = 500;
187 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Trying to reserver bandwidth of %i to peer `%s' in %llu ms\n",
188 to_reserve,
189 GNUNET_i2s (&p->id));
190
191 sh = GNUNET_ATS_reserve_bandwidth (atp, &p->id, to_reserve, &reservation_cb, NULL);
192}
193
138static void 194static void
139address_suggest_cb (void *cls, 195address_suggest_cb (void *cls,
140 const struct 196 const struct
@@ -158,8 +214,10 @@ address_suggest_cb (void *cls,
158{ 214{
159 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS suggested address for peer `%s'\n", GNUNET_i2s (peer)); 215 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS suggested address for peer `%s'\n", GNUNET_i2s (peer));
160 216
161 bw_in = bandwidth_in; 217 bw_in = ntohl (bandwidth_in.value__);
162 bw_out = bandwidth_out; 218 bw_out = ntohl (bandwidth_out.value__);
219
220 consume_task = GNUNET_SCHEDULER_add_now(&consume_bandwidth, NULL);
163} 221}
164 222
165void 223void
@@ -178,8 +236,7 @@ check (void *cls, char *const *args, const char *cfgfile,
178 const struct GNUNET_CONFIGURATION_Handle *cfg) 236 const struct GNUNET_CONFIGURATION_Handle *cfg)
179{ 237{
180 ret = GNUNET_SYSERR; 238 ret = GNUNET_SYSERR;
181 struct Address addr; 239 struct Address *addr;
182 struct PeerContext p;
183 240
184 die_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT, &end_badly, NULL); 241 die_task = GNUNET_SCHEDULER_add_delayed(TIMEOUT, &end_badly, NULL);
185 start_arm (cfgfile); 242 start_arm (cfgfile);
@@ -192,6 +249,9 @@ check (void *cls, char *const *args, const char *cfgfile,
192 return; 249 return;
193 } 250 }
194 251
252 p = GNUNET_malloc (sizeof (struct PeerContext));
253 addr = GNUNET_malloc (sizeof (struct Address));
254
195 atp = GNUNET_ATS_performance_init (cfg, &performance_cb, NULL); 255 atp = GNUNET_ATS_performance_init (cfg, &performance_cb, NULL);
196 if (atp == NULL) 256 if (atp == NULL)
197 { 257 {
@@ -202,19 +262,18 @@ check (void *cls, char *const *args, const char *cfgfile,
202 } 262 }
203 263
204 /* set up peer */ 264 /* set up peer */
205 GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK, &p.id.hashPubKey); 265 GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK, &p->id.hashPubKey);
206
207 266
208 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n", GNUNET_i2s (&p.id)); 267 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n", GNUNET_i2s (&p->id));
209 p.addr = &addr; 268 p->addr = addr;
210 addr.plugin = "test"; 269 addr->plugin = "test";
211 addr.session = NULL; 270 addr->session = NULL;
212 addr.addr = NULL; 271 addr->addr = NULL;
213 addr.addr_len = 0; 272 addr->addr_len = 0;
214 273
215 GNUNET_ATS_address_update(ats, &p.id, addr.plugin, addr.addr, addr.addr_len, addr.session, NULL, 0); 274 GNUNET_ATS_address_update(ats, &p->id, addr->plugin, addr->addr, addr->addr_len, addr->session, NULL, 0);
216 275
217 GNUNET_ATS_suggest_address(ats, &p.id); 276 GNUNET_ATS_suggest_address(ats, &p->id);
218} 277}
219 278
220int 279int
diff --git a/src/ats/test_ats_api_scheduling.c b/src/ats/test_ats_api_scheduling.c
index 88bd8b7ba..68026e196 100644
--- a/src/ats/test_ats_api_scheduling.c
+++ b/src/ats/test_ats_api_scheduling.c
@@ -34,7 +34,7 @@
34#include "gnunet_ats_service.h" 34#include "gnunet_ats_service.h"
35#include "ats.h" 35#include "ats.h"
36 36
37#define VERBOSE GNUNET_YES 37#define VERBOSE GNUNET_EXTRA_LOGGING
38 38
39#define VERBOSE_ARM GNUNET_EXTRA_LOGGING 39#define VERBOSE_ARM GNUNET_EXTRA_LOGGING
40 40