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 / debug1.c < prev    next >
C/C++ Source or Header  |  2005-11-11  |  5KB  |  228 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. #include "pvfs2-dist-simple-stripe.h"
  18.  
  19. #include "debug.h"
  20. #include "pvfs2-internal.h"
  21.  
  22. #define SEGMAX 16
  23. #define BYTEMAX (4*1024*1024)
  24.  
  25. PVFS_offset exp1_offset[] =
  26. {
  27.     0,
  28.     4194304,
  29.     8388608
  30. };
  31.  
  32. PVFS_size exp1_size[] =
  33. {
  34.     4194304,
  35.     4194304,
  36.     2097152
  37. };
  38.  
  39. PVFS_size exp2_offset[] =
  40. {
  41.     10485760,
  42.     14680064,
  43.     18874368
  44. };
  45.  
  46. PINT_Request_result expected[] =
  47. {{
  48.     offset_array : &exp1_offset[0],
  49.     size_array : &exp1_size[0],
  50.     segmax : SEGMAX,
  51.     segs : 1,
  52.     bytes : 4194304
  53. }, {
  54.     offset_array : &exp1_offset[1],
  55.     size_array : &exp1_size[1],
  56.     segmax : SEGMAX,
  57.     segs : 1,
  58.     bytes : 4194304
  59. }, {
  60.     offset_array : &exp1_offset[2],
  61.     size_array : &exp1_size[2],
  62.     segmax : SEGMAX,
  63.     segs : 1,
  64.     bytes : 2097152
  65. }, {
  66.     offset_array : &exp2_offset[0],
  67.     size_array : &exp1_size[0],
  68.     segmax : SEGMAX,
  69.     segs : 1,
  70.     bytes : 4194304
  71. }, {
  72.     offset_array : &exp2_offset[1],
  73.     size_array : &exp1_size[1],
  74.     segmax : SEGMAX,
  75.     segs : 1,
  76.     bytes : 4194304
  77. }, {
  78.     offset_array : &exp2_offset[2],
  79.     size_array : &exp1_size[2],
  80.     segmax : SEGMAX,
  81.     segs : 1,
  82.     bytes : 2097152
  83. }};
  84.  
  85. int request_debug(void)
  86. {
  87.     int i;
  88.     PINT_Request *r1;
  89.     PINT_Request *r2;
  90.     PINT_Request_state *rs1;
  91.     PINT_Request_state *rs2;
  92.     PINT_request_file_data rf1;
  93.     PINT_request_file_data rf2;
  94.     PINT_Request_result seg1;
  95.     PINT_Request_result seg2;
  96.  
  97.     /* PVFS_Process_request arguments */
  98.     int retval;
  99.  
  100.     int32_t blocklength = 10*1024*1024; /* 10M */
  101.  
  102.     /* set up two requests */
  103.     PVFS_size displacement = 0;  /* first at offset zero */
  104.     PVFS_Request_indexed(1, &blocklength, &displacement, PVFS_BYTE, &r1);
  105.  
  106.     displacement = 10*1024*1024; /* next at 10M offset */
  107.     PVFS_Request_indexed(1, &blocklength, &displacement, PVFS_BYTE, &r2);
  108.  
  109.     /* set up two request states */
  110.     rs1 = PINT_new_request_state(r1);
  111.     rs2 = PINT_new_request_state(r2);
  112.  
  113.     /* set up file data for first request */
  114.     PINT_dist_initialize(NULL);
  115.     rf1.server_nr = 0;
  116.     rf1.server_ct = 1;
  117.     rf1.fsize = 0;
  118.     rf1.dist = PINT_dist_create("simple_stripe");
  119.     rf1.extend_flag = 1;
  120.     PINT_dist_lookup(rf1.dist);
  121.  
  122.     /* file data for second request is the same, except the file
  123.      * will have grown by 10M 
  124.      */
  125.     rf2.server_nr = 0;
  126.     rf2.server_ct = 1;
  127.     rf2.fsize = 10*1024*1024;
  128.     rf2.dist = PINT_dist_create("simple_stripe");
  129.     rf2.extend_flag = 1;
  130.     PINT_dist_lookup(rf2.dist);
  131.  
  132.     /* set up result structures */
  133.  
  134.     seg1.offset_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  135.     seg1.size_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  136.     seg1.segmax = SEGMAX;
  137.     seg1.bytemax = BYTEMAX;
  138.     seg1.segs = 0;
  139.     seg1.bytes = 0;
  140.  
  141.     seg2.offset_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  142.     seg2.size_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  143.     seg2.segmax = SEGMAX;
  144.     seg2.bytemax = BYTEMAX;
  145.     seg2.segs = 0;
  146.     seg2.bytes = 0;
  147.  
  148.    /* Turn on debugging */
  149.     if (gossipflag)
  150.     {
  151.         gossip_enable_stderr();
  152.         gossip_set_debug_mask(1,GOSSIP_REQUEST_DEBUG); 
  153.     }
  154.  
  155.     i = 0;
  156.  
  157.     printf("\n************************************\n");
  158.     printf("Testing simple contiguous read and byte limit of 4M\n");
  159.     printf("Two requests in SERVER mode 10M each contiguous server 0 of 1\n");
  160.     printf("Simple stripe, default stripe size (64K)\n");
  161.     printf("First from offset 0, file size 0, extend flag\n");
  162.     printf("\n************************************\n");
  163.     do
  164.     {
  165.         seg1.bytes = 0;
  166.         seg1.segs = 0;
  167.         /* process request */
  168.         retval = PINT_process_request(rs1, NULL, &rf1, &seg1, PINT_SERVER);
  169.  
  170.         if(retval >= 0)
  171.         {
  172.             prtseg(&seg1,"Results obtained");
  173.             prtseg(&expected[i],"Results expected");
  174.             cmpseg(&seg1,&expected[i]);
  175.         }
  176.  
  177.         i++;
  178.  
  179.     } while(!PINT_REQUEST_DONE(rs1) && retval >= 0);
  180.     if(retval < 0)
  181.     {
  182.         fprintf(stderr, "Error: PINT_process_request() failure.\n");
  183.         return(-1);
  184.     }
  185.     prtval(lld(rf1.fsize),"final file size obtained");
  186.     prtval(10485760,"final file size expected");
  187.     cmpval(lld(rf1.fsize),lld(10485760));
  188.     if(PINT_REQUEST_DONE(rs1))
  189.     {
  190.         printf("**** first request done.\n");
  191.     }
  192.     printf("\n************************************\n");
  193.     printf("Second from offset 10M, file size 10M, extend flag\n");
  194.     printf("\n************************************\n");
  195.     do
  196.     {
  197.         seg2.bytes = 0;
  198.         seg2.segs = 0;
  199.         /* process request */
  200.         retval = PINT_process_request(rs2, NULL, &rf2, &seg2, PINT_SERVER);
  201.  
  202.         if(retval >= 0)
  203.         {
  204.             prtseg(&seg2,"Results obtained");
  205.             prtseg(&expected[i],"Results expected");
  206.             cmpseg(&seg2,&expected[i]);
  207.         }
  208.  
  209.         i++;
  210.  
  211.     } while(!PINT_REQUEST_DONE(rs2) && retval >= 0);
  212.     
  213.     if(retval < 0)
  214.     {
  215.         fprintf(stderr, "Error: PINT_process_request() failure.\n");
  216.         return(-1);
  217.     }
  218.     prtval(lld(rf2.fsize),"final file size obtained");
  219.     prtval(20971520,"final file size expected");
  220.     cmpval(lld(rf2.fsize),lld(20971520));
  221.     if(PINT_REQUEST_DONE(rs2))
  222.     {
  223.         printf("**** second request done.\n");
  224.     }
  225.  
  226.     return 0;
  227. }
  228.