aerospike
Advanced tools
Comparing version 2.5.0 to 2.5.1
@@ -0,1 +1,7 @@ | ||
v2.5.1 / 2017-04-11 | ||
=================== | ||
* **Bug Fixes** | ||
* Support queries with keys with just namespace + digest [#184](https://github.com/aerospike/aerospike-client-nodejs/issues/184) | ||
v2.5.0 / 2017-04-05 | ||
@@ -2,0 +8,0 @@ =================== |
@@ -43,3 +43,4 @@ /** | ||
/** @member {(string|integer|Buffer)} [Key#key] */ | ||
if (isSet(key) && !isValidKey(key)) { | ||
var hasKey = isSet(key) | ||
if (hasKey && !isValidKey(key)) { | ||
throw new TypeError('Key must be a string, integer, or Buffer') | ||
@@ -55,3 +56,11 @@ } | ||
*/ | ||
var hasDigest = isSet(digest) | ||
if (hasDigest && !isValidDigest(digest)) { | ||
throw new TypeError('Digest must be a 20-byte Buffer') | ||
} | ||
this.digest = digest || null | ||
if (!(hasKey || hasDigest)) { | ||
throw new TypeError('Either key or digest must be set') | ||
} | ||
} | ||
@@ -81,2 +90,6 @@ | ||
function isValidDigest (digest) { | ||
return (Buffer.isBuffer(digest) && digest.length === 20) | ||
} | ||
module.exports = Key |
{ | ||
"name": "aerospike", | ||
"version": "2.5.0", | ||
"version": "2.5.1", | ||
"description": "Aerospike Client Library", | ||
@@ -5,0 +5,0 @@ "tags": [ |
@@ -71,2 +71,4 @@ // ***************************************************************************** | ||
context('user key', function () { | ||
var dummyDigest = new Buffer([0x15, 0xc7, 0x49, 0xfd, 0x01, 0x54, 0x43, 0x8b, 0xa9, 0xd9, 0x5d, 0x0c, 0x6e, 0x27, 0x0f, 0x1a, 0x76, 0xfc, 0x31, 0x15]) | ||
it('allows string user key', function () { | ||
@@ -91,7 +93,7 @@ expect(new Key('ns', 'set', 'abc')).to.be.ok() | ||
it('allows undefined user key', function () { | ||
expect(new Key('ns', 'set', undefined)).to.be.ok() | ||
expect(new Key('ns', 'set', undefined, dummyDigest)).to.be.ok() | ||
}) | ||
it('allows null user key', function () { | ||
expect(new Key('ns', 'set', null)).to.be.ok() | ||
expect(new Key('ns', 'set', null, dummyDigest)).to.be.ok() | ||
}) | ||
@@ -110,4 +112,39 @@ | ||
}) | ||
it('requires either key or digest', function () { | ||
expect(function () { return new Key('ns', 'set') }).to.throwException('Either key or digest must be set') | ||
}) | ||
}) | ||
context('digest', function () { | ||
var client = helper.client | ||
it('allows creating a new key with just the namespace and digest', function () { | ||
var digest = new Buffer([0x15, 0xc7, 0x49, 0xfd, 0x01, 0x54, 0x43, 0x8b, 0xa9, 0xd9, 0x5d, 0x0c, 0x6e, 0x27, 0x0f, 0x1a, 0x76, 0xfc, 0x31, 0x15]) | ||
expect(new Key('ns', null, null, digest)).to.be.ok() | ||
}) | ||
it('rejects a digest that is not a buffer', function () { | ||
expect(function () { return new Key('ns', null, null, 'some string') }).to.throwException('Digest must be a 20-byte Buffer') | ||
}) | ||
it('rejects a digest that is not the right size', function () { | ||
expect(function () { return new Key('ns', null, null, new Buffer([0x01])) }).to.throwException('Digest must be a 20-byte Buffer') | ||
}) | ||
it('fetches a record given the digest', function (done) { | ||
var key = new Key('test', 'test', 'digestOnly') | ||
client.put(key, {foo: 'bar'}, function (err) { | ||
if (err) throw err | ||
var digest = key.digest | ||
var key2 = new Key('test', null, null, digest) | ||
client.get(key2, function (err, record) { | ||
if (err) throw err | ||
expect(record.foo).to.equal('bar') | ||
done() | ||
}) | ||
}) | ||
}) | ||
}) | ||
context('plain object keys (for backward compatibility)', function () { | ||
@@ -114,0 +151,0 @@ var client = helper.client |
@@ -47,3 +47,6 @@ // ***************************************************************************** | ||
var kgen = keygen.string(helper.namespace, helper.set, {prefix: 'test/put/putAndGet/'}) | ||
var kgen = keygen.string(helper.namespace, helper.set, { | ||
prefix: 'test/put/putAndGet/', | ||
random: false | ||
}) | ||
var rgen = recgen.record({i: valgen.integer(), s: valgen.string(), b: valgen.bytes()}) | ||
@@ -105,12 +108,2 @@ var total = 50 | ||
}) | ||
it('should fail with a parameter error when trying to write an undefined key value', function (done) { | ||
var key = new Aerospike.Key(helper.namespace, helper.set, undefined) | ||
var record = { bin1: 123, bin2: 456 } | ||
client.put(key, record, function (err) { | ||
expect(err.code).to.equal(status.AEROSPIKE_ERR_PARAM) | ||
done() | ||
}) | ||
}) | ||
}) | ||
@@ -117,0 +110,0 @@ |
@@ -112,3 +112,3 @@ // ***************************************************************************** | ||
} | ||
var kgen = keygen.string(helper.namespace, testSet, {prefix: 'test/query/'}) | ||
var kgen = keygen.string(helper.namespace, testSet, {prefix: 'test/query/', random: false}) | ||
var mgen = metagen.constant({ ttl: 300 }) | ||
@@ -115,0 +115,0 @@ putgen.put(numberOfSamples, kgen, sampleGen, mgen, function (key, record) { |
@@ -38,3 +38,3 @@ // ***************************************************************************** | ||
helper.udf.register('udf.lua', function () { | ||
var kgen = keygen.string(helper.namespace, testSet, {prefix: 'test/scan/'}) | ||
var kgen = keygen.string(helper.namespace, testSet, { prefix: 'test/scan/', random: false }) | ||
var rgen = recgen.record({ i: valgen.integer(), s: valgen.string() }) | ||
@@ -41,0 +41,0 @@ var mgen = metagen.constant({ ttl: 300 }) |
@@ -40,4 +40,3 @@ // ***************************************************************************** | ||
function genRecords (ns, set, noRecords, callback) { | ||
var kgen = keygen.string(ns, set, {prefix: 'test/trunc/'}) | ||
function genRecords (kgen, noRecords, callback) { | ||
var mgen = metagen.constant({ ttl: 300 }) | ||
@@ -68,3 +67,4 @@ var rgen = recgen.constant({ a: 'foo', b: 'bar' }) | ||
genRecords(ns, set, noRecords, function () { | ||
var kgen = keygen.string(ns, set, {prefix: 'test/trunc/', random: false}) | ||
genRecords(kgen, noRecords, function () { | ||
setTimeout(function () { | ||
@@ -78,5 +78,5 @@ client.truncate(ns, set, 0, function (err) { | ||
}) | ||
}, 100) | ||
}, 200) | ||
}) | ||
}, 100) | ||
}, 200) | ||
}) | ||
@@ -91,7 +91,8 @@ }) | ||
genRecords(ns, set, noRecordsBefore, function () { | ||
var kgen = keygen.string(ns, set, {prefix: 'test/trunc/', random: false}) | ||
genRecords(kgen, noRecordsBefore, function () { | ||
setTimeout(function () { | ||
var timeNanos = new Date().getTime() * 1000000 | ||
setTimeout(function () { | ||
genRecords(ns, set, noRecordsAfter, function () { | ||
genRecords(kgen, noRecordsAfter, function () { | ||
client.truncate(ns, set, timeNanos, function (err) { | ||
@@ -104,9 +105,9 @@ if (err) throw err | ||
}) | ||
}, 100) | ||
}, 200) | ||
}) | ||
}) | ||
}, 100) | ||
}, 100) | ||
}, 200) | ||
}, 200) | ||
}) | ||
}) | ||
}) |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1431427
207
18870