-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcache_multiget.js
More file actions
121 lines (97 loc) · 3.96 KB
/
Copy pathcache_multiget.js
File metadata and controls
121 lines (97 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Load external packages
const chai = require('chai'),
assert = chai.assert;
// Load cache service
const rootPrefix = '..',
OSTCache = require(rootPrefix + '/index'),
testCachingEngine = process.env.TEST_CACHING_ENGINE;
let configStrategy;
if (testCachingEngine === 'redis') {
configStrategy = require(rootPrefix + '/test/env/redis.json');
} else if (testCachingEngine === 'memcached') {
configStrategy = require(rootPrefix + '/test/env/memcached.json');
} else if (testCachingEngine === 'none') {
configStrategy = require(rootPrefix + '/test/env/in-memory.json');
}
const engineType = configStrategy.cache.engine;
function performTest(cacheObj, keySuffix) {
describe('Cache MultiGet ' + keySuffix, function() {
keySuffix = keySuffix + '_' + new Date().getTime();
it('should return promise', async function() {
let cKey = ['cache-key' + keySuffix],
response = cacheObj.multiGet(cKey);
assert.typeOf(response, 'Promise');
});
it('should fail when key is not passed', async function() {
let response = await cacheObj.multiGet();
assert.equal(response.isSuccess(), false);
});
it('should fail when key is empty array', async function() {
let response = await cacheObj.multiGet([]);
assert.equal(response.isSuccess(), false);
});
it('should fail when key is undefined', async function() {
let response = await cacheObj.multiGet([undefined]);
assert.equal(response.isSuccess(), false);
});
it('should fail when key is blank', async function() {
let cKey = [''],
response = await cacheObj.multiGet(cKey);
assert.equal(response.isSuccess(), false);
});
it('should fail when key is number', async function() {
let cKey = [10],
response = await cacheObj.multiGet(cKey);
assert.equal(response.isSuccess(), false);
});
it('should fail when key has space', async function() {
let cKey = ['a b' + keySuffix],
response = await cacheObj.multiGet(cKey);
assert.equal(response.isSuccess(), false);
});
it('should fail when key length is > 250 bytes', async function() {
let cKey = [Array(252).join('x')],
response = await cacheObj.multiGet(cKey);
assert.equal(response.isSuccess(), false);
});
it('should pass when value is not set', async function() {
let cKey = ['cache-key-not-set' + keySuffix],
response = await cacheObj.multiGet(cKey);
assert.equal(response.isSuccess(), true);
assert.equal(response.data.response['cache-key-not-set'], null);
});
it('should pass when non object values are get', async function() {
let keyValue = {};
keyValue[`cache-key-string${keySuffix}`] = 'String Value';
keyValue[`cache-key-integer${keySuffix}`] = 10;
keyValue[`cache-key-blank${keySuffix}`] = '';
for (let key in keyValue) {
res = await cacheObj.set(key, keyValue[key]);
}
let lookupKeys = Object.keys(keyValue),
response = await cacheObj.multiGet(lookupKeys);
assert.equal(response.isSuccess(), true);
for (let key in response.data.response) {
assert.equal(response.data.response[key], keyValue[key]);
}
});
it('should return null when object values are get', async function() {
let keyValue = {};
keyValue[`cache-key-array${keySuffix}`] = [1, 2, 3, 4];
keyValue[`cache-key-object${keySuffix}`] = { a: 1 };
for (let key in keyValue) {
res = await cacheObj.set(key, keyValue[key]);
}
let lookupKeys = Object.keys(keyValue),
response = await cacheObj.multiGet(lookupKeys);
assert.equal(response.isSuccess(), true);
for (let key in response.data.response) {
assert.equal(response.data.response[key], null);
}
});
});
}
ostCache = OSTCache.getInstance(configStrategy);
cacheImplementer = ostCache.cacheInstance;
performTest(cacheImplementer, 'ConsistentBehaviour');
performTest(cacheImplementer, 'InconsistentBehaviour');