libcouchbase 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libcouchbase/.gitignore +2 -0
  3. data/ext/libcouchbase/CMakeLists.txt +5 -7
  4. data/ext/libcouchbase/README.markdown +2 -2
  5. data/ext/libcouchbase/RELEASE_NOTES.markdown +49 -0
  6. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +11 -0
  7. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +2 -0
  8. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +2 -1
  9. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
  10. data/ext/libcouchbase/cmake/config-cmake.h.in +2 -0
  11. data/ext/libcouchbase/cmake/defs.mk.in +0 -2
  12. data/ext/libcouchbase/cmake/source_files.cmake +34 -14
  13. data/ext/libcouchbase/configure.pl +1 -1
  14. data/ext/libcouchbase/contrib/genhash/genhash.h +6 -0
  15. data/ext/libcouchbase/include/libcouchbase/auth.h +10 -0
  16. data/ext/libcouchbase/include/libcouchbase/couchbase.h +10 -0
  17. data/ext/libcouchbase/include/libcouchbase/error.h +7 -0
  18. data/ext/libcouchbase/include/libcouchbase/n1ql.h +13 -1
  19. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +1 -1
  20. data/ext/libcouchbase/include/libcouchbase/subdoc.h +9 -0
  21. data/ext/libcouchbase/include/libcouchbase/views.h +7 -1
  22. data/ext/libcouchbase/include/libcouchbase/visibility.h +1 -0
  23. data/ext/libcouchbase/include/memcached/protocol_binary.h +21 -1132
  24. data/ext/libcouchbase/packaging/parse-git-describe.pl +1 -1
  25. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +3 -2
  26. data/ext/libcouchbase/src/README.md +0 -2
  27. data/ext/libcouchbase/src/auth-priv.h +1 -0
  28. data/ext/libcouchbase/src/auth.cc +10 -0
  29. data/ext/libcouchbase/src/bootstrap.cc +216 -0
  30. data/ext/libcouchbase/src/bootstrap.h +50 -39
  31. data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +455 -0
  32. data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
  33. data/ext/libcouchbase/src/bucketconfig/bc_http.cc +528 -0
  34. data/ext/libcouchbase/src/bucketconfig/bc_http.h +50 -25
  35. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.cc +115 -0
  36. data/ext/libcouchbase/src/bucketconfig/clconfig.h +407 -386
  37. data/ext/libcouchbase/src/bucketconfig/confmon.cc +378 -0
  38. data/ext/libcouchbase/src/cbft.cc +22 -27
  39. data/ext/libcouchbase/src/cntl.cc +24 -24
  40. data/ext/libcouchbase/src/connspec.cc +30 -1
  41. data/ext/libcouchbase/src/connspec.h +17 -0
  42. data/ext/libcouchbase/src/dns-srv.cc +143 -0
  43. data/ext/libcouchbase/src/{dump.c → dump.cc} +8 -11
  44. data/ext/libcouchbase/src/getconfig.cc +73 -0
  45. data/ext/libcouchbase/src/handler.cc +84 -85
  46. data/ext/libcouchbase/src/hostlist.cc +0 -1
  47. data/ext/libcouchbase/src/hostlist.h +6 -1
  48. data/ext/libcouchbase/src/http/http-priv.h +125 -112
  49. data/ext/libcouchbase/src/http/http.cc +9 -29
  50. data/ext/libcouchbase/src/http/http.h +1 -34
  51. data/ext/libcouchbase/src/http/http_io.cc +22 -26
  52. data/ext/libcouchbase/src/instance.cc +102 -28
  53. data/ext/libcouchbase/src/internal.h +47 -29
  54. data/ext/libcouchbase/src/jsparse/parser.cc +146 -202
  55. data/ext/libcouchbase/src/jsparse/parser.h +91 -98
  56. data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
  57. data/ext/libcouchbase/src/lcbht/lcbht.h +174 -163
  58. data/ext/libcouchbase/src/lcbio/connect.cc +562 -0
  59. data/ext/libcouchbase/src/lcbio/connect.h +9 -2
  60. data/ext/libcouchbase/src/lcbio/ctx.c +1 -1
  61. data/ext/libcouchbase/src/lcbio/iotable.h +61 -16
  62. data/ext/libcouchbase/src/lcbio/ioutils.h +1 -1
  63. data/ext/libcouchbase/src/lcbio/manager.c +2 -2
  64. data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
  65. data/ext/libcouchbase/src/mc/mcreq.h +9 -2
  66. data/ext/libcouchbase/src/mcserver/mcserver.cc +723 -0
  67. data/ext/libcouchbase/src/mcserver/mcserver.h +160 -70
  68. data/ext/libcouchbase/src/mcserver/negotiate.cc +118 -152
  69. data/ext/libcouchbase/src/mcserver/negotiate.h +85 -74
  70. data/ext/libcouchbase/src/mctx-helper.h +51 -0
  71. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +1 -2
  72. data/ext/libcouchbase/src/n1ql/n1ql.cc +56 -32
  73. data/ext/libcouchbase/src/{newconfig.c → newconfig.cc} +42 -70
  74. data/ext/libcouchbase/src/nodeinfo.cc +4 -8
  75. data/ext/libcouchbase/src/operations/{cbflush.c → cbflush.cc} +7 -15
  76. data/ext/libcouchbase/src/operations/{counter.c → counter.cc} +0 -0
  77. data/ext/libcouchbase/src/operations/{durability-cas.c → durability-cas.cc} +92 -76
  78. data/ext/libcouchbase/src/operations/{durability-seqno.c → durability-seqno.cc} +55 -49
  79. data/ext/libcouchbase/src/operations/durability.cc +643 -0
  80. data/ext/libcouchbase/src/operations/durability_internal.h +212 -124
  81. data/ext/libcouchbase/src/operations/{get.c → get.cc} +24 -26
  82. data/ext/libcouchbase/src/operations/{observe-seqno.c → observe-seqno.cc} +5 -8
  83. data/ext/libcouchbase/src/operations/{observe.c → observe.cc} +69 -94
  84. data/ext/libcouchbase/src/operations/{pktfwd.c → pktfwd.cc} +0 -0
  85. data/ext/libcouchbase/src/operations/{remove.c → remove.cc} +0 -0
  86. data/ext/libcouchbase/src/operations/{stats.c → stats.cc} +66 -78
  87. data/ext/libcouchbase/src/operations/{store.c → store.cc} +27 -32
  88. data/ext/libcouchbase/src/operations/subdoc.cc +38 -18
  89. data/ext/libcouchbase/src/operations/{touch.c → touch.cc} +0 -0
  90. data/ext/libcouchbase/src/packetutils.h +200 -137
  91. data/ext/libcouchbase/src/probes.d +1 -1
  92. data/ext/libcouchbase/src/{retrychk.c → retrychk.cc} +3 -4
  93. data/ext/libcouchbase/src/retryq.cc +394 -0
  94. data/ext/libcouchbase/src/retryq.h +116 -104
  95. data/ext/libcouchbase/src/settings.h +2 -1
  96. data/ext/libcouchbase/src/ssl/ssl_c.c +1 -0
  97. data/ext/libcouchbase/src/ssl/ssl_e.c +0 -1
  98. data/ext/libcouchbase/src/trace.h +8 -8
  99. data/ext/libcouchbase/src/vbucket/vbucket.c +0 -1
  100. data/ext/libcouchbase/src/views/{docreq.c → docreq.cc} +48 -54
  101. data/ext/libcouchbase/src/views/docreq.h +24 -30
  102. data/ext/libcouchbase/src/views/viewreq.cc +318 -0
  103. data/ext/libcouchbase/src/views/viewreq.h +43 -13
  104. data/ext/libcouchbase/src/{wait.c → wait.cc} +12 -17
  105. data/ext/libcouchbase/tests/basic/t_connstr.cc +89 -50
  106. data/ext/libcouchbase/tests/basic/t_jsparse.cc +27 -78
  107. data/ext/libcouchbase/tests/basic/t_packet.cc +35 -42
  108. data/ext/libcouchbase/tests/htparse/t_basic.cc +58 -78
  109. data/ext/libcouchbase/tests/iotests/t_confmon.cc +94 -111
  110. data/ext/libcouchbase/tests/iotests/t_sched.cc +1 -2
  111. data/ext/libcouchbase/tests/mc/t_alloc.cc +9 -9
  112. data/ext/libcouchbase/tools/cbc-pillowfight.cc +1 -1
  113. data/lib/libcouchbase/version.rb +1 -1
  114. metadata +36 -39
  115. data/ext/libcouchbase/include/memcached/vbucket.h +0 -42
  116. data/ext/libcouchbase/src/bootstrap.c +0 -269
  117. data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +0 -495
  118. data/ext/libcouchbase/src/bucketconfig/bc_file.c +0 -347
  119. data/ext/libcouchbase/src/bucketconfig/bc_http.c +0 -630
  120. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +0 -150
  121. data/ext/libcouchbase/src/bucketconfig/confmon.c +0 -474
  122. data/ext/libcouchbase/src/getconfig.c +0 -100
  123. data/ext/libcouchbase/src/lcbht/lcbht.c +0 -282
  124. data/ext/libcouchbase/src/lcbio/connect.c +0 -557
  125. data/ext/libcouchbase/src/mcserver/mcserver.c +0 -784
  126. data/ext/libcouchbase/src/operations/durability.c +0 -668
  127. data/ext/libcouchbase/src/packetutils.c +0 -60
  128. data/ext/libcouchbase/src/retryq.c +0 -424
  129. data/ext/libcouchbase/src/simplestring.c +0 -211
  130. data/ext/libcouchbase/src/simplestring.h +0 -228
  131. data/ext/libcouchbase/src/ssobuf.h +0 -82
  132. data/ext/libcouchbase/src/views/viewreq.c +0 -358
  133. data/ext/libcouchbase/tests/basic/t_string.cc +0 -112
