3 #include <sys/socket.h>
4 #include <netinet/in.h>
8 extern objstr_t *mainobjstore;
9 typedef struct testobj1 {
14 typedef struct testobj2 {
20 typedef struct testobj3 {
26 typedef struct testobj4 {
32 typedef struct testobj5 {
37 int classsize[]={sizeof(int),sizeof(char),sizeof(short), sizeof(void *), sizeof(testobj1_t),
38 sizeof(testobj2_t), sizeof(testobj3_t), sizeof(testobj4_t), sizeof(testobj5_t)};
41 //int classsize[]={sizeof(int),sizeof(char),sizeof(short), sizeof(void *)};
47 unsigned int createObjects(transrecord_t *record, unsigned short type) {
48 objheader_t *header, *tmp;
49 struct sockaddr_in antelope;
50 unsigned int size, mid;
51 size = sizeof(objheader_t) + classsize[type] ;
52 //Inserts in chashtable
53 header = transCreateObj(record, type);
54 tmp = (objheader_t *) objstrAlloc(mainobjstore, size);
55 memcpy(tmp, header, size);
56 mhashInsert(tmp->oid, tmp);
57 mid = iptoMid("128.200.9.10");
58 lhashInsert(tmp->oid, mid);
61 // tmp->status |= LOCK;
65 void init_obj(objheader_t *h, unsigned int oid, unsigned short type, \
66 unsigned short version,\
67 unsigned short rcount, char status) {
87 transrecord_t *myTrans;
88 pthread_t thread_Listen;
91 pthread_create(&thread_Listen, NULL, dstmListen, NULL);
93 myTrans = transStart();
95 printf("Creating Transaction\n");
97 if((val = createObjects(myTrans, 0)) != 0) {
98 printf("Error transCreateObj1");
101 if((val = createObjects(myTrans, 1)) != 0) {
102 printf("Error transCreateObj2");
105 if((val = createObjects(myTrans, 2)) != 0) {
106 printf("Error transCreateObj3");
109 if((val = createObjects(myTrans, 3)) != 0) {
110 printf("Error transCreateObj4");
113 if((val = createObjects(myTrans, 0)) != 0) {
114 printf("Error transCreateObj5");
117 if((val = createObjects(myTrans, 1)) != 0) {
118 printf("Error transCreateObj6");
120 pthread_join(thread_Listen, NULL);
126 unsigned int val, mid;
127 transrecord_t *myTrans;
128 pthread_t thread_Listen;
131 mid = iptoMid("128.200.9.27"); //d-2.eecs.uci.edu
132 //Inserting into lhashtable
133 lhashInsert(20, mid);
134 lhashInsert(21, mid);
135 lhashInsert(22, mid);
136 lhashInsert(23, mid);
137 lhashInsert(30, mid);
138 lhashInsert(28, mid);
139 lhashInsert(29, mid);
140 pthread_create(&thread_Listen, NULL, dstmListen, NULL);
142 myTrans = transStart();
144 printf("Creating Transaction\n");
146 if((val = createObjects(myTrans, 0)) != 0) {
147 printf("Error transCreateObj1");
150 if((val = createObjects(myTrans, 1)) != 0) {
151 printf("Error transCreateObj2");
154 if((val = createObjects(myTrans, 2)) != 0) {
155 printf("Error transCreateObj3");
158 if((val = createObjects(myTrans, 3)) != 0) {
159 printf("Error transCreateObj4");
162 if((val = createObjects(myTrans, 0)) != 0) {
163 printf("Error transCreateObj5");
166 if((val = createObjects(myTrans, 1)) != 0) {
167 printf("Error transCreateObj6");
169 pthread_join(thread_Listen, NULL);
171 //Commit transaction with all locally available objects
173 unsigned int val, mid;
174 transrecord_t *myTrans;
177 pthread_t thread_Listen;
179 objheader_t *h1, *h2, *h3;//h1,h2,h3 from local
182 pthread_attr_init(&attr);
183 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
185 // Create and Insert Oid 1
186 size = sizeof(objheader_t) + classsize[0] ;
187 header = (objheader_t *) objstrAlloc(mainobjstore, size);
188 init_obj(header, 1, 0, 1, 0, NEW);
189 mhashInsert(header->oid, header);
190 mid = iptoMid("128.200.9.10");
191 lhashInsert(header->oid, mid);
193 // Create and Insert Oid 2
194 size = sizeof(objheader_t) + classsize[1] ;
195 header = (objheader_t *) objstrAlloc(mainobjstore, size);
196 init_obj(header, 2, 1, 1, 0, NEW);
197 mhashInsert(header->oid, header);
198 mid = iptoMid("128.200.9.10");
199 lhashInsert(header->oid, mid);
202 // Create and Insert Oid 3
203 size = sizeof(objheader_t) + classsize[2] ;
204 header = (objheader_t *) objstrAlloc(mainobjstore, size);
205 init_obj(header, 3, 2, 1, 0, NEW);
206 mhashInsert(header->oid, header);
207 mid = iptoMid("128.200.9.10");
208 lhashInsert(header->oid, mid);
210 // Create and Insert Oid 4
211 size = sizeof(objheader_t) + classsize[3] ;
212 header = (objheader_t *) objstrAlloc(mainobjstore, size);
213 init_obj(header, 4, 3, 1, 0, NEW);
214 mhashInsert(header->oid, header);
215 mid = iptoMid("128.200.9.10");
216 lhashInsert(header->oid, mid);
218 //Inserting into lhashtable
219 mid = iptoMid("128.195.175.70"); //dw-2.eecs.uci.edu
220 lhashInsert(20, mid);
221 lhashInsert(21, mid);
222 lhashInsert(22, mid);
224 mid = iptoMid("128.195.175.69"); //dw-1.eecs.uci.edu
225 //Inserting into lhashtable
226 lhashInsert(31, mid);
227 lhashInsert(32, mid);
228 lhashInsert(33, mid);
229 pthread_create(&thread_Listen, &attr, dstmListen, NULL);
231 //Check if machine dw-1 is up and running
232 checkServer(mid, "128.195.175.69");
233 mid = iptoMid("128.195.175.70");
234 //Check if machine dw-2 is up and running
235 checkServer(mid, "128.195.175.70");
238 myTrans = transStart();
240 //read object 1(present in local machine)
241 if((h1 = transRead(myTrans, 1)) == NULL){
242 printf("Object not found\n");
244 //read object 2present in local machine)
245 if((h2 = transRead(myTrans, 2)) == NULL) {
246 printf("Object not found\n");
248 //read object 3(present in local machine)
249 if((h3 = transRead(myTrans, 3)) == NULL) {
250 printf("Object not found\n");
253 // Commit transaction
254 transCommit(myTrans);
256 pthread_join(thread_Listen, NULL);
261 //Commit transaction with few locally available objects and other objects from machine d-1
265 unsigned int val, mid;
266 transrecord_t *myTrans;
269 pthread_t thread_Listen;
271 objheader_t *h1, *h2, *h3, *h4;//h1,h2 from local ; h3 from d-1 , h-4 from d-2
275 pthread_attr_init(&attr);
276 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
278 // Create and Insert Oid 1
279 size = sizeof(objheader_t) + classsize[0] ;
280 header = (objheader_t *) objstrAlloc(mainobjstore, size);
281 init_obj(header, 1, 0, 1, 0, NEW);
282 mhashInsert(header->oid, header);
283 mid = iptoMid("128.200.9.10");
284 lhashInsert(header->oid, mid);
286 // Create and Insert Oid 2
287 size = sizeof(objheader_t) + classsize[1] ;
288 header = (objheader_t *) objstrAlloc(mainobjstore, size);
289 init_obj(header, 2, 1, 1, 0, NEW);
290 mhashInsert(header->oid, header);
291 mid = iptoMid("128.200.9.10");
292 lhashInsert(header->oid, mid);
295 // Create and Insert Oid 3
296 size = sizeof(objheader_t) + classsize[2] ;
297 header = (objheader_t *) objstrAlloc(mainobjstore, size);
298 init_obj(header, 3, 2, 1, 0, NEW);
299 mhashInsert(header->oid, header);
300 mid = iptoMid("128.200.9.10");
301 lhashInsert(header->oid, mid);
303 // Create and Insert Oid 4
304 size = sizeof(objheader_t) + classsize[3] ;
305 header = (objheader_t *) objstrAlloc(mainobjstore, size);
306 init_obj(header, 4, 3, 1, 0, NEW);
307 mhashInsert(header->oid, header);
308 mid = iptoMid("128.200.9.10");
309 lhashInsert(header->oid, mid);
311 //Inserting into lhashtable
312 mid = iptoMid("128.195.175.70"); //dw-2.eecs.uci.edu
313 lhashInsert(20, mid);
314 lhashInsert(21, mid);
315 lhashInsert(22, mid);
317 mid = iptoMid("128.195.175.69"); //dw-1.eecs.uci.edu
318 //Inserting into lhashtable
319 lhashInsert(31, mid);
320 lhashInsert(32, mid);
321 lhashInsert(33, mid);
323 pthread_create(&thread_Listen, &attr, dstmListen, NULL);
324 //Check if machine dw-1 is up and running
325 checkServer(mid, "128.195.175.69");
326 mid = iptoMid("128.195.175.70");
327 //Check if machine dw-2 is up and running
328 checkServer(mid, "128.195.175.70");
331 myTrans = transStart();
333 //read object 1(present in local machine)
334 if((h1 = transRead(myTrans, 2)) == NULL){
335 printf("Object not found\n");
338 //read object 2present in local machine)
339 if((h2 = transRead(myTrans, 1)) == NULL) {
340 printf("Object not found\n");
342 //read object 31(present in dw-1 machine)
343 if((h3 = transRead(myTrans, 31)) == NULL) {
344 printf("Object not found\n");
346 //read object 21(present in dw-2 machine)
347 if((h4 = transRead(myTrans, 21)) == NULL) {
348 printf("Object not found\n");
351 // Commit transaction
352 transCommit(myTrans);
354 pthread_join(thread_Listen, NULL);
360 unsigned int val, mid;
361 transrecord_t *myTrans;
364 pthread_t thread_Listen;
366 objheader_t *h1, *h2, *h3, *h4, *h5;
369 pthread_attr_init(&attr);
370 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
372 mid = iptoMid("128.200.9.27"); //d-2.eecs.uci.edu
373 //Inserting into lhashtable
374 lhashInsert(20, mid);
375 lhashInsert(21, mid);
376 lhashInsert(22, mid);
378 mid = iptoMid("128.200.9.26"); //d-1.eecs.uci.edu
379 //Inserting into lhashtable
380 lhashInsert(31, mid);
381 lhashInsert(32, mid);
382 lhashInsert(33, mid);
383 pthread_create(&thread_Listen, &attr, dstmListen, NULL);
385 printf("DEBUG -> mid = %d\n", mid);
386 checkServer(mid, "128.200.9.26");
387 mid = iptoMid("128.200.9.27");
388 printf("DEBUG -> mid = %d\n", mid);
389 checkServer(mid, "128.200.9.27");
392 myTrans = transStart();
394 // Create and Insert Oid 1
395 size = sizeof(objheader_t) + classsize[0] ;
396 header = (objheader_t *) objstrAlloc(mainobjstore, size);
397 init_obj(header, 1, 0, 1, 0, NEW);
398 mhashInsert(header->oid, header);
399 mid = iptoMid("128.200.9.10");
400 lhashInsert(header->oid, mid);
402 // Create and Insert Oid 2
403 size = sizeof(objheader_t) + classsize[1] ;
404 header = (objheader_t *) objstrAlloc(mainobjstore, size);
405 init_obj(header, 2, 1, 1, 0, NEW);
406 mhashInsert(header->oid, header);
407 mid = iptoMid("128.200.9.10");
408 lhashInsert(header->oid, mid);
411 // Create and Insert Oid 3
412 size = sizeof(objheader_t) + classsize[2] ;
413 header = (objheader_t *) objstrAlloc(mainobjstore, size);
414 init_obj(header, 3, 2, 1, 0, NEW);
415 mhashInsert(header->oid, header);
416 mid = iptoMid("128.200.9.10");
417 lhashInsert(header->oid, mid);
419 // Create and Insert Oid 4
420 size = sizeof(objheader_t) + classsize[3] ;
421 header = (objheader_t *) objstrAlloc(mainobjstore, size);
422 init_obj(header, 4, 3, 1, 0, NEW);
423 mhashInsert(header->oid, header);
424 mid = iptoMid("128.200.9.10");
425 lhashInsert(header->oid, mid);
427 // Create and Insert Oid 5
428 size = sizeof(objheader_t) + classsize[0] ;
429 header = (objheader_t *) objstrAlloc(mainobjstore, size);
430 init_obj(header, 5, 0, 1, 0, NEW);
431 mhashInsert(header->oid, header);
432 mid = iptoMid("128.200.9.10");
433 lhashInsert(header->oid, mid);
435 // Create and Insert Oid 6
436 size = sizeof(objheader_t) + classsize[1] ;
437 header = (objheader_t *) objstrAlloc(mainobjstore, size);
438 init_obj(header, 6, 1, 1, 0, NEW);
439 mhashInsert(header->oid, header);
440 mid = iptoMid("128.200.9.10");
441 lhashInsert(header->oid, mid);
443 //read object 1(present in local machine)
444 if((h1 = transRead(myTrans, 1)) == NULL){
445 printf("Object not found\n");
447 //read object 2present in local machine)
448 if((h2 = transRead(myTrans, 2)) == NULL) {
449 printf("Object not found\n");
451 //read object 3(present in local machine)
452 if((h3 = transRead(myTrans, 3)) == NULL) {
453 printf("Object not found\n");
455 //read object 31 (present in d-1. eecs)
456 if((h4 = transRead(myTrans, 31)) == NULL) {
457 printf("Object not found\n");
459 //read object 20 (present in d-2. eecs)
460 if((h5 = transRead(myTrans, 20)) == NULL) {
461 printf("Object not found\n");
464 transCommit(myTrans);
466 pthread_join(thread_Listen, NULL);