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 / buffer / mt_test3.c < prev    next >
C/C++ Source or Header  |  2006-10-18  |  5KB  |  192 lines

  1. /* this test is used to test refill and flush */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "ncac-interface.h"
  6. #include "internal.h"
  7.  
  8. #include "trove.h"
  9.  
  10. #include "trove-init.c"
  11.  
  12. extern void   cache_dump_active_list(void);
  13. extern void   cache_dump_inactive_list(void);
  14.  
  15. TROVE_coll_id coll_id;
  16. TROVE_handle file_handle;
  17. TROVE_context_id trove_context;
  18.  
  19. int main(int argc, char *argv[])
  20. {
  21.     PVFS_offset offarr[100];
  22.     PVFS_size sizearr[100];
  23.  
  24.     cache_write_desc_t desc;
  25.  
  26.     cache_request_t request[100];
  27.     cache_reply_t reply[100];
  28.  
  29.     NCAC_info_t info;
  30.  
  31.     int ret;
  32.     int flag;
  33.     int i;
  34.  
  35.     int loop;
  36.     int comp = 0;
  37.  
  38.     trove_init( &coll_id, &file_handle, &trove_context );
  39.  
  40.     info.max_req_num = 1000;
  41.     info.extsize     = 32768;
  42.     info.cachesize   = 1048576;
  43.  
  44.     cache_init(&info);
  45.  
  46.     desc.coll_id        = coll_id;
  47.     desc.handle         = file_handle;
  48.     desc.context_id     = trove_context;
  49.  
  50.     desc.buffer = 0;
  51.     desc.len    = 0;
  52.  
  53.     desc.stream_array_count=1;
  54.     desc.stream_offset_array = offarr;
  55.     desc.stream_size_array = sizearr;
  56.     offarr[0] = 1024;
  57.     sizearr[0] = 65536;
  58.     
  59.  
  60.     loop = 16;
  61.  
  62.     /* first step: many writes to full the cache */
  63. for ( i=0; i< loop; i++ ) {
  64.     offarr[0] = i*65536;
  65.     ret = cache_write_post(&desc, &request[i], &reply[i], NULL);
  66.     if (ret<0){
  67.         fprintf(stderr, "cache_write_post error\n");
  68.     }else{
  69.         fprintf(stderr, "cache_write_post ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  70.     }
  71. }
  72.  
  73.    comp = 0; 
  74. while ( comp < loop ) {
  75.    for ( i=0; i < loop; i++ ) {
  76.         if ( request[i].status == NCAC_COMPLETE ) continue;
  77.         ret = cache_req_test(&request[i], &flag, &reply[i], NULL);
  78.         if (ret<0){
  79.             fprintf(stderr, "cache_req_test error\n");
  80.         }else{
  81.             fprintf(stderr, "cache_req_test ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  82.         }
  83.  
  84.         if ( flag ){
  85.             ret = cache_req_done(&request[i]);
  86.             if (ret<0){
  87.                 fprintf(stderr, "cache_req_done error\n");
  88.             }else{
  89.                 fprintf(stderr, "cache_req_done ok---\n");
  90.                 comp ++;
  91.             }
  92.         }
  93.     }
  94. }
  95.     cache_dump_active_list();
  96.     cache_dump_inactive_list();
  97.  
  98.  
  99.  
  100.     /* bring it to the active list */
  101. for ( i=0; i< loop; i++ ) {
  102.     offarr[0] = i*65536;
  103.     ret = cache_read_post((cache_read_desc_t*)&desc, &request[i], &reply[i], NULL);
  104.     if (ret<0){
  105.         fprintf(stderr, "cache_read_post error\n");
  106.     }else{
  107.         fprintf(stderr, "cache_read_post ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  108.     }
  109. }
  110.  
  111.     cache_dump_active_list();
  112.     cache_dump_inactive_list();
  113.  
  114.  
  115. for ( i=0; i< loop; i++ ) {
  116.     ret = cache_req_test(&request[i], &flag, &reply[i], NULL);
  117.     if (ret<0){
  118.         fprintf(stderr, "cache_req_test error\n");
  119.     }else{
  120.         fprintf(stderr, "cache_req_test ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  121.     }
  122.  
  123.     if ( flag ){
  124.         ret = cache_req_done(&request[i]);
  125.         if (ret<0){
  126.             fprintf(stderr, "cache_req_done error\n");
  127.         }else{
  128.             fprintf(stderr, "cache_req_done ok---\n");
  129.         }
  130.     }
  131. }
  132.  
  133.     cache_dump_active_list();
  134.     cache_dump_inactive_list();
  135.  
  136.  
  137.  
  138.     comp = 0;
  139.  
  140. /* refill inactive needed. */
  141. for ( i=0; i< loop; i++ ) {
  142.     offarr[0] = (i+loop)*65536;
  143.     ret = cache_read_post((cache_read_desc_t*)&desc, &request[i], &reply[i], NULL);
  144.     if (ret<0){
  145.         fprintf(stderr, "cache_read_post error\n");
  146.     }else{
  147.         fprintf(stderr, "cache_read_post ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  148.     }
  149. }
  150.  
  151.     cache_dump_active_list();
  152.     cache_dump_inactive_list();
  153.  
  154.  
  155. #if 1 
  156.     while ( comp < loop ) {
  157.         for ( i=0; i< loop; i++ ) {
  158.             if ( request[i].status == NCAC_COMPLETE ) continue;
  159.  
  160.             ret = cache_req_test(&request[i], &flag, &reply[i], NULL);
  161.             if (ret<0){
  162.                 fprintf(stderr, "cache_req_test error\n");
  163.                 return -1;
  164.             }else{
  165.                        fprintf(stderr, "cache_req_test ok: status: %d, cbufcnt=%d\n", request[i].status, reply[i].count);
  166.             }
  167.  
  168.             if ( flag ){
  169.                 ret = cache_req_done(&request[i]);
  170.                 if (ret<0){
  171.                     fprintf(stderr, "cache_req_done error\n");
  172.                     return -1;
  173.                 }else{
  174.                     fprintf(stderr, "cache_req_done ok---\n");
  175.                     comp ++;
  176.                 }
  177.             }
  178.         }
  179.     }
  180.  
  181.  
  182.     cache_dump_active_list();
  183.     cache_dump_inactive_list();
  184.  
  185. #endif
  186.  
  187.     trove_close_context(coll_id, trove_context);
  188.     trove_finalize(TROVE_METHOD_DBPF);
  189.  
  190.     return 0;
  191. }
  192.