diff --git a/test/acceptance/multilayer_server.js b/test/acceptance/multilayer_server.js index b8b5db2a..80d432be 100644 --- a/test/acceptance/multilayer_server.js +++ b/test/acceptance/multilayer_server.js @@ -22,7 +22,7 @@ describe('tests from old api translated to multilayer', function() { // 'map_style|null|publicuser|my_table', redisClient.keys("map_style|*", function(err, matches) { redisClient.del(matches, function() { - done(); + testHelper.deleteRedisKeys({ 'user:cartodb250user:mapviews:global': 5 }, done); }); }); }); diff --git a/test/acceptance/x_cache_channel.js b/test/acceptance/x_cache_channel.js index 5ed26a90..32f5c158 100644 --- a/test/acceptance/x_cache_channel.js +++ b/test/acceptance/x_cache_channel.js @@ -1,4 +1,4 @@ -require('../support/test_helper'); +var testHelper = require('../support/test_helper'); var assert = require('../support/assert'); var qs = require('querystring'); @@ -106,6 +106,13 @@ describe('get requests x-cache-channel', function() { describe('header should be present', function() { + after(function(done) { + testHelper.deleteRedisKeys({ + 'map_cfg|a181ac96fac6d2b315dda88bc0bfa6cd': 0, + 'user:localhost:mapviews:global': 5 + }, done); + }); + it('/api/v1/map Map instantiation', function(done) { assert.response( server, diff --git a/test/support/test_helper.js b/test/support/test_helper.js index 00351eee..5bd6c5db 100644 --- a/test/support/test_helper.js +++ b/test/support/test_helper.js @@ -57,22 +57,70 @@ function checkSurrogateKey(res, expectedKey) { } //var _ = require('underscore'); -//var redis = require('redis'); -// global afterEach to capture tests that leave keys in redis -//afterEach(function(done) { -// var redisClient = redis.createClient(global.environment.redis.port); -// // Check that we start with an empty redis db -// redisClient.keys("*", function(err, keys) { -// if ( err ) { -// return done(err); -// } -// assert.equal(keys.length, 0, "test left objects in redis:\n" + keys.join("\n")); -// redisClient.flushall(done); -// }); -//}); +var redis = require('redis'); +//global after to capture test suites that leave keys in redis +after(function(done) { + var expectedKeys = { + 'rails:test_windshaft_cartodb_user_1_db:test_table_private_1': true, + 'rails:test_windshaft_cartodb_user_1_db:my_table': true, + 'rails:users:localhost:map_key': true, + 'rails:users:cartodb250user': true, + 'rails:users:localhost': true + }; + var databasesTasks = { 0: 'users', 5: 'meta'}; + + var keysFound = []; + function taskDone(err, db, keys) { + if (err) { + return done(err); + } + + delete databasesTasks[db]; + keys.forEach(function(k) { + if (!expectedKeys[k]) { + keysFound.push(k); + } + }); + + if (Object.keys(databasesTasks).length === 0) { + assert.equal(keysFound.length, 0, 'Unexpected keys found in redis: ' + keysFound.join(', ')); + done(); + } + } + + Object.keys(databasesTasks).forEach(function(db) { + var redisClient = redis.createClient(global.environment.redis.port); + redisClient.select(db, function() { + // Check that we start with an empty redis db + redisClient.keys("*", function(err, keys) { + return taskDone(err, db, keys); + }); + }); + }); +}); + +function deleteRedisKeys(keysToDelete, callback) { + + function taskDone(k) { + delete keysToDelete[k]; + if (Object.keys(keysToDelete).length === 0) { + callback(); + } + } + + Object.keys(keysToDelete).forEach(function(k) { + var redisClient = redis.createClient(global.environment.redis.port); + redisClient.select(keysToDelete[k], function() { + redisClient.del(k, function() { + taskDone(k); + }); + }); + }); +} module.exports = { + deleteRedisKeys: deleteRedisKeys, lzma_compress_to_base64: lzma_compress_to_base64, checkNoCache: checkNoCache, checkSurrogateKey: checkSurrogateKey, diff --git a/test/unit/cartodb/template_maps.test.js b/test/unit/cartodb/template_maps.test.js index 472d57b8..6cf76705 100644 --- a/test/unit/cartodb/template_maps.test.js +++ b/test/unit/cartodb/template_maps.test.js @@ -1,4 +1,4 @@ -require('../../support/test_helper'); +var testHelper = require('../../support/test_helper'); var assert = require('assert'); var RedisPool = require('redis-mpool'); @@ -11,6 +11,13 @@ describe('template_maps', function() { // configure redis pool instance to use in tests var redis_pool = new RedisPool(global.environment.redis); + after(function(done) { + testHelper.deleteRedisKeys({ + 'map_tpl|me': 0, + 'map_tpl|you': 0 + }, done); + }); + var wadusLayer = { options: { sql: 'select 1 cartodb_id, null::geometry the_geom_webmercator',