jacc
Version:
Just Another Cloud in the Cloud
149 lines (109 loc) • 4.71 kB
text/coffeescript
# Unit test
#-------------------------------------------------------------------------------------------------
# Basic tests that just calls the functions to make sure that execute ok
exports['test_jacc'] = {
setUp: (done) =>
# The functions to test
this._j = require('../build/jacc.js').create()
# setup here
this._async = require('async')
this._helpers = require('helpersjs').create()
this._helpers.logging_threshold = this._helpers.logging.debug
this._id = process.env.JACC_TEST_IMAGE || "000"
this._URL = process.env.JACC_TEST_URL || "app1.jacc.local"
this._port = process.env.JACC_TEST_PORT || 80
this._DNS = process.env.JACC_TEST_DNS || "app1.local"
# setup finished
done()
'print_warning': (test) =>
this._helpers.logDebug('\nWARNING: CURRENT JACC CONFIGHURATION WILL BE DELETED!')
test.done()
'test_docker_connection': (test) =>
docker = require('docker.io')({ socketPath: false, host: 'http://localhost', port: '4243'})
docker.containers.list({}, (err, res) =>
this._helpers.logDebug('res:'+JSON.stringify(res)+' err:'+err)
test.done()
)
'test_redis_helpers': (test) =>
# There should be X tests
test.expect(1)
REDIS_KEY = "unit_test:key"
REDIS_VALUE = "value"
this._async.series(
[
# Dummy test
(fn) =>
# Remove old data
this._j._redis("del", [REDIS_KEY], () =>
fn(null, '_redis.del')
)
(fn) =>
this._j._redis( "set", [REDIS_KEY, REDIS_VALUE], () =>
fn(null, '_redis.set')
)
(fn) =>
this._j._redis( "get", [REDIS_KEY], (val) =>
test.equal(val, REDIS_VALUE, 'redis del, set and get')
fn(null, '_redis.get')
)
(fn) =>
# All tests performed
test.done()
fn(null, 'test.done')
],
(err, results) =>
this._helpers.logDebug('test_redis_helpers: results of async functions - ' + results + ' errors (if any) - ' + err)
)
'test_status': (test) =>
# There should be X tests
test.expect(1)
this._j.status( () =>
test.equal(true, true, 'jacc status')
test.done()
)
'test_add': (test) =>
# There should be X tests
test.expect(1)
# First cleanup old stuff
this._j._redis( "del", ["images"], (res) =>
# _j.add is async so test.done will likely be executed too early
this._j.add(this._id, this._URL, this._port, this._DNS, () =>
this._j._redis( "smembers", ["images"], (res) =>
this._helpers.logDebug('test_add: onJaccConfig res from redis:' + res)
test.equal(res, this._id, 'jacc add and check that image was added')
test.done()
)
)
)
'test_listImages': (test) =>
# There should be X tests
test.expect(1)
test.equal(true, true, 'jacc list images')
this._j._listImages(
() =>
this._helpers.logDebug('test_listImages: Running images: '+JSON.stringify(this._j._runningImages))
test.done()
)
'test_buildHipacheConfig': (test) =>
# The hipache configuration (in redis) should look something like this
# $ redis-cli lrange frontend:app.jacc.local 0 -1
# 1) "abcdefhikjl"
# 2) "http://192.168.0.42:80"
# There should be X tests
test.expect(1)
this._j._listImages(
() =>
this._j._buildHipacheConfig( () =>
# Check that the hipache configuraiton is there
_key = "frontend:" + this._URL
this._j._redis("lrange", [_key, 0, -1], (res) =>
if(res.length==0)
this._helpers.logDebug('test_buildHipacheConfig: EMPTY, LIKELY NO RUNNING CONTAINERS')
else
this._helpers.logDebug('test_buildHipacheConfig hipache configuration for key '+_key+'='+JSON.stringify(res))
test.equal(res[0], this._id, 'test_buildHipacheConfig: image id')
test.done()
)
)
)
}