Files
RootPanel/plugin/linux/test/linux.test.coffee
2014-11-03 17:47:08 +08:00

166 lines
4.6 KiB
CoffeeScript

describe 'plugin/linux', ->
linux = null
cache = null
redis = null
utils = null
agent = null
username = null
before ->
linux = require '../linux'
{cache, redis, utils} = app
{agent} = namespace.accountRouter
username = "linux_test#{utils.randomString(20)}"
describe 'router', ->
it 'GET monitor', (done) ->
agent.get '/public/monitor'
.expect 200
.end done
describe 'createUser', ->
it 'should success', (done) ->
linux.createUser {username: username}, ->
fs.existsSync("/home/#{username}").should.be.ok
done()
describe 'setResourceLimit', ->
it 'should success', (done) ->
account =
username: username
billing:
services: ['linux']
resources_limit:
storage: 300
linux.setResourceLimit account, ->
done()
describe 'deleteUser', ->
it 'should success', (done) ->
linux.deleteUser {username: username}, ->
expect(fs.existsSync("/home/#{username}")).to.not.ok
done()
describe 'getPasswdMap', ->
before (done) ->
cache.delete 'linux.getPasswdMap', done
it 'should success', (done) ->
linux.getPasswdMap (passwd_map) ->
passwd_map.should.be.a 'object'
for k, v of passwd_map
parseInt(k).toString().should.be.equal k
v.should.be.a 'string'
done()
describe 'getMemoryInfo', ->
before (done) ->
cache.delete 'linux.getMemoryInfo', done
it 'should success', (done) ->
linux.getMemoryInfo (memory_info) ->
for field in [
'used', 'cached', 'buffers', 'free', 'total', 'swap_used', 'swap_free'
'swap_total', 'used_per', 'cached_per', 'buffers_per', 'free_per'
'swap_used_per', 'swap_free_per'
]
expect(isNaN(memory_info[field])).to.be.false
memory_info[field].should.be.a 'number'
done()
describe 'getProcessList', ->
before (done) ->
cache.delete 'linux.getProcessList', done
it 'should success', (done) ->
linux.getProcessList (plist) ->
plist.should.be.a 'array'
for p in plist
p.user.should.be.a 'string'
p.time.should.be.a 'number'
p.pid.should.be.a 'number'
p.cpu_per.should.be.a 'number'
p.mem_per.should.be.a 'number'
p.vsz.should.be.a 'number'
p.rss.should.be.a 'number'
p.tty.should.be.a 'string'
p.stat.should.be.a 'string'
p.start.should.be.a 'string'
p.command.should.be.a 'string'
done()
describe 'getStorageQuota', ->
before (done) ->
cache.delete 'linux.getStorageQuota', done
it 'should success', (done) ->
linux.getStorageQuota (storage_quota) ->
for k, v of storage_quota
v.username.should.be.equal k
v.size_used.should.be.a 'number'
v.inode_used.should.be.a 'number'
done()
describe 'getSystemInfo', ->
before (done) ->
cache.delete 'linux.getSystemInfo', done
it 'should success', (done) ->
linux.getSystemInfo (system) ->
system.system.should.match /Ubuntu/
system.hostname.should.be.a 'string'
system.cpu.should.be.a 'string'
system.uptime.should.be.a 'number'
system.loadavg.length.should.be.equal 3
system.time.should.be.exist
for address in system.address
expect(
address.match(/\d+\.\d+\.\d+\.\d+/) or
address.match(/:.*:/)
).to.be.ok
redis.get 'RP:linux.getSystemInfo', (err, system) ->
system.should.be.exist
done()
describe 'getStorageInfo', ->
before (done) ->
cache.delete 'linux.getStorageInfo', done
it 'should success', (done) ->
linux.getStorageInfo (storage_info) ->
storage_info.used.should.be.a 'number'
storage_info.free.should.be.a 'number'
storage_info.total.should.be.a 'number'
storage_info.used_per.should.be.a 'number'
storage_info.free_per.should.be.a 'number'
done()
describe 'getResourceUsageByAccounts', ->
before (done) ->
cache.delete 'linux.getResourceUsageByAccounts', done
it 'should success', (done) ->
linux.getResourceUsageByAccounts (resource_usage) ->
for item in resource_usage
item.username.should.be.a 'string'
item.cpu.should.be.a 'number'
item.memory.should.be.a 'number'
item.storage.should.be.a 'number'
item.process.should.be.a 'number'
done()
describe 'getResourceUsageByAccount', ->
it 'pending'