diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-10-14 09:43:29 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-10-14 09:43:29 +0000 |
commit | 80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c (patch) | |
tree | 1cae690fc5094411a2b91024d7d7713262c00c02 | |
parent | 03aa0cd22bdf00a0ed5f716eadcfa97d89660399 (diff) | |
download | gnunet-80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c.tar.gz gnunet-80aa2dac8b2f8ab7fad3a4c951eb1ee3da4de59c.zip |
-rw-r--r-- | src/ats/test_ats_api_bandwidth_consumption.c | 93 | ||||
-rw-r--r-- | src/ats/test_ats_api_scheduling.c | 2 |
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 | ||
37 | static GNUNET_SCHEDULER_TaskIdentifier die_task; | 37 | static GNUNET_SCHEDULER_TaskIdentifier die_task; |
38 | 38 | ||
39 | static GNUNET_SCHEDULER_TaskIdentifier consume_task; | ||
40 | |||
39 | static struct GNUNET_ATS_SchedulingHandle *ats; | 41 | static struct GNUNET_ATS_SchedulingHandle *ats; |
40 | 42 | ||
41 | static struct GNUNET_ATS_PerformanceHandle *atp; | 43 | static struct GNUNET_ATS_PerformanceHandle *atp; |
42 | 44 | ||
45 | struct GNUNET_ATS_ReservationContext *sh; | ||
46 | |||
43 | static struct GNUNET_OS_Process * arm_proc; | 47 | static struct GNUNET_OS_Process * arm_proc; |
44 | 48 | ||
45 | static struct GNUNET_BANDWIDTH_Value32NBO bw_in; | 49 | static struct PeerContext * p; |
46 | 50 | ||
47 | static struct GNUNET_BANDWIDTH_Value32NBO bw_out; | 51 | static uint32_t bw_in; |
52 | |||
53 | static uint32_t bw_out; | ||
48 | 54 | ||
49 | static int ret; | 55 | static int ret; |
50 | 56 | ||
@@ -85,11 +91,24 @@ static void | |||
85 | end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 91 | end_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 | ||
166 | void 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 | |||
182 | static void | ||
183 | consume_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 | |||
138 | static void | 194 | static void |
139 | address_suggest_cb (void *cls, | 195 | address_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 | ||
165 | void | 223 | void |
@@ -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 | ||
220 | int | 279 | int |
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 | ||