libcouchbase 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +1 -1
- data/ext/libcouchbase/CMakeLists.txt +8 -6
- data/ext/libcouchbase/README.markdown +2 -2
- data/ext/libcouchbase/RELEASE_NOTES.markdown +0 -86
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +0 -11
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +0 -2
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +1 -2
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
- data/ext/libcouchbase/cmake/config-cmake.h.in +0 -2
- data/ext/libcouchbase/cmake/defs.mk.in +2 -0
- data/ext/libcouchbase/cmake/source_files.cmake +5 -21
- data/ext/libcouchbase/include/libcouchbase/auth.h +0 -10
- data/ext/libcouchbase/include/libcouchbase/cntl.h +1 -27
- data/ext/libcouchbase/include/libcouchbase/error.h +1 -15
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +1 -13
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +1 -1
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +0 -9
- data/ext/libcouchbase/include/libcouchbase/views.h +1 -7
- data/ext/libcouchbase/include/libcouchbase/visibility.h +0 -1
- data/ext/libcouchbase/include/memcached/protocol_binary.h +1131 -29
- data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
- data/ext/libcouchbase/packaging/parse-git-describe.pl +1 -1
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +2 -3
- data/ext/libcouchbase/src/README.md +2 -0
- data/ext/libcouchbase/src/auth-priv.h +0 -1
- data/ext/libcouchbase/src/auth.cc +4 -10
- data/ext/libcouchbase/src/bootstrap.c +269 -0
- data/ext/libcouchbase/src/bootstrap.h +39 -50
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +117 -84
- data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +25 -50
- data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +386 -407
- data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
- data/ext/libcouchbase/src/cbft.cc +27 -22
- data/ext/libcouchbase/src/cntl.cc +19 -30
- data/ext/libcouchbase/src/connspec.cc +1 -48
- data/ext/libcouchbase/src/connspec.h +0 -27
- data/ext/libcouchbase/src/dump.cc +2 -2
- data/ext/libcouchbase/src/getconfig.cc +33 -7
- data/ext/libcouchbase/src/handler.cc +2 -0
- data/ext/libcouchbase/src/hostlist.cc +36 -0
- data/ext/libcouchbase/src/hostlist.h +62 -41
- data/ext/libcouchbase/src/http/http-priv.h +112 -125
- data/ext/libcouchbase/src/http/http.cc +30 -15
- data/ext/libcouchbase/src/http/http.h +34 -1
- data/ext/libcouchbase/src/http/http_io.cc +26 -22
- data/ext/libcouchbase/src/instance.cc +23 -94
- data/ext/libcouchbase/src/internal.h +26 -52
- data/ext/libcouchbase/src/jsparse/parser.cc +202 -146
- data/ext/libcouchbase/src/jsparse/parser.h +98 -91
- data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +163 -174
- data/ext/libcouchbase/src/lcbio/connect.c +557 -0
- data/ext/libcouchbase/src/lcbio/connect.h +2 -9
- data/ext/libcouchbase/src/lcbio/ctx.c +1 -1
- data/ext/libcouchbase/src/lcbio/iotable.h +16 -61
- data/ext/libcouchbase/src/lcbio/ioutils.h +1 -1
- data/ext/libcouchbase/src/lcbio/manager.c +2 -2
- data/ext/libcouchbase/src/mc/mcreq.h +2 -9
- data/ext/libcouchbase/src/mcserver/mcserver.cc +34 -143
- data/ext/libcouchbase/src/mcserver/mcserver.h +12 -7
- data/ext/libcouchbase/src/mcserver/negotiate.cc +38 -132
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +2 -1
- data/ext/libcouchbase/src/n1ql/n1ql.cc +32 -56
- data/ext/libcouchbase/src/newconfig.cc +6 -6
- data/ext/libcouchbase/src/nodeinfo.cc +2 -2
- data/ext/libcouchbase/src/operations/{cbflush.cc → cbflush.c} +15 -7
- data/ext/libcouchbase/src/operations/{counter.cc → counter.c} +0 -0
- data/ext/libcouchbase/src/operations/durability.cc +26 -6
- data/ext/libcouchbase/src/operations/durability_internal.h +3 -6
- data/ext/libcouchbase/src/operations/{get.cc → get.c} +26 -24
- data/ext/libcouchbase/src/operations/{observe.cc → observe.c} +93 -68
- data/ext/libcouchbase/src/operations/{pktfwd.cc → pktfwd.c} +0 -0
- data/ext/libcouchbase/src/operations/{remove.cc → remove.c} +0 -0
- data/ext/libcouchbase/src/operations/stats.cc +8 -3
- data/ext/libcouchbase/src/operations/{store.cc → store.c} +32 -27
- data/ext/libcouchbase/src/operations/subdoc.cc +18 -38
- data/ext/libcouchbase/src/operations/{touch.cc → touch.c} +0 -0
- data/ext/libcouchbase/src/packetutils.c +37 -0
- data/ext/libcouchbase/src/packetutils.h +2 -2
- data/ext/libcouchbase/src/probes.d +1 -1
- data/ext/libcouchbase/src/{retrychk.cc → retrychk.c} +3 -2
- data/ext/libcouchbase/src/retryq.cc +4 -4
- data/ext/libcouchbase/src/settings.c +0 -3
- data/ext/libcouchbase/src/settings.h +0 -5
- data/ext/libcouchbase/src/simplestring.c +211 -0
- data/ext/libcouchbase/src/simplestring.h +228 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +0 -1
- data/ext/libcouchbase/src/ssl/ssl_common.c +0 -2
- data/ext/libcouchbase/src/ssl/ssl_e.c +1 -0
- data/ext/libcouchbase/src/ssobuf.h +82 -0
- data/ext/libcouchbase/src/trace.h +4 -4
- data/ext/libcouchbase/src/vbucket/vbucket.c +1 -0
- data/ext/libcouchbase/src/views/{docreq.cc → docreq.c} +54 -48
- data/ext/libcouchbase/src/views/docreq.h +30 -24
- data/ext/libcouchbase/src/views/viewreq.c +358 -0
- data/ext/libcouchbase/src/views/viewreq.h +13 -43
- data/ext/libcouchbase/tests/basic/t_connstr.cc +50 -89
- data/ext/libcouchbase/tests/basic/t_host.cc +75 -67
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +78 -27
- data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +78 -58
- data/ext/libcouchbase/tests/iotests/mock-environment.h +1 -2
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +114 -96
- data/ext/libcouchbase/tests/mc/t_alloc.cc +9 -9
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +1 -1
- data/lib/libcouchbase/ext/tasks.rb +6 -2
- data/lib/libcouchbase/query_view.rb +1 -1
- data/lib/libcouchbase/results_fiber.rb +6 -6
- data/lib/libcouchbase/version.rb +1 -1
- metadata +26 -26
- data/ext/libcouchbase/src/bootstrap.cc +0 -216
- data/ext/libcouchbase/src/bucketconfig/bc_file.cc +0 -281
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +0 -528
- data/ext/libcouchbase/src/bucketconfig/bc_mcraw.cc +0 -115
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +0 -378
- data/ext/libcouchbase/src/dns-srv.cc +0 -142
- data/ext/libcouchbase/src/errmap.cc +0 -107
- data/ext/libcouchbase/src/errmap.h +0 -113
- data/ext/libcouchbase/src/lcbht/lcbht.cc +0 -177
- data/ext/libcouchbase/src/lcbio/connect.cc +0 -562
- data/ext/libcouchbase/src/lcbio/timer-cxx.h +0 -87
- data/ext/libcouchbase/src/mctx-helper.h +0 -51
- data/ext/libcouchbase/src/views/viewreq.cc +0 -318
- data/ext/libcouchbase/tests/iotests/t_errmap.cc +0 -97
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
#include "connspec.h"
|
|
3
3
|
using namespace lcb;
|
|
4
4
|
|
|
5
|
+
static lcb_error_t lcb_connspec_parse(const char *connstr, Connspec *spec, const char **errmsg)
|
|
6
|
+
{
|
|
7
|
+
return spec->parse(connstr, errmsg);
|
|
8
|
+
}
|
|
9
|
+
static lcb_error_t lcb_connspec_convert(Connspec *spec, const lcb_create_st *cropts)
|
|
10
|
+
{
|
|
11
|
+
return spec->load(*cropts);
|
|
12
|
+
}
|
|
5
13
|
static size_t countHosts(const Connspec *spec) {
|
|
6
14
|
return spec->hosts().size();
|
|
7
15
|
}
|
|
@@ -102,7 +110,7 @@ TEST_F(ConnstrTest, testParseBasic)
|
|
|
102
110
|
ASSERT_EQ(LCB_CONFIG_HTTP_PORT, params.default_port());
|
|
103
111
|
|
|
104
112
|
reinit();
|
|
105
|
-
err =
|
|
113
|
+
err = lcb_connspec_parse("1.2.3.4:999", ¶ms, &errmsg);
|
|
106
114
|
ASSERT_EQ(1, countHosts(¶ms));
|
|
107
115
|
tmphost = findHost(¶ms, "1.2.3.4");
|
|
108
116
|
ASSERT_FALSE(tmphost == NULL);
|
|
@@ -114,7 +122,7 @@ TEST_F(ConnstrTest, testParseBasic)
|
|
|
114
122
|
TEST_F(ConnstrTest, testParseHosts)
|
|
115
123
|
{
|
|
116
124
|
lcb_error_t err;
|
|
117
|
-
err =
|
|
125
|
+
err = lcb_connspec_parse("couchbase://foo.com,bar.com,baz.com", ¶ms, &errmsg);
|
|
118
126
|
ASSERT_EQ(3, countHosts(¶ms));
|
|
119
127
|
ASSERT_FALSE(NULL == findHost(¶ms, "foo.com"));
|
|
120
128
|
ASSERT_FALSE(NULL == findHost(¶ms, "bar.com"));
|
|
@@ -122,7 +130,7 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
122
130
|
|
|
123
131
|
// Parse with 'legacy' format
|
|
124
132
|
reinit();
|
|
125
|
-
err =
|
|
133
|
+
err = lcb_connspec_parse("couchbase://foo.com:8091", ¶ms, &errmsg);
|
|
126
134
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
127
135
|
const Spechost *dh = findHost(¶ms, "foo.com");
|
|
128
136
|
ASSERT_FALSE(NULL == dh);
|
|
@@ -133,14 +141,14 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
133
141
|
|
|
134
142
|
// parse with invalid port, without specifying protocol
|
|
135
143
|
reinit();
|
|
136
|
-
err =
|
|
144
|
+
err = lcb_connspec_parse("couchbase://foo.com:4444", ¶ms, &errmsg);
|
|
137
145
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
138
146
|
dh = findHost(¶ms, "foo.com");
|
|
139
147
|
ASSERT_EQ(4444, dh->port);
|
|
140
148
|
ASSERT_TRUE(dh->isMCD());
|
|
141
149
|
|
|
142
150
|
reinit();
|
|
143
|
-
err =
|
|
151
|
+
err = lcb_connspec_parse("couchbases://foo.com:4444", ¶ms, &errmsg);
|
|
144
152
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
145
153
|
dh = findHost(¶ms, "foo.com");
|
|
146
154
|
ASSERT_EQ(LCB_SSL_ENABLED, params.sslopts());
|
|
@@ -149,7 +157,7 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
149
157
|
|
|
150
158
|
// Parse with recognized format
|
|
151
159
|
reinit();
|
|
152
|
-
err =
|
|
160
|
+
err = lcb_connspec_parse("couchbase://foo.com:4444=mcd", ¶ms, &errmsg);
|
|
153
161
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
154
162
|
dh = findHost(¶ms, "foo.com");
|
|
155
163
|
ASSERT_EQ("foo.com", dh->hostname);
|
|
@@ -158,7 +166,8 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
158
166
|
|
|
159
167
|
//Parse multiple hosts with ports
|
|
160
168
|
reinit();
|
|
161
|
-
err =
|
|
169
|
+
err = lcb_connspec_parse("couchbase://foo.com:4444=mcd,bar.com:5555=mcd",
|
|
170
|
+
¶ms, &errmsg);
|
|
162
171
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
163
172
|
|
|
164
173
|
dh = findHost(¶ms, "foo.com");
|
|
@@ -174,7 +183,7 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
174
183
|
ASSERT_TRUE(dh->isMCD());
|
|
175
184
|
|
|
176
185
|
reinit();
|
|
177
|
-
err =
|
|
186
|
+
err = lcb_connspec_parse("couchbase://foo.com,bar.com:4444", ¶ms, &errmsg);
|
|
178
187
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
179
188
|
dh = findHost(¶ms, "bar.com");
|
|
180
189
|
ASSERT_EQ(4444, dh->port);
|
|
@@ -183,7 +192,7 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
183
192
|
ASSERT_TRUE(dh->isTypeless());
|
|
184
193
|
|
|
185
194
|
reinit();
|
|
186
|
-
err =
|
|
195
|
+
err = lcb_connspec_parse("couchbase://foo.com;bar.com;baz.com", ¶ms, &errmsg);
|
|
187
196
|
ASSERT_EQ(LCB_SUCCESS, err) << "Can parse old-style semicolons";
|
|
188
197
|
ASSERT_EQ(3, countHosts(¶ms));
|
|
189
198
|
ASSERT_FALSE(NULL == findHost(¶ms, "foo.com"));
|
|
@@ -194,27 +203,27 @@ TEST_F(ConnstrTest, testParseHosts)
|
|
|
194
203
|
TEST_F(ConnstrTest, testParseBucket)
|
|
195
204
|
{
|
|
196
205
|
lcb_error_t err;
|
|
197
|
-
err =
|
|
206
|
+
err = lcb_connspec_parse("couchbase://foo.com/user", ¶ms, &errmsg);
|
|
198
207
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
199
208
|
ASSERT_EQ("user", params.bucket()) << "Basic bucket parse";
|
|
200
209
|
|
|
201
210
|
reinit();
|
|
202
|
-
err =
|
|
211
|
+
err = lcb_connspec_parse("couchbase://foo.com/user/", ¶ms, &errmsg);
|
|
203
212
|
ASSERT_EQ(LCB_SUCCESS, err) << "Bucket can have a slash";
|
|
204
213
|
// We can have a bucket using a slash
|
|
205
214
|
|
|
206
215
|
reinit();
|
|
207
|
-
err =
|
|
216
|
+
err = lcb_connspec_parse("couchbase:///default", ¶ms, &errmsg);
|
|
208
217
|
ASSERT_EQ(LCB_SUCCESS, err) << "Bucket without host OK";
|
|
209
218
|
ASSERT_EQ("default", params.bucket());
|
|
210
219
|
|
|
211
220
|
reinit();
|
|
212
|
-
err =
|
|
221
|
+
err = lcb_connspec_parse("couchbase:///default?", ¶ms, &errmsg);
|
|
213
222
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
214
223
|
ASSERT_EQ("default", params.bucket());
|
|
215
224
|
|
|
216
225
|
reinit();
|
|
217
|
-
err =
|
|
226
|
+
err = lcb_connspec_parse("couchbase:///%2FUsers%2F?", ¶ms, &errmsg);
|
|
218
227
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
219
228
|
ASSERT_EQ("/Users/", params.bucket());
|
|
220
229
|
}
|
|
@@ -222,7 +231,7 @@ TEST_F(ConnstrTest, testParseBucket)
|
|
|
222
231
|
TEST_F(ConnstrTest, testOptionsPassthrough)
|
|
223
232
|
{
|
|
224
233
|
lcb_error_t err;
|
|
225
|
-
err =
|
|
234
|
+
err = lcb_connspec_parse("couchbase://?foo=bar", ¶ms, &errmsg);
|
|
226
235
|
ASSERT_EQ(LCB_SUCCESS, err) << "Options only";
|
|
227
236
|
ASSERT_FALSE(params.options().empty());
|
|
228
237
|
ASSERT_NE(0, params.options().size());
|
|
@@ -232,19 +241,19 @@ TEST_F(ConnstrTest, testOptionsPassthrough)
|
|
|
232
241
|
ASSERT_EQ("bar", op.value);
|
|
233
242
|
|
|
234
243
|
reinit();
|
|
235
|
-
err =
|
|
244
|
+
err = lcb_connspec_parse("couchbase://?foo=bar", ¶ms, &errmsg);
|
|
236
245
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
237
246
|
ASSERT_TRUE(findOption(¶ms, "foo", op));
|
|
238
247
|
ASSERT_EQ("bar", op.value);
|
|
239
248
|
|
|
240
249
|
reinit();
|
|
241
|
-
err =
|
|
250
|
+
err = lcb_connspec_parse("couchbase://?foo", ¶ms, &errmsg);
|
|
242
251
|
ASSERT_NE(LCB_SUCCESS, err) << "Option without value";
|
|
243
252
|
|
|
244
253
|
|
|
245
254
|
// Multiple options
|
|
246
255
|
reinit();
|
|
247
|
-
err =
|
|
256
|
+
err = lcb_connspec_parse("couchbase://?foo=fooval&bar=barval", ¶ms, &errmsg);
|
|
248
257
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
249
258
|
ASSERT_TRUE(findOption(¶ms, "foo", op));
|
|
250
259
|
ASSERT_EQ("fooval", op.value);
|
|
@@ -253,18 +262,20 @@ TEST_F(ConnstrTest, testOptionsPassthrough)
|
|
|
253
262
|
ASSERT_EQ("barval", op.value);
|
|
254
263
|
|
|
255
264
|
reinit();
|
|
256
|
-
err =
|
|
265
|
+
err = lcb_connspec_parse("couchbase:///protected?ssl=on&compression=off",
|
|
266
|
+
¶ms, &errmsg);
|
|
257
267
|
ASSERT_EQ(LCB_SUCCESS, err) << "Ok with bucket and no hosts";
|
|
258
268
|
ASSERT_EQ(1, countHosts(¶ms));
|
|
259
269
|
ASSERT_FALSE(NULL == findHost(¶ms, "localhost"));
|
|
260
270
|
ASSERT_TRUE(findOption(¶ms, "compression", op));
|
|
261
271
|
|
|
262
272
|
reinit();
|
|
263
|
-
err =
|
|
273
|
+
err = lcb_connspec_parse("couchbase://?foo=foo&bar=bar&", ¶ms, &errmsg);
|
|
264
274
|
ASSERT_EQ(LCB_SUCCESS, err) << "Ok with trailing '&'";
|
|
265
275
|
|
|
266
276
|
reinit();
|
|
267
|
-
err =
|
|
277
|
+
err = lcb_connspec_parse("couchbase://?foo=foo&bootstrap_on=all&bar=bar",
|
|
278
|
+
¶ms, &errmsg);
|
|
268
279
|
ASSERT_EQ(LCB_SUCCESS, err) << "Ok with non-passthrough option";
|
|
269
280
|
ASSERT_TRUE(findOption(¶ms, "foo", op));
|
|
270
281
|
ASSERT_TRUE(findOption(¶ms, "bar", op));
|
|
@@ -274,32 +285,32 @@ TEST_F(ConnstrTest, testOptionsPassthrough)
|
|
|
274
285
|
TEST_F(ConnstrTest, testRecognizedOptions)
|
|
275
286
|
{
|
|
276
287
|
lcb_error_t err;
|
|
277
|
-
err =
|
|
288
|
+
err = lcb_connspec_parse("couchbases://", ¶ms, &errmsg);
|
|
278
289
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
279
290
|
ASSERT_EQ(LCB_SSL_ENABLED, params.sslopts());
|
|
280
291
|
|
|
281
292
|
reinit();
|
|
282
|
-
err =
|
|
293
|
+
err = lcb_connspec_parse("couchbase://?ssl=on", ¶ms, &errmsg);
|
|
283
294
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
284
295
|
ASSERT_EQ(LCB_SSL_ENABLED, params.sslopts());
|
|
285
296
|
|
|
286
297
|
reinit();
|
|
287
|
-
err =
|
|
298
|
+
err = lcb_connspec_parse("couchbases://?ssl=no_verify", ¶ms, &errmsg);
|
|
288
299
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
289
300
|
ASSERT_EQ(LCB_SSL_ENABLED|LCB_SSL_NOVERIFY, params.sslopts());
|
|
290
301
|
|
|
291
302
|
reinit();
|
|
292
|
-
err =
|
|
303
|
+
err = lcb_connspec_parse("couchbases://?ssl=off", ¶ms, &errmsg);
|
|
293
304
|
ASSERT_NE(LCB_SUCCESS, err);
|
|
294
305
|
|
|
295
306
|
// Loglevel
|
|
296
307
|
reinit();
|
|
297
|
-
err =
|
|
308
|
+
err = lcb_connspec_parse("couchbase://?console_log_level=5", ¶ms, &errmsg);
|
|
298
309
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
299
310
|
ASSERT_EQ(5, params.loglevel());
|
|
300
311
|
|
|
301
312
|
reinit();
|
|
302
|
-
err =
|
|
313
|
+
err = lcb_connspec_parse("couchbase://?console_log_level=gah", ¶ms, &errmsg);
|
|
303
314
|
ASSERT_NE(LCB_SUCCESS, err);
|
|
304
315
|
|
|
305
316
|
}
|
|
@@ -307,30 +318,30 @@ TEST_F(ConnstrTest, testRecognizedOptions)
|
|
|
307
318
|
TEST_F(ConnstrTest, testTransportOptions)
|
|
308
319
|
{
|
|
309
320
|
lcb_error_t err;
|
|
310
|
-
err =
|
|
321
|
+
err = lcb_connspec_parse("couchbase://", ¶ms, &errmsg);
|
|
311
322
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
312
323
|
ASSERT_FALSE(params.is_bs_udef());
|
|
313
324
|
|
|
314
325
|
reinit();
|
|
315
|
-
err =
|
|
326
|
+
err = lcb_connspec_parse("couchbase://?bootstrap_on=cccp", ¶ms, &errmsg);
|
|
316
327
|
ASSERT_EQ(LCB_SUCCESS, err) << "bootstrap_on=cccp";
|
|
317
328
|
ASSERT_TRUE(params.has_bsmode(LCB_CONFIG_TRANSPORT_CCCP));
|
|
318
329
|
ASSERT_FALSE(params.has_bsmode(LCB_CONFIG_TRANSPORT_HTTP));
|
|
319
330
|
|
|
320
331
|
reinit();
|
|
321
|
-
err =
|
|
332
|
+
err = lcb_connspec_parse("couchbase://?bootstrap_on=http", ¶ms, &errmsg);
|
|
322
333
|
ASSERT_EQ(LCB_SUCCESS, err) << "bootstrap_on=http";
|
|
323
334
|
ASSERT_TRUE(params.has_bsmode(LCB_CONFIG_TRANSPORT_HTTP));
|
|
324
335
|
ASSERT_FALSE(params.has_bsmode(LCB_CONFIG_TRANSPORT_CCCP));
|
|
325
336
|
|
|
326
337
|
reinit();
|
|
327
|
-
err =
|
|
338
|
+
err = lcb_connspec_parse("couchbase://?bootstrap_on=all", ¶ms, &errmsg);
|
|
328
339
|
ASSERT_EQ(LCB_SUCCESS, err) << "bootstrap_on=all";
|
|
329
340
|
ASSERT_TRUE(params.has_bsmode(LCB_CONFIG_TRANSPORT_CCCP));
|
|
330
341
|
ASSERT_TRUE(params.has_bsmode(LCB_CONFIG_TRANSPORT_HTTP));
|
|
331
342
|
|
|
332
343
|
reinit();
|
|
333
|
-
err =
|
|
344
|
+
err = lcb_connspec_parse("couchbase://?bootstrap_on=bleh", ¶ms, &errmsg);
|
|
334
345
|
ASSERT_NE(LCB_SUCCESS, err) << "Error on bad bootstrap_on value";
|
|
335
346
|
}
|
|
336
347
|
|
|
@@ -344,7 +355,7 @@ TEST_F(ConnstrTest, testCompatConversion)
|
|
|
344
355
|
cropts.v.v0.host = "foo.com;bar.com;baz.com";
|
|
345
356
|
cropts.v.v0.passwd = "secret";
|
|
346
357
|
|
|
347
|
-
err = params
|
|
358
|
+
err = lcb_connspec_convert(¶ms, &cropts);
|
|
348
359
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
349
360
|
ASSERT_FALSE(NULL == findHost(¶ms, "foo.com"));
|
|
350
361
|
ASSERT_FALSE(NULL == findHost(¶ms, "bar.com"));
|
|
@@ -361,7 +372,7 @@ TEST_F(ConnstrTest, testCompatConversion)
|
|
|
361
372
|
cropts.version = 2;
|
|
362
373
|
cropts.v.v2.host = "foo.com:9030;bar.com:9040;baz.com:9050";
|
|
363
374
|
cropts.v.v2.mchosts = "foo.com:7030;bar.com:7040;baz.com:7050";
|
|
364
|
-
err = params
|
|
375
|
+
err = lcb_connspec_convert(¶ms, &cropts);
|
|
365
376
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
366
377
|
ASSERT_EQ(6, countHosts(¶ms));
|
|
367
378
|
|
|
@@ -371,7 +382,7 @@ TEST_F(ConnstrTest, testCompatConversion)
|
|
|
371
382
|
cropts.version = 3;
|
|
372
383
|
cropts.v.v3.passwd = "secret";
|
|
373
384
|
cropts.v.v3.connstr = "couchbase:///fluffle?password=bleh";
|
|
374
|
-
err = params
|
|
385
|
+
err = lcb_connspec_convert(¶ms, &cropts);
|
|
375
386
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
376
387
|
ASSERT_EQ("fluffle", params.bucket());
|
|
377
388
|
ASSERT_EQ(cropts.v.v3.passwd, params.password());
|
|
@@ -382,62 +393,12 @@ TEST_F(ConnstrTest, testCertificateWithoutSSL)
|
|
|
382
393
|
// Ensure we get an invalid input error for certificate paths without
|
|
383
394
|
// couchbases://
|
|
384
395
|
lcb_error_t err;
|
|
385
|
-
err =
|
|
386
|
-
"couchbase://1.2.3.4/default?certpath=/foo/bar/baz", &errmsg);
|
|
396
|
+
err = lcb_connspec_parse(
|
|
397
|
+
"couchbase://1.2.3.4/default?certpath=/foo/bar/baz", ¶ms, &errmsg);
|
|
387
398
|
ASSERT_NE(LCB_SUCCESS, err);
|
|
388
399
|
|
|
389
400
|
reinit();
|
|
390
|
-
err =
|
|
391
|
-
"couchbases://1.2.3.4/default?certpath=/foo/bar/baz", &errmsg);
|
|
401
|
+
err = lcb_connspec_parse(
|
|
402
|
+
"couchbases://1.2.3.4/default?certpath=/foo/bar/baz", ¶ms, &errmsg);
|
|
392
403
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
393
404
|
}
|
|
394
|
-
|
|
395
|
-
TEST_F(ConnstrTest, testDnsSrvExplicit)
|
|
396
|
-
{
|
|
397
|
-
// Test various things relating to DNS SRV
|
|
398
|
-
lcb_error_t err;
|
|
399
|
-
err = params.parse("couchbase+dnssrv://1.1.1.1", &errmsg);
|
|
400
|
-
EXPECT_EQ(LCB_SUCCESS, err);
|
|
401
|
-
EXPECT_TRUE(params.can_dnssrv());
|
|
402
|
-
EXPECT_TRUE(params.is_explicit_dnssrv());
|
|
403
|
-
|
|
404
|
-
reinit();
|
|
405
|
-
err = params.parse("couchbase+dnssrv://1.1.1.1,2.2.2.2", &errmsg);
|
|
406
|
-
EXPECT_NE(LCB_SUCCESS, err);
|
|
407
|
-
|
|
408
|
-
reinit();
|
|
409
|
-
err = params.parse("couchbases+dnssrv://1.1.1.1", &errmsg);
|
|
410
|
-
EXPECT_EQ(LCB_SUCCESS, err);
|
|
411
|
-
EXPECT_NE(0, params.sslopts());
|
|
412
|
-
EXPECT_TRUE(params.can_dnssrv());
|
|
413
|
-
EXPECT_TRUE(params.is_explicit_dnssrv());
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
TEST_F(ConnstrTest, testDnsSrvImplicit)
|
|
417
|
-
{
|
|
418
|
-
lcb_error_t err;
|
|
419
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbase://"));
|
|
420
|
-
EXPECT_FALSE(params.can_dnssrv());
|
|
421
|
-
EXPECT_FALSE(params.is_explicit_dnssrv());
|
|
422
|
-
|
|
423
|
-
reinit();
|
|
424
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbase://1.1.1.1"));
|
|
425
|
-
EXPECT_TRUE(params.can_dnssrv());
|
|
426
|
-
EXPECT_FALSE(params.is_explicit_dnssrv());
|
|
427
|
-
|
|
428
|
-
reinit();
|
|
429
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbase://1.1.1.1,2.2.2.2"));
|
|
430
|
-
EXPECT_FALSE(params.can_dnssrv()) << "No implicit SRV on multiple hosts";
|
|
431
|
-
|
|
432
|
-
reinit();
|
|
433
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbase://1.1.1.1:666"));
|
|
434
|
-
EXPECT_FALSE(params.can_dnssrv());
|
|
435
|
-
|
|
436
|
-
reinit();
|
|
437
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbase://1.1.1.1:11210"));
|
|
438
|
-
EXPECT_TRUE(params.can_dnssrv());
|
|
439
|
-
|
|
440
|
-
reinit();
|
|
441
|
-
EXPECT_EQ(LCB_SUCCESS, params.parse("couchbases://1.1.1.1"));
|
|
442
|
-
EXPECT_TRUE(params.can_dnssrv());
|
|
443
|
-
}
|
|
@@ -82,109 +82,117 @@ TEST_F(Hostlist, testEquals)
|
|
|
82
82
|
|
|
83
83
|
TEST_F(Hostlist, testParseList)
|
|
84
84
|
{
|
|
85
|
-
|
|
85
|
+
hostlist_t hosts = hostlist_create();
|
|
86
|
+
ASSERT_FALSE(NULL == hosts);
|
|
86
87
|
|
|
87
88
|
lcb_error_t err;
|
|
88
|
-
err = hosts
|
|
89
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1", 8091);
|
|
89
90
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
90
|
-
ASSERT_EQ(1, hosts
|
|
91
|
-
ASSERT_TRUE(hosts
|
|
91
|
+
ASSERT_EQ(1, hosts->size());
|
|
92
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:8091"));
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
|
|
95
|
+
hostlist_clear(hosts);
|
|
96
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1;", 8091);
|
|
95
97
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
96
|
-
ASSERT_EQ(1, hosts
|
|
97
|
-
ASSERT_TRUE(hosts
|
|
98
|
+
ASSERT_EQ(1, hosts->size());
|
|
99
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:8091"));
|
|
98
100
|
|
|
99
|
-
hosts
|
|
100
|
-
err = hosts
|
|
101
|
+
hostlist_clear(hosts);
|
|
102
|
+
err = hostlist_add_stringz(hosts, ";", 8091);
|
|
101
103
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
102
|
-
ASSERT_EQ(0, hosts
|
|
104
|
+
ASSERT_EQ(0, hosts->size());
|
|
103
105
|
|
|
104
|
-
hosts
|
|
105
|
-
err = hosts
|
|
106
|
+
hostlist_clear(hosts);
|
|
107
|
+
err = hostlist_add_stringz(hosts, ";;;;", 8091);
|
|
106
108
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
107
|
-
ASSERT_EQ(0, hosts
|
|
109
|
+
ASSERT_EQ(0, hosts->size());
|
|
108
110
|
|
|
109
|
-
hosts
|
|
110
|
-
err = hosts
|
|
111
|
+
hostlist_clear(hosts);
|
|
112
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1;2.2.2.2", 8091);
|
|
111
113
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
112
|
-
ASSERT_EQ(2, hosts
|
|
113
|
-
ASSERT_TRUE(hosts
|
|
114
|
-
ASSERT_TRUE(hosts
|
|
114
|
+
ASSERT_EQ(2, hosts->size());
|
|
115
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:8091"));
|
|
116
|
+
ASSERT_TRUE(hosts->exists("2.2.2.2:8091"));
|
|
117
|
+
|
|
115
118
|
|
|
116
|
-
hosts
|
|
117
|
-
err = hosts
|
|
119
|
+
hostlist_clear(hosts);
|
|
120
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1:1000;2.2.2.2:2000;3.3.3.3", 8091);
|
|
118
121
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
119
|
-
ASSERT_EQ(3, hosts
|
|
120
|
-
ASSERT_TRUE(hosts
|
|
121
|
-
ASSERT_TRUE(hosts
|
|
122
|
-
ASSERT_TRUE(hosts
|
|
122
|
+
ASSERT_EQ(3, hosts->size());
|
|
123
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:1000"));
|
|
124
|
+
ASSERT_TRUE(hosts->exists("2.2.2.2:2000"));
|
|
125
|
+
ASSERT_TRUE(hosts->exists("3.3.3.3:8091"));
|
|
123
126
|
|
|
124
|
-
hosts
|
|
125
|
-
err = hosts
|
|
127
|
+
hostlist_clear(hosts);
|
|
128
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1;1.1.1.1;1.1.1.1", 8091);
|
|
126
129
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
127
|
-
ASSERT_EQ(1, hosts
|
|
128
|
-
ASSERT_TRUE(hosts
|
|
130
|
+
ASSERT_EQ(1, hosts->size());
|
|
131
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:8091"));
|
|
129
132
|
|
|
130
133
|
|
|
131
|
-
hosts
|
|
132
|
-
err = hosts
|
|
134
|
+
hostlist_clear(hosts);
|
|
135
|
+
err = hostlist_add_stringz(hosts, "1.1.1.1:9000;1.1.1.1:9001;1.1.1.1:9002", 8091);
|
|
133
136
|
ASSERT_EQ(LCB_SUCCESS, err);
|
|
134
|
-
ASSERT_EQ(3, hosts
|
|
135
|
-
ASSERT_TRUE(hosts
|
|
136
|
-
ASSERT_TRUE(hosts
|
|
137
|
-
ASSERT_TRUE(hosts
|
|
138
|
-
|
|
139
|
-
hosts
|
|
140
|
-
ASSERT_EQ(LCB_SUCCESS, hosts
|
|
141
|
-
ASSERT_EQ(LCB_SUCCESS, hosts
|
|
142
|
-
ASSERT_EQ(LCB_SUCCESS, hosts
|
|
143
|
-
ASSERT_EQ(3, hosts
|
|
144
|
-
|
|
145
|
-
ASSERT_TRUE(hosts
|
|
146
|
-
ASSERT_TRUE(hosts
|
|
147
|
-
ASSERT_TRUE(hosts
|
|
148
|
-
|
|
149
|
-
hosts
|
|
150
|
-
hosts
|
|
151
|
-
hosts
|
|
137
|
+
ASSERT_EQ(3, hosts->size());
|
|
138
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:9000"));
|
|
139
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:9001"));
|
|
140
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:9002"));
|
|
141
|
+
|
|
142
|
+
hostlist_clear(hosts);
|
|
143
|
+
ASSERT_EQ(LCB_SUCCESS, hostlist_add_stringz(hosts, "1.1.1.1", 8091));
|
|
144
|
+
ASSERT_EQ(LCB_SUCCESS, hostlist_add_stringz(hosts, "2.2.2.2", 8091));
|
|
145
|
+
ASSERT_EQ(LCB_SUCCESS, hostlist_add_stringz(hosts, "3.3.3.3", 8091));
|
|
146
|
+
ASSERT_EQ(3, hosts->size());
|
|
147
|
+
|
|
148
|
+
ASSERT_TRUE(hosts->exists("1.1.1.1:8091"));
|
|
149
|
+
ASSERT_TRUE(hosts->exists("2.2.2.2:8091"));
|
|
150
|
+
ASSERT_TRUE(hosts->exists("3.3.3.3:8091"));
|
|
151
|
+
|
|
152
|
+
hostlist_randomize(hosts);
|
|
153
|
+
hostlist_clear(hosts);
|
|
154
|
+
hostlist_randomize(hosts);
|
|
155
|
+
|
|
156
|
+
hostlist_destroy(hosts);
|
|
152
157
|
}
|
|
153
158
|
|
|
154
159
|
TEST_F(Hostlist, testCycle)
|
|
155
160
|
{
|
|
156
|
-
|
|
161
|
+
hostlist_t hosts = hostlist_create();
|
|
157
162
|
lcb_host_t *curhost;
|
|
158
163
|
|
|
164
|
+
|
|
159
165
|
// Empty list
|
|
160
|
-
ASSERT_EQ(NULL, hosts
|
|
161
|
-
ASSERT_EQ(NULL, hosts
|
|
166
|
+
ASSERT_EQ(NULL, hostlist_shift_next(hosts, 0));
|
|
167
|
+
ASSERT_EQ(NULL, hostlist_shift_next(hosts, 1));
|
|
168
|
+
hostlist_destroy(hosts);
|
|
169
|
+
hosts = hostlist_create();
|
|
162
170
|
|
|
163
|
-
hosts.
|
|
164
|
-
hosts
|
|
165
|
-
curhost = hosts.next(false);
|
|
171
|
+
hostlist_add_stringz(hosts, "1.1.1.1", 8091);
|
|
172
|
+
curhost = hostlist_shift_next(hosts, 0);
|
|
166
173
|
ASSERT_TRUE(curhost != NULL);
|
|
167
174
|
ASSERT_TRUE(hostEquals(*curhost, "1.1.1.1", "8091"));
|
|
168
175
|
|
|
169
|
-
curhost = hosts
|
|
170
|
-
ASSERT_TRUE(hosts
|
|
171
|
-
ASSERT_TRUE(hosts
|
|
172
|
-
ASSERT_TRUE(hosts
|
|
176
|
+
curhost = hostlist_shift_next(hosts, 0);
|
|
177
|
+
ASSERT_TRUE(hostlist_shift_next(hosts, 0) == NULL);
|
|
178
|
+
ASSERT_TRUE(hostlist_shift_next(hosts, 0) == NULL);
|
|
179
|
+
ASSERT_TRUE(hosts->ix == 1);
|
|
173
180
|
|
|
174
|
-
curhost = hosts
|
|
181
|
+
curhost = hostlist_shift_next(hosts, 1);
|
|
175
182
|
ASSERT_TRUE(curhost != NULL);
|
|
176
183
|
ASSERT_TRUE(hostEquals(*curhost, "1.1.1.1", "8091"));
|
|
177
184
|
|
|
178
|
-
hosts
|
|
179
|
-
curhost = hosts
|
|
185
|
+
hostlist_add_stringz(hosts, "2.2.2.2", 8091);
|
|
186
|
+
curhost = hostlist_shift_next(hosts, 0);
|
|
180
187
|
ASSERT_TRUE(hostEquals(*curhost, "2.2.2.2", "8091"));
|
|
181
|
-
ASSERT_TRUE(hosts
|
|
188
|
+
ASSERT_TRUE(hostlist_shift_next(hosts, 0) == NULL);
|
|
182
189
|
|
|
183
|
-
curhost = hosts
|
|
190
|
+
curhost = hostlist_shift_next(hosts, 1);
|
|
184
191
|
ASSERT_TRUE(hostEquals(*curhost, "1.1.1.1", "8091"));
|
|
185
|
-
curhost = hosts
|
|
192
|
+
curhost = hostlist_shift_next(hosts, 0);
|
|
186
193
|
ASSERT_TRUE(hostEquals(*curhost, "2.2.2.2", "8091"));
|
|
187
194
|
|
|
188
|
-
hosts
|
|
189
|
-
ASSERT_TRUE(hosts
|
|
195
|
+
hostlist_clear(hosts);
|
|
196
|
+
ASSERT_TRUE(hostlist_shift_next(hosts, 1) == NULL);
|
|
197
|
+
hostlist_destroy(hosts);
|
|
190
198
|
}
|