home *** CD-ROM | disk | FTP | other *** search
/ ftp.parl.clemson.edu / 2015-02-07.ftp.parl.clemson.edu.tar / ftp.parl.clemson.edu / pub / pvfs2 / orangefs-2.8.3-20110323.tar.gz / orangefs-2.8.3-20110323.tar / orangefs / test / io / description / debug4.c < prev    next >
C/C++ Source or Header  |  2005-07-07  |  5KB  |  277 lines

  1. /*
  2.  * (C) 2002 Clemson University.
  3.  *
  4.  * See COPYING in top-level directory.
  5.  */       
  6.  
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <pvfs2-types.h>
  10. #include <gossip.h>
  11. #include <pvfs2-debug.h>
  12.  
  13. #include <pint-distribution.h>
  14. #include <pint-dist-utils.h>
  15. #include <pvfs2-request.h>
  16. #include <pint-request.h>
  17.  
  18. #include <debug.h>
  19.  
  20. #define SEGMAX 16
  21. #define BYTEMAX (4*1024*1024)
  22.  
  23. PVFS_offset exp1_offset [] = {
  24.     0
  25. };
  26.  
  27. PVFS_offset exp2_offset [] = {
  28.     0,
  29.     196608,
  30.     393216,
  31.     589824,
  32.     786432,
  33.     983040,
  34.     1179648,
  35.     1376256,
  36.     1572864,
  37.     1769472,
  38.     1966080,
  39.     2162688,
  40.     2359296,
  41.     2555904,
  42.     2752512,
  43.     2949120,
  44.  
  45.     3145728,
  46.     3342336,
  47.     3538944,
  48.     3735552,
  49.     3932160,
  50.     4128768,
  51.     4325376,
  52.     4521984,
  53.     4718592,
  54.     4915200,
  55.     5111808,
  56.     5308416,
  57.     5505024,
  58.     5701632,
  59.     5898240,
  60.     6094848,
  61.  
  62.     6291456,
  63.     6488064,
  64.     6684672,
  65.     6881280,
  66.     7077888,
  67.     7274496,
  68.     7471104,
  69.     7667712,
  70.     7864320,
  71.     8060928,
  72.     8257536,
  73.     8454144,
  74.     8650752,
  75.     8847360,
  76.     9043968,
  77.     9240576,
  78.  
  79.     9437184,
  80.     9633792,
  81.     9830400,
  82.     10027008,
  83.     10223616,
  84.     10420224
  85. };
  86.  
  87. PVFS_size exp1_size [] =
  88. {
  89.     3538944
  90. };
  91.  
  92. PVFS_size exp2_size [] =
  93. {
  94.     65536,
  95.     65536,
  96.     65536,
  97.     65536,
  98.     65536,
  99.     65536,
  100.     65536,
  101.     65536,
  102.     65536,
  103.     65536,
  104.     65536,
  105.     65536,
  106.     65536,
  107.     65536,
  108.     65536,
  109.     65536,
  110.     65536
  111. };
  112.  
  113. PINT_Request_result expected[] =
  114. {{
  115.        offset_array : &exp1_offset[0],
  116.        size_array : &exp1_size[0],
  117.        segmax : SEGMAX,
  118.        segs : 1,
  119.        bytes : 3538944
  120.  }, {
  121.        offset_array : &exp2_offset[0],
  122.        size_array : &exp2_size[0],
  123.        segmax : SEGMAX,
  124.        segs : 16,
  125.        bytes : 65536*16
  126.  }, {
  127.        offset_array : &exp2_offset[16],
  128.        size_array : &exp2_size[0],
  129.        segmax : SEGMAX,
  130.        segs : 16,
  131.        bytes : 65536*16
  132.  }, {
  133.        offset_array : &exp2_offset[32],
  134.        size_array : &exp2_size[0],
  135.        segmax : SEGMAX,
  136.        segs : 16,
  137.        bytes : 65536*16
  138.  }, {
  139.        offset_array : &exp2_offset[48],
  140.        size_array : &exp2_size[0],
  141.        segmax : SEGMAX,
  142.        segs : 6,
  143.        bytes : 65536*6
  144. }};
  145.  
  146.  
  147. int request_debug(void)
  148. {
  149.     int i;
  150.     PINT_Request *r1;
  151.     PINT_Request *r2;
  152.     PINT_Request_state *rs1;
  153.     PINT_Request_state *rs2;
  154.     PINT_request_file_data rf1;
  155.     PINT_request_file_data rf2;
  156.     PINT_Request_result seg1;
  157.  
  158.     /* PVFS_Process_request arguments */
  159.     int retval;
  160.  
  161.     int32_t blocklength = 10*1024*1024; /* 10M */
  162.  
  163.     /* set up two requests, both at offset 0 */
  164.     PVFS_size displacement = 0;  /* first at offset zero */
  165.     PVFS_Request_indexed(1, &blocklength, &displacement, PVFS_BYTE, &r1);
  166.     PVFS_Request_indexed(1, &blocklength, &displacement, PVFS_BYTE, &r2);
  167.  
  168.     /* set up two request states */
  169.     rs1 = PINT_new_request_state(r1);
  170.     rs2 = PINT_new_request_state(r2);
  171.  
  172.     /* set up file data for first request */
  173.     PINT_dist_initialize(NULL);
  174.     rf1.server_nr = 0;
  175.     rf1.server_ct = 3;
  176.     rf1.fsize = 8454144;
  177.     rf1.dist = PINT_dist_create("simple_stripe");
  178.     rf1.extend_flag = 0;
  179.     PINT_dist_lookup(rf1.dist);
  180.  
  181.     /* file data for second request is the same, except the file
  182.      * will have grown by 10M 
  183.      */
  184.     rf2.server_nr = 0;
  185.     rf2.server_ct = 3;
  186.     rf2.fsize = 8454144;
  187.     rf2.dist = PINT_dist_create("simple_stripe");
  188.     rf2.extend_flag = 0;
  189.     PINT_dist_lookup(rf2.dist);
  190.  
  191.     /* set up result struct */
  192.     seg1.offset_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  193.     seg1.size_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  194.     seg1.bytemax = BYTEMAX;
  195.     seg1.segmax = SEGMAX;
  196.     seg1.bytes = 0;
  197.     seg1.segs = 0;
  198.  
  199.    /* Turn on debugging */
  200.     if (gossipflag)
  201.     {
  202.         gossip_enable_stderr(); 
  203.         gossip_set_debug_mask(1,GOSSIP_REQUEST_DEBUG); 
  204.     }
  205.  
  206.     i = 0;
  207.  
  208.     printf("\n************************************\n");
  209.     printf("Two requests 10M each contiguous from offset 0 server 0 of 3\n");
  210.     printf("Simple stripe, default stripe size (64K)\n");
  211.     printf("First in SERVER mode, file size 8454144, no extend flag\n");
  212.     printf("\n************************************\n");
  213.  
  214.     do
  215.     {
  216.         seg1.bytes = 0;
  217.         seg1.segs = 0;
  218.  
  219.         /* process request */
  220.         retval = PINT_process_request(rs1, NULL, &rf1, &seg1, PINT_SERVER);
  221.  
  222.         if(retval >= 0)
  223.         {
  224.             prtseg(&seg1,"Results obtained");
  225.             prtseg(&expected[i],"Results expected");
  226.             cmpseg(&seg1,&expected[i]);
  227.        }
  228.  
  229.       i++;
  230.  
  231.     } while(!PINT_REQUEST_DONE(rs1) && retval >= 0);
  232.     
  233.     if(retval < 0)
  234.     {
  235.         fprintf(stderr, "Error: PINT_process_request() failure.\n");
  236.         return(-1);
  237.     }
  238.     if(PINT_REQUEST_DONE(rs1))
  239.     {
  240.         printf("**** first request done.\n");
  241.     }
  242.  
  243.     printf("\n************************************\n");
  244.     printf("Second in CLIENT mode, file size 8454144, no extend flag\n");
  245.     printf("\n************************************\n");
  246.     do
  247.     {
  248.         seg1.bytes = 0;
  249.         seg1.segs = 0;
  250.  
  251.         /* process request */
  252.         retval = PINT_process_request(rs2, NULL, &rf2, &seg1, PINT_CLIENT);
  253.  
  254.         if(retval >= 0)
  255.         {
  256.             prtseg(&seg1,"Results obtained");
  257.             prtseg(&expected[i],"Results expected");
  258.             cmpseg(&seg1,&expected[i]);
  259.        }
  260.  
  261.       i++;
  262.  
  263.     } while(!PINT_REQUEST_DONE(rs2) && retval >= 0);
  264.     
  265.     if(retval < 0)
  266.     {
  267.         fprintf(stderr, "Error: PINT_process_request() failure.\n");
  268.         return(-1);
  269.     }
  270.     if(PINT_REQUEST_DONE(rs2))
  271.     {
  272.         printf("**** second request done.\n");
  273.     }
  274.  
  275.     return 0;
  276. }
  277.