@@ -7,130 +7,115 @@
7
7
  #include <lcbio/iotable.h>
8
8
  #include <set>
9
9
 
10
- class Confmon : public ::testing::Test
10
+ using namespace lcb::clconfig;
11
+
12
+ class ConfmonTest : public ::testing::Test
11
13
  {
12
14
  void SetUp() {
13
15
  MockEnvironment::Reset();
14
16
  }
15
17
  };
16
18
 
17
- struct evstop_listener {
18
- clconfig_listener base;
19
+ struct evstop_listener : Listener {
19
20
  lcbio_pTABLE io;
20
21
  int called;
22
+
23
+ void clconfig_lsn(EventType event, ConfigInfo*) {
24
+ if (event != CLCONFIG_EVENT_GOT_NEW_CONFIG) {
25
+ return;
26
+ }
27
+ called = 1;
28
+ IOT_STOP(io);
29
+ }
30
+
31
+ evstop_listener() : Listener(), io(NULL), called(0) {
32
+ }
21
33
  };
22
34
 
23
35
  extern "C" {
24
- static void listen_callback1(clconfig_listener *lsn, clconfig_event_t event,
25
- clconfig_info *info)
36
+ static void listen_callback1(Listener *lsn, EventType event,
37
+ ConfigInfo *info)
26
38
  {
27
- if (event != CLCONFIG_EVENT_GOT_NEW_CONFIG) {
28
- return;
29
- }
30
-
31
- evstop_listener *me = reinterpret_cast<evstop_listener*>(lsn);
32
- me->called = 1;
33
- IOT_STOP(me->io);
34
39
  }
35
40
  }
36
41
 
37
- TEST_F(Confmon, testBasic)
42
+ TEST_F(ConfmonTest, testBasic)
38
43
  {
39
44
  HandleWrap hw;
40
45
  lcb_t instance;
41
46
  MockEnvironment::getInstance()->createConnection(hw, instance);
42
47
 
43
48
 
44
- lcb_confmon *mon = lcb_confmon_create(instance->settings, instance->iotable);
45
- clconfig_provider *http = lcb_confmon_get_provider(mon, LCB_CLCONFIG_HTTP);
46
- lcb_clconfig_http_enable(http);
47
- lcb_clconfig_http_set_nodes(http, instance->ht_nodes);
49
+ Confmon *mon = new Confmon(instance->settings, instance->iotable);
50
+ Provider *http = mon->get_provider(CLCONFIG_HTTP);
51
+ http->enable();
52
+ http->configure_nodes(*instance->ht_nodes);
48
53
 
49
- lcb_confmon_prepare(mon);
54
+ mon->prepare();
50
55
 
51
- EXPECT_EQ(NULL, lcb_confmon_get_config(mon));
52
- EXPECT_EQ(LCB_SUCCESS, lcb_confmon_start(mon));
53
- EXPECT_EQ(LCB_SUCCESS, lcb_confmon_start(mon));
54
- EXPECT_EQ(LCB_SUCCESS, lcb_confmon_stop(mon));
55
- EXPECT_EQ(LCB_SUCCESS, lcb_confmon_stop(mon));
56
+ EXPECT_EQ(NULL, mon->get_config());
57
+ mon->start();
58
+ mon->start(); // Twice!
59
+ mon->stop();
60
+ mon->stop();
56
61
 
57
62
  // Try to find a provider..
58
- clconfig_provider *provider = lcb_confmon_get_provider(mon, LCB_CLCONFIG_HTTP);
63
+ Provider *provider = mon->get_provider(CLCONFIG_HTTP);
59
64
  ASSERT_NE(0, provider->enabled);
60
65
 
61
- struct evstop_listener listener;
62
- memset(&listener, 0, sizeof(listener));
63
-
64
- listener.base.callback = listen_callback1;
65
- listener.base.parent = mon;
66
+ evstop_listener listener;
66
67
  listener.io = instance->iotable;
67
-
68
- lcb_confmon_add_listener(mon, &listener.base);
69
- lcb_confmon_start(mon);
68
+ mon->add_listener(&listener);
69
+ mon->start();
70
70
  IOT_START(instance->iotable);
71
71
  ASSERT_NE(0, listener.called);
72
-
73
- lcb_confmon_destroy(mon);
72
+ delete mon;
74
73
  }
75
74
 
76
75
 
77
- struct listener2 {
78
- clconfig_listener base;
76
+ struct listener2 : Listener {
79
77
  int call_count;
80
78
  lcbio_pTABLE io;
81
- clconfig_method_t last_source;
82
- std::set<clconfig_event_t> expected_events;
79
+ Method last_source;
80
+ std::set<EventType> expected_events;
83
81
 
84
82
  void reset() {
85
83
  call_count = 0;
86
- last_source = LCB_CLCONFIG_PHONY;
84
+ last_source = CLCONFIG_PHONY;
87
85
  expected_events.clear();
88
86
  }
89
87
 
90
- listener2() {
91
- memset(&base, 0, sizeof(base));
88
+ listener2() : Listener() {
92
89
  io = NULL;
93
90
  reset();
94
91
  }
95
- };
96
92
 
97
- static struct listener2* getListener2(const void *p)
98
- {
99
- return reinterpret_cast<struct listener2*>(const_cast<void*>(p));
100
- }
93
+ void clconfig_lsn(EventType event, ConfigInfo *info) {
94
+ if (event == CLCONFIG_EVENT_MONITOR_STOPPED) {
95
+ IOT_START(io);
96
+ return;
97
+ }
101
98
 
102
- extern "C" {
103
- static void listen_callback2(clconfig_listener *prov,
104
- clconfig_event_t event,
105
- clconfig_info *info)
106
- {
107
- // Increase the number of times we've received a callback..
108
- struct listener2* lsn = getListener2(prov);
99
+ if (!expected_events.empty()) {
100
+ if (expected_events.end() ==
101
+ expected_events.find(event)) {
102
+ return;
103
+ }
104
+ }
109
105
 
110
- if (event == CLCONFIG_EVENT_MONITOR_STOPPED) {
111
- IOT_START(lsn->io);
112
- return;
113
- }
106
+ call_count++;
107
+ last_source = info->get_origin();
108
+ IOT_STOP(io);
114
109
 
115
- if (!lsn->expected_events.empty()) {
116
- if (lsn->expected_events.end() ==
117
- lsn->expected_events.find(event)) {
118
- return;
119
- }
120
110
  }
111
+ };
121
112
 
122
- lsn->call_count++;
123
- lsn->last_source = info->origin;
124
- IOT_STOP(lsn->io);
125
- }
126
- }
127
-
128
- static void runConfmon(lcbio_pTABLE io, lcb_confmon *mon)
113
+ static void runConfmonTest(lcbio_pTABLE io, Confmon *mon)
129
114
  {
130
115
  IOT_START(io);
131
116
  }
132
117
 
133
- TEST_F(Confmon, testCycle)
118
+ TEST_F(ConfmonTest, testCycle)
134
119
  {
135
120
  HandleWrap hw;
136
121
  lcb_t instance;
@@ -145,57 +130,55 @@ TEST_F(Confmon, testCycle)
145
130
  instance->settings->bc_http_stream_time = 100000;
146
131
  instance->memd_sockpool->tmoidle = 100000;
147
132
 
148
- lcb_confmon *mon = lcb_confmon_create(instance->settings, instance->iotable);
133
+ Confmon *mon = new Confmon(instance->settings, instance->iotable);
149
134
 
150
135
  struct listener2 lsn;
151
- lsn.base.callback = listen_callback2;
152
136
  lsn.io = instance->iotable;
153
137
  lsn.reset();
154
-
155
- lcb_confmon_add_listener(mon, &lsn.base);
138
+ mon->add_listener(&lsn);
156
139
 
157
140
  mock->makeConnectParams(cropts, NULL);
158
- clconfig_provider *cccp = lcb_confmon_get_provider(mon, LCB_CLCONFIG_CCCP);
159
- clconfig_provider *http = lcb_confmon_get_provider(mon, LCB_CLCONFIG_HTTP);
141
+ Provider *cccp = mon->get_provider(CLCONFIG_CCCP);
142
+ Provider *http = mon->get_provider(CLCONFIG_HTTP);
160
143
 
161
144
  hostlist_t hl = hostlist_create();
162
145
  hostlist_add_stringz(hl, cropts.v.v2.mchosts, 11210);
163
- lcb_clconfig_cccp_enable(cccp, instance);
164
- lcb_clconfig_cccp_set_nodes(cccp, hl);
146
+ cccp->enable(instance);
147
+ cccp->configure_nodes(*hl);
165
148
 
166
- lcb_clconfig_http_enable(http);
167
- lcb_clconfig_http_set_nodes(http, instance->ht_nodes);
149
+ http->enable();
150
+ http->configure_nodes(*instance->ht_nodes);
168
151
  hostlist_destroy(hl);
169
152
 
170
- lcb_confmon_prepare(mon);
171
- lcb_confmon_start(mon);
153
+ mon->prepare();
154
+ mon->start();
172
155
  lsn.expected_events.insert(CLCONFIG_EVENT_GOT_NEW_CONFIG);
173
- runConfmon(lsn.io, mon);
156
+ runConfmonTest(lsn.io, mon);
174
157
 
175
158
  // Ensure CCCP is functioning properly and we're called only once.
176
159
  ASSERT_EQ(1, lsn.call_count);
177
- ASSERT_EQ(LCB_CLCONFIG_CCCP, lsn.last_source);
160
+ ASSERT_EQ(CLCONFIG_CCCP, lsn.last_source);
178
161
 
179
- lcb_confmon_start(mon);
162
+ mon->start();
180
163
  lsn.reset();
181
164
  lsn.expected_events.insert(CLCONFIG_EVENT_GOT_ANY_CONFIG);
182
- runConfmon(lsn.io, mon);
165
+ runConfmonTest(lsn.io, mon);
183
166
  ASSERT_EQ(1, lsn.call_count);
184
- ASSERT_EQ(LCB_CLCONFIG_CCCP, lsn.last_source);
167
+ ASSERT_EQ(CLCONFIG_CCCP, lsn.last_source);
185
168
 
186
169
  mock->setCCCP(false);
187
170
  mock->failoverNode(5);
188
171
  lsn.reset();
189
- lcb_confmon_start(mon);
172
+ mon->start();
190
173
  lsn.expected_events.insert(CLCONFIG_EVENT_GOT_ANY_CONFIG);
191
174
  lsn.expected_events.insert(CLCONFIG_EVENT_GOT_NEW_CONFIG);
192
- runConfmon(lsn.io, mon);
193
- ASSERT_EQ(LCB_CLCONFIG_HTTP, lsn.last_source);
175
+ runConfmonTest(lsn.io, mon);
176
+ ASSERT_EQ(CLCONFIG_HTTP, lsn.last_source);
194
177
  ASSERT_EQ(1, lsn.call_count);
195
- lcb_confmon_destroy(mon);
178
+ delete mon;
196
179
  }
197
180
 
198
- TEST_F(Confmon, testBootstrapMethods)
181
+ TEST_F(ConfmonTest, testBootstrapMethods)
199
182
  {
200
183
  lcb_t instance;
201
184
  HandleWrap hw;
@@ -204,38 +187,38 @@ TEST_F(Confmon, testBootstrapMethods)
204
187
  ASSERT_EQ(LCB_SUCCESS, err);
205
188
 
206
189
  // Try the various bootstrap times
207
- struct lcb_BOOTSTRAP *bs = instance->bootstrap;
208
- hrtime_t last = bs->last_refresh, cur = 0;
190
+ lcb::Bootstrap* bs = instance->bs_state;
191
+ hrtime_t last = bs->get_last_refresh(), cur = 0;
209
192
 
210
193
  // Reset it for the time being
211
- bs->last_refresh = 0;
212
- lcb_confmon_stop(instance->confmon);
194
+ bs->reset_last_refresh();
195
+ instance->confmon->stop();
213
196
 
214
197
  // Refreshing now should work
215
- lcb_bootstrap_common(instance, LCB_BS_REFRESH_THROTTLE);
216
- ASSERT_NE(0, lcb_confmon_is_refreshing(instance->confmon));
198
+ instance->bootstrap(lcb::BS_REFRESH_THROTTLE);
199
+ ASSERT_TRUE(instance->confmon->is_refreshing());
217
200
 
218
- cur = bs->last_refresh;
201
+ cur = bs->get_last_refresh();
219
202
  ASSERT_GT(cur, 0);
220
- ASSERT_EQ(0, bs->errcounter);
203
+ ASSERT_EQ(0, bs->get_errcounter());
221
204
  last = cur;
222
205
 
223
206
  // Stop it, so the state is reset
224
- lcb_confmon_stop(instance->confmon);
225
- ASSERT_EQ(0, lcb_confmon_is_refreshing(instance->confmon));
207
+ instance->confmon->stop();
208
+ ASSERT_FALSE(instance->confmon->is_refreshing());
226
209
 
227
- lcb_bootstrap_common(instance, LCB_BS_REFRESH_THROTTLE|LCB_BS_REFRESH_INCRERR);
228
- ASSERT_EQ(last, bs->last_refresh);
229
- ASSERT_EQ(1, bs->errcounter);
210
+ instance->bootstrap(lcb::BS_REFRESH_THROTTLE|lcb::BS_REFRESH_INCRERR);
211
+ ASSERT_EQ(last, bs->get_last_refresh());
212
+ ASSERT_EQ(1, bs->get_errcounter());
230
213
 
231
214
  // Ensure that a throttled-without-incr doesn't actually incr
232
- lcb_bootstrap_common(instance, LCB_BS_REFRESH_THROTTLE);
233
- ASSERT_EQ(1, bs->errcounter);
215
+ instance->bootstrap(lcb::BS_REFRESH_THROTTLE);
216
+ ASSERT_EQ(1, bs->get_errcounter());
234
217
 
235
218
  // No refresh yet
236
- ASSERT_EQ(0, lcb_confmon_is_refreshing(instance->confmon));
219
+ ASSERT_FALSE(instance->confmon->is_refreshing());
237
220
 
238
- lcb_bootstrap_common(instance, LCB_BS_REFRESH_ALWAYS);
239
- ASSERT_NE(0, lcb_confmon_is_refreshing(instance->confmon));
240
- lcb_confmon_stop(instance->confmon);
221
+ instance->bootstrap(lcb::BS_REFRESH_ALWAYS);
222
+ ASSERT_TRUE(instance->confmon->is_refreshing());
223
+ instance->confmon->stop();
241
224
  }
@@ -28,8 +28,7 @@ static bool
28
28
  hasPendingOps(lcb_t instance)
29
29
  {
30
30
  for (size_t ii = 0; ii < LCBT_NSERVERS(instance); ++ii) {
31
- mc_SERVER *ss = LCBT_GET_SERVER(instance, ii);
32
- if (mcserver_has_pending(ss)) {
31
+ if (instance->get_server(ii)->has_pending()) {
33
32
  return true;
34
33
  }
35
34
  }
@@ -223,15 +223,16 @@ TEST_F(McAlloc, testValueAlloc)
223
223
  mcreq_release_packet(pipeline, packet);
224
224
  }
225
225
 
226
- struct ExtraCookie {
227
- mc_REQDATAEX base;
226
+ struct ExtraCookie : mc_REQDATAEX {
228
227
  int remaining;
228
+ ExtraCookie(const mc_REQDATAPROCS& procs_)
229
+ : mc_REQDATAEX(NULL, procs_, 0), remaining(0) {
230
+ }
229
231
  };
230
232
 
231
233
  extern "C" {
232
234
  static void pkt_dtor(mc_PACKET *pkt) {
233
- mc_REQDATAEX *rd = pkt->u_rdata.exdata;
234
- ExtraCookie *ec = (ExtraCookie *)rd;
235
+ ExtraCookie *ec = static_cast<ExtraCookie*>(pkt->u_rdata.exdata);
235
236
  ec->remaining--;
236
237
  }
237
238
  }
@@ -240,18 +241,17 @@ TEST_F(McAlloc, testRdataExDtor)
240
241
  {
241
242
  CQWrap q;
242
243
  lcb_CMDBASE basecmd;
243
- ExtraCookie ec;
244
+ const static mc_REQDATAPROCS procs = { NULL, pkt_dtor };
244
245
  protocol_binary_request_header hdr;
245
246
 
246
247
  memset(&hdr, 0, sizeof hdr);
247
248
  memset(&basecmd, 0, sizeof basecmd);
248
- memset(&ec, 0, sizeof ec);
249
249
 
250
- mc_REQDATAPROCS procs = { NULL, pkt_dtor };
251
- ec.base.procs = &procs;
252
250
  basecmd.key.contig.bytes = "foo";
253
251
  basecmd.key.contig.nbytes = 3;
254
252
 
253
+ ExtraCookie ec(procs);
254
+
255
255
  mcreq_sched_enter(&q);
256
256
  for (unsigned ii = 0; ii < 5; ii++) {
257
257
  lcb_error_t err;
@@ -260,7 +260,7 @@ TEST_F(McAlloc, testRdataExDtor)
260
260
  err = mcreq_basic_packet(&q, &basecmd, &hdr, 0, &pkt, &pl, 0);
261
261
  ASSERT_EQ(LCB_SUCCESS, err);
262
262
  pkt->flags |= MCREQ_F_REQEXT;
263
- pkt->u_rdata.exdata = &ec.base;
263
+ pkt->u_rdata.exdata = &ec;
264
264
  mcreq_sched_add(pl, pkt);
265
265
  ec.remaining++;
266
266
  }
@@ -630,7 +630,7 @@ private:
630
630
 
631
631
  const lcb_U64 elapsed_ns = now - previous_time;
632
632
  const lcb_U64 wanted_duration_ns =
633
- config.opsPerCycle * 1e9 / config.getRateLimit();
633
+ (config.opsPerCycle * 1e9) / (config.getRateLimit() * config.getNumThreads());
634
634
  // On first invocation no previous_time, so skip attempting to sleep.
635
635
  if (elapsed_ns > 0 && elapsed_ns < wanted_duration_ns) {
636
636
  // Dampen the sleep time by averaging with the previous
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true, encoding: ASCII-8BIT
2
2
 
3
3
  module Libcouchbase
4
- VERSION = '0.0.7'
4
+ VERSION = '0.0.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libcouchbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen von Takach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-08 00:00:00.000000000 Z
11
+ date: 2017-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -342,7 +342,6 @@ files:
342
342
  - ext/libcouchbase/include/memcached/COPYING
343
343
  - ext/libcouchbase/include/memcached/README
344
344
  - ext/libcouchbase/include/memcached/protocol_binary.h
345
- - ext/libcouchbase/include/memcached/vbucket.h
346
345
  - ext/libcouchbase/packaging/README
347
346
  - ext/libcouchbase/packaging/abicheck/.gitignore
348
347
  - ext/libcouchbase/packaging/abicheck/Makefile
@@ -387,15 +386,15 @@ files:
387
386
  - ext/libcouchbase/src/aspend.h
388
387
  - ext/libcouchbase/src/auth-priv.h
389
388
  - ext/libcouchbase/src/auth.cc
390
- - ext/libcouchbase/src/bootstrap.c
389
+ - ext/libcouchbase/src/bootstrap.cc
391
390
  - ext/libcouchbase/src/bootstrap.h
392
- - ext/libcouchbase/src/bucketconfig/bc_cccp.c
393
- - ext/libcouchbase/src/bucketconfig/bc_file.c
394
- - ext/libcouchbase/src/bucketconfig/bc_http.c
391
+ - ext/libcouchbase/src/bucketconfig/bc_cccp.cc
392
+ - ext/libcouchbase/src/bucketconfig/bc_file.cc
393
+ - ext/libcouchbase/src/bucketconfig/bc_http.cc
395
394
  - ext/libcouchbase/src/bucketconfig/bc_http.h
396
- - ext/libcouchbase/src/bucketconfig/bc_mcraw.c
395
+ - ext/libcouchbase/src/bucketconfig/bc_mcraw.cc
397
396
  - ext/libcouchbase/src/bucketconfig/clconfig.h
398
- - ext/libcouchbase/src/bucketconfig/confmon.c
397
+ - ext/libcouchbase/src/bucketconfig/confmon.cc
399
398
  - ext/libcouchbase/src/callbacks.c
400
399
  - ext/libcouchbase/src/cbft.cc
401
400
  - ext/libcouchbase/src/cntl.cc
@@ -403,8 +402,9 @@ files:
403
402
  - ext/libcouchbase/src/connspec.cc
404
403
  - ext/libcouchbase/src/connspec.h
405
404
  - ext/libcouchbase/src/ctx-log-inl.h
406
- - ext/libcouchbase/src/dump.c
407
- - ext/libcouchbase/src/getconfig.c
405
+ - ext/libcouchbase/src/dns-srv.cc
406
+ - ext/libcouchbase/src/dump.cc
407
+ - ext/libcouchbase/src/getconfig.cc
408
408
  - ext/libcouchbase/src/gethrtime.c
409
409
  - ext/libcouchbase/src/handler.cc
410
410
  - ext/libcouchbase/src/hashtable.c
@@ -420,9 +420,9 @@ files:
420
420
  - ext/libcouchbase/src/iofactory.c
421
421
  - ext/libcouchbase/src/jsparse/parser.cc
422
422
  - ext/libcouchbase/src/jsparse/parser.h
423
- - ext/libcouchbase/src/lcbht/lcbht.c
423
+ - ext/libcouchbase/src/lcbht/lcbht.cc
424
424
  - ext/libcouchbase/src/lcbht/lcbht.h
425
- - ext/libcouchbase/src/lcbio/connect.c
425
+ - ext/libcouchbase/src/lcbio/connect.cc
426
426
  - ext/libcouchbase/src/lcbio/connect.h
427
427
  - ext/libcouchbase/src/lcbio/ctx.c
428
428
  - ext/libcouchbase/src/lcbio/ctx.h
@@ -436,6 +436,7 @@ files:
436
436
  - ext/libcouchbase/src/lcbio/protoctx.c
437
437
  - ext/libcouchbase/src/lcbio/rw-inl.h
438
438
  - ext/libcouchbase/src/lcbio/ssl.h
439
+ - ext/libcouchbase/src/lcbio/timer-cxx.h
439
440
  - ext/libcouchbase/src/lcbio/timer-ng.h
440
441
  - ext/libcouchbase/src/lcbio/timer.c
441
442
  - ext/libcouchbase/src/legacy.c
@@ -452,10 +453,11 @@ files:
452
453
  - ext/libcouchbase/src/mc/mcreq-flush-inl.h
453
454
  - ext/libcouchbase/src/mc/mcreq.c
454
455
  - ext/libcouchbase/src/mc/mcreq.h
455
- - ext/libcouchbase/src/mcserver/mcserver.c
456
+ - ext/libcouchbase/src/mcserver/mcserver.cc
456
457
  - ext/libcouchbase/src/mcserver/mcserver.h
457
458
  - ext/libcouchbase/src/mcserver/negotiate.cc
458
459
  - ext/libcouchbase/src/mcserver/negotiate.h
460
+ - ext/libcouchbase/src/mctx-helper.h
459
461
  - ext/libcouchbase/src/n1ql/ixmgmt.cc
460
462
  - ext/libcouchbase/src/n1ql/n1ql-internal.h
461
463
  - ext/libcouchbase/src/n1ql/n1ql.cc
@@ -464,24 +466,23 @@ files:
464
466
  - ext/libcouchbase/src/netbuf/netbuf-mblock.h
465
467
  - ext/libcouchbase/src/netbuf/netbuf.c
466
468
  - ext/libcouchbase/src/netbuf/netbuf.h
467
- - ext/libcouchbase/src/newconfig.c
469
+ - ext/libcouchbase/src/newconfig.cc
468
470
  - ext/libcouchbase/src/nodeinfo.cc
469
- - ext/libcouchbase/src/operations/cbflush.c
470
- - ext/libcouchbase/src/operations/counter.c
471
- - ext/libcouchbase/src/operations/durability-cas.c
472
- - ext/libcouchbase/src/operations/durability-seqno.c
473
- - ext/libcouchbase/src/operations/durability.c
471
+ - ext/libcouchbase/src/operations/cbflush.cc
472
+ - ext/libcouchbase/src/operations/counter.cc
473
+ - ext/libcouchbase/src/operations/durability-cas.cc
474
+ - ext/libcouchbase/src/operations/durability-seqno.cc
475
+ - ext/libcouchbase/src/operations/durability.cc
474
476
  - ext/libcouchbase/src/operations/durability_internal.h
475
- - ext/libcouchbase/src/operations/get.c
476
- - ext/libcouchbase/src/operations/observe-seqno.c
477
- - ext/libcouchbase/src/operations/observe.c
478
- - ext/libcouchbase/src/operations/pktfwd.c
479
- - ext/libcouchbase/src/operations/remove.c
480
- - ext/libcouchbase/src/operations/stats.c
481
- - ext/libcouchbase/src/operations/store.c
477
+ - ext/libcouchbase/src/operations/get.cc
478
+ - ext/libcouchbase/src/operations/observe-seqno.cc
479
+ - ext/libcouchbase/src/operations/observe.cc
480
+ - ext/libcouchbase/src/operations/pktfwd.cc
481
+ - ext/libcouchbase/src/operations/remove.cc
482
+ - ext/libcouchbase/src/operations/stats.cc
483
+ - ext/libcouchbase/src/operations/store.cc
482
484
  - ext/libcouchbase/src/operations/subdoc.cc
483
- - ext/libcouchbase/src/operations/touch.c
484
- - ext/libcouchbase/src/packetutils.c
485
+ - ext/libcouchbase/src/operations/touch.cc
485
486
  - ext/libcouchbase/src/packetutils.h
486
487
  - ext/libcouchbase/src/probes.d
487
488
  - ext/libcouchbase/src/rdb/bigalloc.c
@@ -490,15 +491,13 @@ files:
490
491
  - ext/libcouchbase/src/rdb/libcalloc.c
491
492
  - ext/libcouchbase/src/rdb/rope.c
492
493
  - ext/libcouchbase/src/rdb/rope.h
493
- - ext/libcouchbase/src/retrychk.c
494
- - ext/libcouchbase/src/retryq.c
494
+ - ext/libcouchbase/src/retrychk.cc
495
+ - ext/libcouchbase/src/retryq.cc
495
496
  - ext/libcouchbase/src/retryq.h
496
497
  - ext/libcouchbase/src/ringbuffer.c
497
498
  - ext/libcouchbase/src/ringbuffer.h
498
499
  - ext/libcouchbase/src/settings.c
499
500
  - ext/libcouchbase/src/settings.h
500
- - ext/libcouchbase/src/simplestring.c
501
- - ext/libcouchbase/src/simplestring.h
502
501
  - ext/libcouchbase/src/sllist-inl.h
503
502
  - ext/libcouchbase/src/sllist.h
504
503
  - ext/libcouchbase/src/ssl/CMakeLists.txt
@@ -506,7 +505,6 @@ files:
506
505
  - ext/libcouchbase/src/ssl/ssl_common.c
507
506
  - ext/libcouchbase/src/ssl/ssl_e.c
508
507
  - ext/libcouchbase/src/ssl/ssl_iot_common.h
509
- - ext/libcouchbase/src/ssobuf.h
510
508
  - ext/libcouchbase/src/strcodecs/base64.c
511
509
  - ext/libcouchbase/src/strcodecs/strcodecs.h
512
510
  - ext/libcouchbase/src/timings.c
@@ -522,11 +520,11 @@ files:
522
520
  - ext/libcouchbase/src/vbucket/rfc1321/md5.h
523
521
  - ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h
524
522
  - ext/libcouchbase/src/vbucket/vbucket.c
525
- - ext/libcouchbase/src/views/docreq.c
523
+ - ext/libcouchbase/src/views/docreq.cc
526
524
  - ext/libcouchbase/src/views/docreq.h
527
- - ext/libcouchbase/src/views/viewreq.c
525
+ - ext/libcouchbase/src/views/viewreq.cc
528
526
  - ext/libcouchbase/src/views/viewreq.h
529
- - ext/libcouchbase/src/wait.c
527
+ - ext/libcouchbase/src/wait.cc
530
528
  - ext/libcouchbase/tests/CMakeLists.txt
531
529
  - ext/libcouchbase/tests/basic/t_base64.cc
532
530
  - ext/libcouchbase/tests/basic/t_ccbc103.cc
@@ -545,7 +543,6 @@ files:
545
543
  - ext/libcouchbase/tests/basic/t_ringbuffer.cc
546
544
  - ext/libcouchbase/tests/basic/t_slist.cc
547
545
  - ext/libcouchbase/tests/basic/t_strerror.cc
548
- - ext/libcouchbase/tests/basic/t_string.cc
549
546
  - ext/libcouchbase/tests/basic/t_urlencode.cc
550
547
  - ext/libcouchbase/tests/check-all.cc
551
548
  - ext/libcouchbase/tests/htparse/t_basic.cc
@@ -751,7 +748,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
751
748
  version: '0'
752
749
  requirements: []
753
750
  rubyforge_project:
754
- rubygems_version: 2.5.1
751
+ rubygems_version: 2.6.10
755
752
  signing_key:
756
753
  specification_version: 4
757
754
  summary: libcouchbase bindings for Ruby