aboutsummaryrefslogtreecommitdiff
path: root/src/lockmanager
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-05-15 14:07:36 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-05-15 14:07:36 +0000
commitf536ece4ac20ca0b6bb3cb4aa7e075125c322d69 (patch)
treebe92d3ef6f4a164d031a7d069ad609b66975a156 /src/lockmanager
parent896f08906416a09cceab7447265fbe54dc883156 (diff)
downloadgnunet-f536ece4ac20ca0b6bb3cb4aa7e075125c322d69.tar.gz
gnunet-f536ece4ac20ca0b6bb3cb4aa7e075125c322d69.zip
handling replies continuously from server
Diffstat (limited to 'src/lockmanager')
-rw-r--r--src/lockmanager/lockmanager_api.c4
-rw-r--r--src/lockmanager/test_lockmanager_api.c70
-rw-r--r--src/lockmanager/test_lockmanager_api_servercrash.c3
3 files changed, 59 insertions, 18 deletions
diff --git a/src/lockmanager/lockmanager_api.c b/src/lockmanager/lockmanager_api.c
index b25904d7b..8e482a730 100644
--- a/src/lockmanager/lockmanager_api.c
+++ b/src/lockmanager/lockmanager_api.c
@@ -290,6 +290,10 @@ handle_replies (void *cls,
290 handle); 290 handle);
291 return; 291 return;
292 } 292 }
293 GNUNET_CLIENT_receive (handle->conn,
294 &handle_replies,
295 handle,
296 GNUNET_TIME_UNIT_FOREVER_REL);
293 if (GNUNET_MESSAGE_TYPE_LOCKMANAGER_SUCCESS != ntohs(msg->type)) 297 if (GNUNET_MESSAGE_TYPE_LOCKMANAGER_SUCCESS != ntohs(msg->type))
294 { 298 {
295 GNUNET_break (0); 299 GNUNET_break (0);
diff --git a/src/lockmanager/test_lockmanager_api.c b/src/lockmanager/test_lockmanager_api.c
index a5877af7e..9b6f311e4 100644
--- a/src/lockmanager/test_lockmanager_api.c
+++ b/src/lockmanager/test_lockmanager_api.c
@@ -38,10 +38,26 @@
38#define TIME_REL_SECONDS(min) \ 38#define TIME_REL_SECONDS(min) \
39 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, min) 39 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, min)
40 40
41
42/**
43 * Enumeration of testing steps
44 */
45enum Test
46 {
47 TEST_FAIL,
48
49 TEST_INIT,
50
51 LOCK1_ACQUIRE,
52
53 LOCK2_ACQUIRE
54 };
55
56
41/** 57/**
42 * The testing result 58 * The testing result
43 */ 59 */
44static int result; 60static enum Test result;
45 61
46/** 62/**
47 * The process id of the GNUNET ARM process 63 * The process id of the GNUNET ARM process
@@ -64,6 +80,11 @@ static struct GNUNET_LOCKMANAGER_Handle *handle;
64static struct GNUNET_LOCKMANAGER_LockingRequest *request; 80static struct GNUNET_LOCKMANAGER_LockingRequest *request;
65 81
66/** 82/**
83 * The second locking request
84 */
85static struct GNUNET_LOCKMANAGER_LockingRequest *request2;
86
87/**
67 * Abort task identifier 88 * Abort task identifier
68 */ 89 */
69static GNUNET_SCHEDULER_TaskIdentifier abort_task_id; 90static GNUNET_SCHEDULER_TaskIdentifier abort_task_id;
@@ -82,7 +103,10 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
82 GNUNET_SCHEDULER_cancel (abort_task_id); 103 GNUNET_SCHEDULER_cancel (abort_task_id);
83 abort_task_id = GNUNET_SCHEDULER_NO_TASK; 104 abort_task_id = GNUNET_SCHEDULER_NO_TASK;
84 } 105 }
85 106 if (NULL != request)
107 GNUNET_LOCKMANAGER_cancel_request (request);
108 if (NULL != request2)
109 GNUNET_LOCKMANAGER_cancel_request (request2);
86 GNUNET_LOCKMANAGER_disconnect (handle); 110 GNUNET_LOCKMANAGER_disconnect (handle);
87 if (0 != GNUNET_OS_process_kill (arm_pid, SIGTERM)) 111 if (0 != GNUNET_OS_process_kill (arm_pid, SIGTERM))
88 { 112 {
@@ -94,9 +118,6 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
94 118
95 if (NULL != config) 119 if (NULL != config)
96 GNUNET_CONFIGURATION_destroy (config); 120 GNUNET_CONFIGURATION_destroy (config);
97
98 if (GNUNET_SYSERR != result)
99 result = GNUNET_OK;
100} 121}
101 122
102 123
@@ -111,7 +132,7 @@ do_abort (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
111{ 132{
112 LOG (GNUNET_ERROR_TYPE_DEBUG, "Aborting test...\n"); 133 LOG (GNUNET_ERROR_TYPE_DEBUG, "Aborting test...\n");
113 abort_task_id = GNUNET_SCHEDULER_NO_TASK; 134 abort_task_id = GNUNET_SCHEDULER_NO_TASK;
114 result = GNUNET_SYSERR; 135 result = TEST_FAIL;
115 do_shutdown (cls, tc); 136 do_shutdown (cls, tc);
116} 137}
117 138
@@ -136,14 +157,31 @@ status_cb (void *cls,
136 LOG (GNUNET_ERROR_TYPE_DEBUG, 157 LOG (GNUNET_ERROR_TYPE_DEBUG,
137 "Status change callback called on lock: %d of domain: %s\n", 158 "Status change callback called on lock: %d of domain: %s\n",
138 lock, domain_name); 159 lock, domain_name);
139 GNUNET_assert (GNUNET_LOCKMANAGER_SUCCESS == status); 160 switch (result)
140 GNUNET_assert (NULL != request); 161 {
141 GNUNET_LOCKMANAGER_cancel_request (request); 162 case LOCK1_ACQUIRE:
142 request = NULL; 163 GNUNET_assert (GNUNET_LOCKMANAGER_SUCCESS == status);
143 164 GNUNET_assert (NULL != request);
144 GNUNET_SCHEDULER_add_delayed (TIME_REL_SECONDS (1), 165 //GNUNET_LOCKMANAGER_cancel_request (request);
145 &do_shutdown, 166 //request = NULL;
146 NULL); 167 result = LOCK2_ACQUIRE;
168 request2 = GNUNET_LOCKMANAGER_acquire_lock (handle,
169 "GNUNET_LOCKMANAGER_TESTING",
170 100,
171 &status_cb,
172 NULL);
173 GNUNET_assert (NULL != request2);
174 break;
175 case LOCK2_ACQUIRE:
176 GNUNET_assert (GNUNET_LOCKMANAGER_SUCCESS == status);
177 GNUNET_assert (NULL != request);
178 GNUNET_SCHEDULER_add_delayed (TIME_REL_SECONDS (1),
179 &do_shutdown,
180 NULL);
181 break;
182 default:
183 GNUNET_break (0);
184 }
147} 185}
148 186
149 187
@@ -158,7 +196,7 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
158{ 196{
159 handle = GNUNET_LOCKMANAGER_connect (config); 197 handle = GNUNET_LOCKMANAGER_connect (config);
160 GNUNET_assert (NULL != handle); 198 GNUNET_assert (NULL != handle);
161 199 result = LOCK1_ACQUIRE;
162 request = GNUNET_LOCKMANAGER_acquire_lock (handle, 200 request = GNUNET_LOCKMANAGER_acquire_lock (handle,
163 "GNUNET_LOCKMANAGER_TESTING", 201 "GNUNET_LOCKMANAGER_TESTING",
164 99, 202 99,
@@ -231,7 +269,7 @@ int main (int argc, char **argv)
231 ret); 269 ret);
232 return 1; 270 return 1;
233 } 271 }
234 if (GNUNET_SYSERR == result) 272 if (TEST_FAIL == result)
235 { 273 {
236 LOG (GNUNET_ERROR_TYPE_WARNING, "test failed\n"); 274 LOG (GNUNET_ERROR_TYPE_WARNING, "test failed\n");
237 return 1; 275 return 1;
diff --git a/src/lockmanager/test_lockmanager_api_servercrash.c b/src/lockmanager/test_lockmanager_api_servercrash.c
index 769e044e0..71e5f421d 100644
--- a/src/lockmanager/test_lockmanager_api_servercrash.c
+++ b/src/lockmanager/test_lockmanager_api_servercrash.c
@@ -182,7 +182,6 @@ status_cb (void *cls,
182 LOG (GNUNET_ERROR_TYPE_DEBUG, 182 LOG (GNUNET_ERROR_TYPE_DEBUG,
183 "Status change callback called on lock: %d of domain: %s\n", 183 "Status change callback called on lock: %d of domain: %s\n",
184 lock, domain_name); 184 lock, domain_name);
185 GNUNET_assert (GNUNET_LOCKMANAGER_SUCCESS == status);
186 switch (result) 185 switch (result)
187 { 186 {
188 case TEST_INIT: 187 case TEST_INIT:
@@ -317,7 +316,7 @@ int main (int argc, char **argv)
317 ret); 316 ret);
318 return 1; 317 return 1;
319 } 318 }
320 if (TEST_CLIENT2_LOCK_SUCCESS != result) 319 if (TEST_CLIENT2_SERVER_CRASH_SUCCESS != result)
321 { 320 {
322 LOG (GNUNET_ERROR_TYPE_WARNING, "test failed\n"); 321 LOG (GNUNET_ERROR_TYPE_WARNING, "test failed\n");
323 return 1; 322 return 1;