Guest User

Untitled

a guest
May 24th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. #include <codesloop/common/test_timer.h>
  2. #include <codesloop/common/logger.hh>
  3. #include <codesloop/common/common.h>
  4.  
  5. #include <keyspace_client.h>
  6.  
  7. #include <assert.h>
  8. #include <vector>
  9.  
  10.  
  11. using namespace csl::common;
  12.  
  13. namespace test_keyspace
  14. {
  15. keyspace_client_t client;
  16.  
  17. char * value_8k;
  18. size_t value_8k_length= 8191;
  19. int sequence = 0;
  20. char key[256];
  21. pid_t pidprefix = getpid() % 10;
  22.  
  23. void init()
  24. {
  25. unsigned int x;
  26. value_8k = new char[value_8k_length];
  27.  
  28. for (x= 0; x < value_8k_length; x++)
  29. value_8k[x] = char (x % 127);
  30.  
  31. memset(key, 0, sizeof(key));
  32. }
  33.  
  34. inline void insert_key()
  35. {
  36. snprintf( key, 255, "%d%10d", pidprefix, sequence++ % 500000 );
  37.  
  38. keyspace_client_set(client, key, strlen(key),
  39. value_8k, value_8k_length);
  40. }
  41.  
  42. inline void read_key()
  43. {
  44. static int read_seq = 0;
  45.  
  46. if ( read_seq == sequence )
  47. read_seq = 0;
  48.  
  49. snprintf( key, 255, "%d%10d", pidprefix, read_seq++ % 500000 );
  50.  
  51. // safe read
  52. keyspace_client_get_simple(client, key, strlen(key), value_8k, value_8k_length, 0);
  53. }
  54.  
  55.  
  56. inline void bulk_operations()
  57. {
  58. static const char * keys[] = {
  59. "key01",
  60. "key02",
  61. "key03",
  62. "key04",
  63. "key05",
  64. "key06",
  65. "key07",
  66. "key08",
  67. "key09",
  68. "key10",
  69. };
  70. static const size_t key_sizes[] = {
  71. 5,5,5,5,5,5,5,5,5,5
  72. };
  73.  
  74.  
  75. // bulk set
  76. keyspace_client_begin(client);
  77.  
  78. for ( sequence = 0; sequence < 10 ; sequence++ )
  79. {
  80. keyspace_client_set(client, keys[sequence], key_sizes[sequence],
  81. value_8k, value_8k_length);
  82. }
  83. keyspace_client_submit(client);
  84.  
  85. // bulk gets 10 key/vals 10 times
  86. for ( int i = 0; i < 10 ; i++ )
  87. {
  88. // get from server
  89. keyspace_client_begin(client);
  90. for ( sequence = 0; sequence < 10; sequence++ )
  91. {
  92. keyspace_client_get_simple(client, keys[sequence], key_sizes[sequence],
  93. value_8k, value_8k_length, 0);
  94. }
  95. keyspace_client_submit(client);
  96.  
  97. // fetch result
  98. keyspace_result_t result = keyspace_client_result(client);
  99. for (keyspace_result_begin(result);
  100. !keyspace_result_is_end(result);
  101. keyspace_result_next(result))
  102. {
  103. const void * rkey;
  104. const void * rval;
  105. unsigned keylen, vallen;
  106. if (keyspace_result_key(result, &rkey,
  107. &keylen) != KEYSPACE_SUCCESS ||
  108. keyspace_result_value(result, &rval,
  109. &vallen) != KEYSPACE_SUCCESS)
  110. {
  111. fprintf(stderr, "result failed");
  112. }
  113. } // iterate on result
  114.  
  115. keyspace_result_close(result);
  116. } // for 10 multiget
  117.  
  118. } // bulk_operations()
  119.  
  120. };
  121.  
  122.  
  123. using namespace test_keyspace;
  124.  
  125.  
  126. int main()
  127. {
  128. client = keyspace_client_create();
  129.  
  130. test_keyspace::init();
  131.  
  132. const char * nodes[] = {
  133. "clust-01:7080",
  134. "clust-02:7080"
  135. };
  136.  
  137. int status = keyspace_client_init(client, 2, nodes);
  138. if (status != KEYSPACE_SUCCESS)
  139. {
  140. fprintf(stderr, "Can not init client\n");
  141. exit(-1);
  142. }
  143.  
  144. printf("Connected\n");
  145. keyspace_client_prune(client, "", 0 );
  146. printf("Prune done.\n");
  147.  
  148. csl_common_print_results( "keyspace insert key ", csl_common_test_timer_v0(insert_key),"" );
  149. csl_common_print_results( "keyspace read key ", csl_common_test_timer_v0(read_key),"" );
  150. keyspace_client_prune(client, "", 0 );
  151. csl_common_print_results( "keyspace bulk insert/read ", csl_common_test_timer_v0(bulk_operations),"" );
  152.  
  153. keyspace_client_destroy(client);
  154.  
  155. delete value_8k;
  156. }
Add Comment
Please, Sign In to add comment