Skip to content

Commit 457b6af

Browse files
committed
JSCBC-1354: Update Bucket Mangement tests to handle new numVBuckets
setting Changes ======= * Updated bucket management tests to check for server version and update expected BucketSettings values accordingly. * Updated bucketmanager.ts to fix linting issue. Change-Id: Iafe59c4746c7b35f0a26499845c9b614e53c5a84 Reviewed-on: https://review.couchbase.org/c/couchnode/+/229390 Reviewed-by: Mateusz <[email protected]> Tested-by: Jared Casey <[email protected]>
1 parent 885b43e commit 457b6af

File tree

3 files changed

+60
-5
lines changed

3 files changed

+60
-5
lines changed

lib/bucketmanager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ export interface IBucketSettings {
228228
historyRetentionDuration?: number
229229

230230
/**
231-
* Specifies the number of vBuckets in this bucket
231+
* Specifies the number of vBuckets in this bucket.
232232
*/
233233
numVBuckets?: number
234234

@@ -342,7 +342,7 @@ export class BucketSettings implements IBucketSettings {
342342
historyRetentionDuration?: number
343343

344344
/**
345-
* Specifies the number of vBuckets in this bucket
345+
* Specifies the number of vBuckets in this bucket.
346346
*/
347347
numVBuckets?: number
348348

test/bucketmanager.test.js

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,19 @@ describe('#bucketmanager', function () {
5858
if (!H.supportsFeature(H.Features.StorageBackend)) {
5959
expected.storageBackend = undefined
6060
}
61+
if (H.supportsFeature(H.Features.NumVbucketsSetting)) {
62+
expected.numVBuckets = 1024
63+
} else {
64+
expected.numVBuckets = undefined
65+
}
66+
if (H.isServerVersionAtLeast(8, 0, 0)) {
67+
expected.storageBackend = 'magma'
68+
expected.historyRetentionCollectionDefault = true
69+
expected.historyRetentionBytes = 0
70+
expected.historyRetentionDuration = 0
71+
expected.replicaIndexes = undefined
72+
expected.numVBuckets = 128
73+
}
6174
assert.deepStrictEqual(res, expected)
6275
})
6376

@@ -99,14 +112,31 @@ describe('#bucketmanager', function () {
99112
it('should return an InvalidArgument error when updating a couchstore bucket with history', async function () {
100113
H.skipIfMissingFeature(this, H.Features.BucketDedup)
101114

115+
let bucketName = testBucket
102116
var bmgr = H.c.buckets()
117+
if (H.isServerVersionAtLeast(8, 0, 0)) {
118+
bucketName = H.genTestKey()
119+
await bmgr.createBucket({
120+
name: bucketName,
121+
flushEnabled: true,
122+
ramQuotaMB: 256,
123+
storageBackend: StorageBackend.Couchstore,
124+
})
125+
await H.consistencyUtils.waitUntilBucketPresent(bucketName)
126+
}
127+
103128
await H.throwsHelper(async () => {
104129
await bmgr.updateBucket({
105-
name: testBucket,
130+
name: bucketName,
106131
historyRetentionCollectionDefault: true,
107132
ramQuotaMB: 1024,
108133
})
109134
}, H.lib.InvalidArgumentError)
135+
136+
if (H.isServerVersionAtLeast(8, 0, 0)) {
137+
await bmgr.dropBucket(bucketName)
138+
await H.consistencyUtils.waitUntilBucketDropped(bucketName)
139+
}
110140
})
111141

112142
it('should error when trying to flush an unflushable bucket', async function () {
@@ -131,12 +161,16 @@ describe('#bucketmanager', function () {
131161

132162
it('should successfully create a bucket with flush and replicaIndexes disabled', async function () {
133163
var bmgr = H.c.buckets()
134-
await bmgr.createBucket({
164+
const settings = {
135165
name: testBucket,
136166
flushEnabled: false,
137167
replicaIndexes: false,
138168
ramQuotaMB: 256,
139-
})
169+
}
170+
if (H.isServerVersionAtLeast(8, 0, 0)) {
171+
settings.storageBackend = StorageBackend.Couchstore
172+
}
173+
await bmgr.createBucket(settings)
140174
await H.consistencyUtils.waitUntilBucketPresent(testBucket)
141175

142176
var res = await bmgr.getBucket(testBucket)
@@ -160,6 +194,11 @@ describe('#bucketmanager', function () {
160194
if (!H.supportsFeature(H.Features.StorageBackend)) {
161195
expected.storageBackend = undefined
162196
}
197+
if (H.supportsFeature(H.Features.NumVbucketsSetting)) {
198+
expected.numVBuckets = 1024
199+
} else {
200+
expected.numVBuckets = undefined
201+
}
163202
assert.deepStrictEqual(res, expected)
164203

165204
await bmgr.dropBucket(testBucket)
@@ -197,6 +236,11 @@ describe('#bucketmanager', function () {
197236
historyRetentionBytes: 2147483648,
198237
historyRetentionDuration: 13000,
199238
}
239+
if (H.supportsFeature(H.Features.NumVbucketsSetting)) {
240+
expected.numVBuckets = H.isServerVersionAtLeast(8, 0, 0) ? 128 : 1024
241+
} else {
242+
expected.numVBuckets = undefined
243+
}
200244

201245
assert.deepStrictEqual(res, expected)
202246
}).timeout(10 * 1000)
@@ -231,6 +275,11 @@ describe('#bucketmanager', function () {
231275
historyRetentionBytes: 0,
232276
historyRetentionDuration: 14000,
233277
}
278+
if (H.supportsFeature(H.Features.NumVbucketsSetting)) {
279+
expected.numVBuckets = H.isServerVersionAtLeast(8, 0, 0) ? 128 : 1024
280+
} else {
281+
expected.numVBuckets = undefined
282+
}
234283

235284
assert.deepStrictEqual(res, expected)
236285

test/harness.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const ServerFeatures = {
4848
ScopeEventingFunctionManagement: 'scope_eventing_function_management',
4949
BinaryTransactions: 'binary_transactions',
5050
ServerGroups: 'server_groups',
51+
NumVbucketsSetting: 'num_vbuckets_setting',
5152
}
5253

5354
class ServerVersion {
@@ -409,6 +410,7 @@ class Harness {
409410
return !this._version.isMock && this._version.isAtLeast(7, 6, 0)
410411
case ServerFeatures.BinaryTransactions:
411412
case ServerFeatures.ServerGroups:
413+
case ServerFeatures.NumVbucketsSetting:
412414
return !this._version.isMock && this._version.isAtLeast(7, 6, 2)
413415
}
414416

@@ -421,6 +423,10 @@ class Harness {
421423
}
422424
}
423425

426+
isServerVersionAtLeast(major, minor, patch) {
427+
return this._version.isAtLeast(major, minor, patch)
428+
}
429+
424430
skipIfMissingFeature(test, feature) {
425431
if (!this.supportsFeature(feature)) {
426432
/* eslint-disable-next-line mocha/no-skipped-tests */

0 commit comments

Comments
 (0)