mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-06 05:03:44 +08:00
test: redis with quit and error cases
This commit is contained in:
@@ -98,4 +98,5 @@ if (config.connect.socket) {
|
||||
module.exports = {
|
||||
server: server,
|
||||
app: app,
|
||||
cache: app.context.cache.client,
|
||||
};
|
||||
|
||||
@@ -28,12 +28,7 @@ function responseHandler() {
|
||||
ctx.res.success = ({ statusCode, data = null, message = null }) => {
|
||||
const status = 0;
|
||||
|
||||
if (!!statusCode && statusCode < 400) {
|
||||
ctx.status = statusCode;
|
||||
} else if (!(ctx.status < 400)) {
|
||||
ctx.status = statusCodes.OK;
|
||||
}
|
||||
|
||||
ctx.body = { status, data, message };
|
||||
};
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ module.exports = function(app, options = {}) {
|
||||
|
||||
app.context.cache = {
|
||||
get: async (key) => {
|
||||
if (key) {
|
||||
if (key && available) {
|
||||
let value = await redisClient.get(key);
|
||||
if (value) {
|
||||
await redisClient.expire(key, config.cache.contentExpire);
|
||||
@@ -45,6 +45,9 @@ module.exports = function(app, options = {}) {
|
||||
}
|
||||
},
|
||||
set: async function(key, value, maxAge = config.cache.contentExpire) {
|
||||
if (!available) {
|
||||
return;
|
||||
}
|
||||
if (await redisClient.exists(key)) {
|
||||
logger.warn(`repeated key: ${key}, ${value}`);
|
||||
return;
|
||||
@@ -59,9 +62,10 @@ module.exports = function(app, options = {}) {
|
||||
await redisClient.setex(key, maxAge, value);
|
||||
}
|
||||
},
|
||||
client: redisClient,
|
||||
};
|
||||
globalCache.get = async (key) => {
|
||||
if (key) {
|
||||
if (key && available) {
|
||||
const value = await redisClient.get(key);
|
||||
return value;
|
||||
}
|
||||
@@ -81,7 +85,7 @@ module.exports = function(app, options = {}) {
|
||||
|
||||
app.context.cache = {
|
||||
get: (key) => {
|
||||
if (key) {
|
||||
if (key && available) {
|
||||
let value = routeCache.get(key);
|
||||
if (value) {
|
||||
value = value + '';
|
||||
@@ -96,13 +100,14 @@ module.exports = function(app, options = {}) {
|
||||
if (typeof value === 'object') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
if (key) {
|
||||
if (key && available) {
|
||||
return routeCache.set(key, value, maxAge * 1000);
|
||||
}
|
||||
},
|
||||
client: [pageCache, routeCache],
|
||||
};
|
||||
globalCache.get = (key) => {
|
||||
if (key) {
|
||||
if (key && available) {
|
||||
return pageCache.get(key);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -90,6 +90,47 @@ describe('cache', () => {
|
||||
expect(parsed4.items[0].content).toBe('Cache2');
|
||||
});
|
||||
|
||||
it('redis with quit', async () => {
|
||||
process.env.CACHE_TYPE = 'redis';
|
||||
server = require('../../lib/index').server;
|
||||
const client = require('../../lib/index').cache;
|
||||
client.quit();
|
||||
const request = supertest(server);
|
||||
|
||||
const response1 = await request.get('/test/cache');
|
||||
const parsed1 = await parser.parseString(response1.text);
|
||||
|
||||
const response2 = await request.get('/test/cache');
|
||||
const parsed2 = await parser.parseString(response2.text);
|
||||
|
||||
expect(response2.status).toBe(200);
|
||||
expect(response2.headers).not.toHaveProperty('x-koa-redis-cache');
|
||||
expect(response2.headers).not.toHaveProperty('x-koa-memory-cache');
|
||||
|
||||
expect(parsed1.items[0].content).toBe('Cache1');
|
||||
expect(parsed2.items[0].content).toBe('Cache2');
|
||||
});
|
||||
|
||||
it('redis with error', async () => {
|
||||
process.env.CACHE_TYPE = 'redis';
|
||||
process.env.REDIS_URL = 'redis://wrongpath:6379';
|
||||
server = require('../../lib/index').server;
|
||||
const request = supertest(server);
|
||||
|
||||
const response1 = await request.get('/test/cache');
|
||||
const parsed1 = await parser.parseString(response1.text);
|
||||
|
||||
const response2 = await request.get('/test/cache');
|
||||
const parsed2 = await parser.parseString(response2.text);
|
||||
|
||||
expect(response2.status).toBe(200);
|
||||
expect(response2.headers).not.toHaveProperty('x-koa-redis-cache');
|
||||
expect(response2.headers).not.toHaveProperty('x-koa-memory-cache');
|
||||
|
||||
expect(parsed1.items[0].content).toBe('Cache1');
|
||||
expect(parsed2.items[0].content).toBe('Cache2');
|
||||
});
|
||||
|
||||
it('no cache', async () => {
|
||||
process.env.CACHE_TYPE = '';
|
||||
server = require('../../lib/index').server;
|
||||
|
||||
Reference in New Issue
Block a user