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 / debug30.c < prev    next >
C/C++ Source or Header  |  2005-09-27  |  5KB  |  233 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 <string.h>
  10. #include <pvfs2-types.h>
  11. #include <gossip.h>
  12. #include <pvfs2-debug.h>
  13.  
  14. #include <pint-distribution.h>
  15. #include <pint-dist-utils.h>
  16. #include <pvfs2-request.h>
  17. #include <pint-request.h>
  18.  
  19. #include <debug.h>
  20.  
  21. #define SEGMAX 2
  22. #define BYTEMAX (1024*1024)
  23.  
  24. PVFS_offset exp1_offset[] =
  25. {
  26.         0, 49152, 98304, 147456, 163328, 196608,
  27.         245760, 294912, 344064, 359936
  28. };
  29. PVFS_offset exp1_size[] =
  30. {
  31.         16384, 16384, 16384, 15872, 512, 16384,
  32.         16384, 16384, 15872, 512
  33. };
  34. PINT_Request_result expected[] =
  35. {{
  36.        offset_array : &exp1_offset[0],
  37.        size_array : &exp1_size[0],
  38.        segmax : SEGMAX,
  39.        segs : 2,
  40.        bytes : 32768
  41. },{
  42.        offset_array : &exp1_offset[2],
  43.        size_array : &exp1_size[2],
  44.        segmax : SEGMAX,
  45.        segs : 2,
  46.        bytes : 32256
  47. },{
  48.        offset_array : &exp1_offset[4],
  49.        size_array : &exp1_size[4],
  50.        segmax : SEGMAX,
  51.        segs : 2,
  52.        bytes : 16896
  53. },{
  54.        offset_array : &exp1_offset[6],
  55.        size_array : &exp1_size[6],
  56.        segmax : SEGMAX,
  57.        segs : 2,
  58.        bytes : 32768
  59. },{
  60.        offset_array : &exp1_offset[8],
  61.        size_array : &exp1_size[8],
  62.        segmax : SEGMAX,
  63.        segs : 1,
  64.        bytes : 15872
  65. },{
  66.        offset_array : &exp1_offset[9],
  67.        size_array : &exp1_size[9],
  68.        segmax : SEGMAX,
  69.        segs : 1,
  70.        bytes : 512
  71. }};
  72.  
  73. int request_debug(void)
  74. {
  75.     int i;
  76.     PINT_Request *r, *m;
  77.     PINT_Request *r_enc, *m_enc;
  78.     PINT_Request_state *rs1, *ms1;
  79.     PINT_request_file_data rf1;
  80.     PINT_Request_result seg1;
  81.     int ret = -1;
  82.     int pack_size = 0;
  83.  
  84.     /* PVFS_Process_request arguments */
  85.     int retval;
  86.  
  87.    /* Turn on debugging */
  88.     if (gossipflag)
  89.     {
  90.         gossip_enable_stderr();
  91.         gossip_set_debug_mask(1,GOSSIP_REQUEST_DEBUG);
  92.     }
  93.  
  94.     PVFS_Request_contiguous(1, PVFS_BYTE, &r);
  95.     pack_size = PINT_REQUEST_PACK_SIZE(r);
  96.     r_enc = (PINT_Request*)malloc(pack_size);
  97.     ret = PINT_request_commit(r_enc, r);
  98.     PVFS_Request_free(&r);
  99.  
  100.     /* set up request state */
  101.     rs1 = PINT_new_request_state(r_enc);
  102.  
  103.     PINT_REQUEST_STATE_SET_TARGET(rs1, 512);
  104.     PINT_REQUEST_STATE_SET_FINAL(rs1, 0);
  105.  
  106.     /* set up mem type */
  107.     PVFS_Request_vector(8, 16*1024, 48*1024, PVFS_BYTE, &m);
  108.     pack_size = PINT_REQUEST_PACK_SIZE(m);
  109.     m_enc = (PINT_Request*)malloc(pack_size);
  110.     ret = PINT_request_commit(m_enc, m);
  111.     PVFS_Request_free(&m);
  112.  
  113.     /* set up mem type state */
  114.     ms1 = PINT_new_request_state(m_enc);
  115.  
  116.     /* set up file data for each server */
  117.     PINT_dist_initialize(NULL);
  118.     rf1.server_nr = 0;
  119.     rf1.server_ct = 4;
  120.     rf1.fsize = 0;
  121.     rf1.dist = PINT_dist_create("simple_stripe");
  122.     rf1.extend_flag = 1;
  123.     PINT_dist_lookup(rf1.dist);
  124.  
  125.     /* set up response for each server */
  126.     seg1.offset_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  127.     seg1.size_array = (int64_t *)malloc(SEGMAX * sizeof(int64_t));
  128.     seg1.segmax = SEGMAX;
  129.     seg1.bytemax = BYTEMAX;
  130.     seg1.segs = 0;
  131.     seg1.bytes = 0;
  132.  
  133.     i = 0;
  134.  
  135.     printf("\n************************************\n");
  136.     printf("one request in CLIENT mode \n");
  137.     printf("Simple stripe, default stripe size (64K)\n");
  138.     printf("Contig request\n");
  139.     printf("Contig Memtype\n");
  140.     printf("Each from offset 0, file size 0, extend flag\n");
  141.     printf("Server 0\n");
  142.     printf("************************************\n");
  143.     do
  144.     {
  145.         seg1.bytes = 0;
  146.         seg1.segs = 0;
  147.  
  148.         /* process request */
  149.         /* note that bytemax is exactly large enough to hold all of the
  150.          * data that I should find here
  151.          */
  152.         retval = PINT_process_request(rs1, ms1, &rf1, &seg1, PINT_CLIENT);
  153.  
  154.         if(retval >= 0)
  155.         {
  156.             prtseg(&seg1,"Results obtained");
  157.             prtseg(&expected[i],"Results expected");
  158.             cmpseg(&seg1,&expected[i]);
  159.         }
  160.  
  161.         i++;
  162.  
  163.     } while(!PINT_REQUEST_DONE(rs1)); 
  164.  
  165.     printf("\n************************************\n");
  166.     printf("Server 1\n");
  167.     printf("************************************\n");
  168.     PINT_REQUEST_STATE_RESET(rs1);
  169.     PINT_REQUEST_STATE_RESET(ms1);
  170.     rf1.server_nr = 1;
  171.     do
  172.     {
  173.         seg1.bytes = 0;
  174.         seg1.segs = 0;
  175.  
  176.         /* process request */
  177.         /* note that bytemax is exactly large enough to hold all of the
  178.          * data that I should find here
  179.          */
  180.         retval = PINT_process_request(rs1, ms1, &rf1, &seg1, PINT_CLIENT);
  181.  
  182.         if(retval >= 0)
  183.         {
  184.             prtseg(&seg1,"Results obtained");
  185.             prtseg(&expected[i],"Results expected");
  186.             cmpseg(&seg1,&expected[i]);
  187.         }
  188.  
  189.         i++;
  190.  
  191.     } while(!PINT_REQUEST_DONE(rs1)); 
  192.  
  193.     printf("\n************************************\n");
  194.     printf("Server 2\n");
  195.     printf("************************************\n");
  196.     PINT_REQUEST_STATE_RESET(rs1);
  197.     PINT_REQUEST_STATE_RESET(ms1);
  198.     rf1.server_nr = 2;
  199.     do
  200.     {
  201.         seg1.bytes = 0;
  202.         seg1.segs = 0;
  203.  
  204.         /* process request */
  205.         /* note that bytemax is exactly large enough to hold all of the
  206.          * data that I should find here
  207.          */
  208.         retval = PINT_process_request(rs1, ms1, &rf1, &seg1, PINT_CLIENT);
  209.  
  210.         if(retval >= 0)
  211.         {
  212.             prtseg(&seg1,"Results obtained");
  213.             prtseg(&expected[i],"Results expected");
  214.             cmpseg(&seg1,&expected[i]);
  215.         }
  216.  
  217.         i++;
  218.  
  219.     } while(!PINT_REQUEST_DONE(rs1)); 
  220.     
  221.     if(retval < 0)
  222.     {
  223.         fprintf(stderr, "Error: PINT_process_request() failure.\n");
  224.         return(-1);
  225.     }
  226.     if(PINT_REQUEST_DONE(rs1))
  227.     {
  228.         printf("**** first request done.\n");
  229.     }
  230.  
  231.     return 0;
  232. }
  233.