Comparing version 0.1.0 to 0.2.0
@@ -1,18 +0,13 @@ | ||
var suite = require('ntf').utils.load(__dirname + '/tests') | ||
var ntf = require('ntf') | ||
, ntfd = require('ntfd') | ||
var suite = ntf.utils.load(__dirname + '/tests') | ||
var options = { | ||
http: { | ||
port: 8000, | ||
secret: 'changeme', | ||
}, | ||
redis: { | ||
host: '127.0.0.1', | ||
port: 6379, | ||
database: 0, | ||
}, | ||
//plugin: [new ntfd.plugin.HttpEmitter('http://user:pass@localhost:8000/test')], | ||
test: { | ||
timeout: 60, | ||
interval: 10, | ||
}, | ||
} | ||
require('ntfd').run(suite, options) | ||
ntfd.run(suite, options) |
var events = require('events') | ||
, util = require('util') | ||
, redisLib = require('redis') | ||
exports.SEP = '\x01' | ||
exports.io = null | ||
exports.redis = null | ||
function EventEmitter() { events.EventEmitter.call(this) } | ||
util.inherits(EventEmitter, events.EventEmitter) | ||
function Events() { events.EventEmitter.call(this) } | ||
util.inherits(Events, events.EventEmitter) | ||
function Logger() { | ||
this.level = 'error' | ||
} | ||
Logger.prototype.log = function(level, text) { | ||
if (this.levels[level] >= this.levels[this.level]) { | ||
util.log(text) | ||
} | ||
} | ||
Logger.prototype.debug = function(text) { this.log('debug', text) } | ||
Logger.prototype.info = function(text) { this.log('info', text) } | ||
Logger.prototype.warning = function(text) { this.log('warning', text) } | ||
Logger.prototype.error = function(text) { this.log('error', text) } | ||
Logger.prototype.levels = { debug: 0, info: 1, warning: 2, error: 3, none: 99 } | ||
exports.events = new Events() | ||
exports.setup = function(suite, options) { | ||
exports.options = options | ||
exports.suite = suite | ||
var redis = exports.redis = redisLib.createClient(options.redis.port, options.redis.host) | ||
redis.select(options.redis.database) | ||
redis.on('connect', function() { | ||
redis.send_anyways = true | ||
redis.select(options.redis.database) | ||
redis.send_anyways = false | ||
}) | ||
redis.on('error', function(err) { | ||
console.log('' + err) | ||
}) | ||
} | ||
exports.events = new EventEmitter() | ||
exports.options = null | ||
exports.suite = null | ||
exports.log = new Logger() |
@@ -1,65 +0,45 @@ | ||
var express = require('express') | ||
var async = require('async') | ||
, fs = require('fs') | ||
, path = require('path') | ||
, global = require('./global') | ||
, periodic = require('./periodic') | ||
, routes = require('./routes') | ||
, socket = require('./socket') | ||
, plugin = require('./plugin') | ||
exports.version = JSON.parse(fs.readFileSync(__dirname + '/../../package.json'))['version'] | ||
exports.createServer = function(suite, options) { | ||
var app = express.createServer() | ||
exports.plugin = plugin | ||
process.chdir(__dirname + '/../..') | ||
var setupSuite = function(suite) { | ||
if (typeof(suite) !== 'object') throw 'suite must be an object' | ||
global.suite = suite | ||
} | ||
var setDefault = function(section, option, value) { | ||
if (!options.hasOwnProperty(section)) { | ||
options[section] = {} | ||
} | ||
if (!options[section].hasOwnProperty(option)) { | ||
options[section][option] = value | ||
} | ||
} | ||
var setupOptions = function(options) { | ||
if (typeof(options) !== 'object') throw 'options must be an object' | ||
options.agent = options.agent || process.env.HOSTNAME | ||
if (typeof(options.agent) !== 'string') throw 'options.agent must be a string' | ||
options.plugin = options.plugin || [new plugin.ConsoleEmitter()] | ||
if (!Array.isArray(options.plugin)) throw 'options.plugin must be an array' | ||
options.test = options.test || {} | ||
if (typeof(options.test) !== 'object') throw 'options.test must be an object' | ||
options.test.interval = options.test.interval || 60 | ||
if (typeof(options.test.interval) !== 'number') throw 'options.test.interval must be a number' | ||
global.options = options | ||
} | ||
setDefault('http', 'port', 8000) | ||
setDefault('http', 'secret', 'secret') | ||
setDefault('http', 'static_path', path.resolve(__dirname + '/../../static')) | ||
setDefault('http', 'template_path', path.resolve(__dirname + '/../../templates')) | ||
setDefault('http', 'access_log', '') | ||
setDefault('redis', 'host', '127.0.0.1') | ||
setDefault('redis', 'port', 6379) | ||
setDefault('redis', 'database', 0) | ||
setDefault('test', 'timeout', 60) | ||
app.configure(function() { | ||
if (options.http.access_log) app.use(express.logger()) | ||
app.use(express.static(options.http.static_path)) | ||
app.use(express.cookieParser()) | ||
app.use(express.bodyParser()) | ||
app.set('views', options.http.template_path) | ||
app.set('view options', { layout: false }) | ||
app.register('.html', require('jinjs')) | ||
var setupPlugin = function(options, cb) { | ||
var work = [] | ||
options.plugin.forEach(function(e) { | ||
work.push(function(cb) { | ||
e.setup(global, cb) | ||
}) | ||
}) | ||
app.configure('dev', 'development', function() { | ||
app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) | ||
}) | ||
app.configure('prod', 'production', function() { | ||
app.use(express.errorHandler()) | ||
}) | ||
global.setup(suite, options) | ||
routes(app) | ||
socket(app) | ||
periodic.run() | ||
return app | ||
async.parallel(work, cb) | ||
} | ||
exports.run = function(suite, options) { | ||
exports.createServer(suite, options).listen(options.http.port) | ||
setupSuite(suite) | ||
setupOptions(options) | ||
setupPlugin(options, function(err) { | ||
periodic.run() | ||
}) | ||
} |
var global = require('./global') | ||
, helper = require('./helper') | ||
, run = require('./run') | ||
@@ -8,3 +8,3 @@ var loop = function(fn, options) { | ||
options.timeout = options.timeout != undefined ? options.timeout : | ||
(global.options.test.timeout * 1000) | ||
(global.options.test.interval * 1000) | ||
@@ -32,16 +32,5 @@ // don't loop if <= zero | ||
(function(name, suite) { | ||
loop(function(cb) { | ||
var time = parseInt(new Date().getTime() / 1000) | ||
helper.runTest(name, suite, function(err, data) { | ||
global.redis.zadd( | ||
'test/' + name, | ||
time, | ||
time + global.SEP + JSON.stringify(data) | ||
) | ||
cb() | ||
}) | ||
}, { random: true }) | ||
loop(function(cb) { run.test(name, suite, cb) }, { random: true }) | ||
})(name, global.suite[name]) | ||
} | ||
} |
{ | ||
"name": "ntfd", | ||
"description": "Network Testing Framework Daemon", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"engines": { "node": ">= 0.4" }, | ||
"dependencies": { | ||
"async": ">= 0.1.10", | ||
"express": ">= 2.4.7", | ||
"jinjs": ">= 0.3.4", | ||
"async": ">= 0.1.15", | ||
"nodeunit": ">= 0.5.3", | ||
"ntf": ">= 0.1.0", | ||
"redis": ">= 0.6.7", | ||
"socket.io": ">= 0.8.7" | ||
"ntf": ">= 0.2.0" | ||
}, | ||
@@ -15,0 +11,0 @@ "repository": { |
@@ -11,3 +11,2 @@ ntfd | ||
* [npm](http://npmjs.org/) | ||
* [redis](http://redis.io/) | ||
@@ -32,6 +31,4 @@ ### Usage | ||
Open [localhost:8000/test](http://localhost:8000/test) in your browser. | ||
### License | ||
This work is licensed under the MIT License (see the LICENSE file). |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3
8299
14
199
33
2
3
+ Addeddebug@4.3.7(transitive)
- Removedexpress@>= 2.4.7
- Removedjinjs@>= 0.3.4
- Removedredis@>= 0.6.7
- Removedsocket.io@>= 0.8.7
- Removed@redis/bloom@1.2.0(transitive)
- Removed@redis/client@1.6.0(transitive)
- Removed@redis/graph@1.1.1(transitive)
- Removed@redis/json@1.0.7(transitive)
- Removed@redis/search@1.2.0(transitive)
- Removed@redis/time-series@1.1.0(transitive)
- Removed@socket.io/component-emitter@3.1.2(transitive)
- Removed@types/cookie@0.4.1(transitive)
- Removed@types/cors@2.8.17(transitive)
- Removed@types/node@22.7.4(transitive)
- Removedaccepts@1.3.82.0.0(transitive)
- Removedarray-flatten@3.0.0(transitive)
- Removedbase64id@2.0.0(transitive)
- Removedbody-parser@2.0.1(transitive)
- Removedbytes@3.1.2(transitive)
- Removedcall-bind@1.0.7(transitive)
- Removedcluster-key-slot@1.1.2(transitive)
- Removedcontent-disposition@1.0.0(transitive)
- Removedcontent-type@1.0.5(transitive)
- Removedcookie@0.4.20.6.0(transitive)
- Removedcookie-signature@1.2.1(transitive)
- Removedcors@2.8.5(transitive)
- Removeddebug@3.1.04.3.6(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removeddepd@2.0.0(transitive)
- Removeddestroy@1.2.0(transitive)
- Removedee-first@1.1.1(transitive)
- Removedencodeurl@1.0.22.0.0(transitive)
- Removedengine.io@6.6.1(transitive)
- Removedengine.io-parser@5.2.3(transitive)
- Removedes-define-property@1.0.0(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedescape-html@1.0.3(transitive)
- Removedetag@1.8.1(transitive)
- Removedexpress@5.0.0(transitive)
- Removedfinalhandler@2.0.0(transitive)
- Removedforwarded@0.2.0(transitive)
- Removedfresh@0.5.22.0.0(transitive)
- Removedgeneric-pool@3.9.0(transitive)
- Removedget-intrinsic@1.2.4(transitive)
- Removedgopd@1.0.1(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-proto@1.0.3(transitive)
- Removedhas-symbols@1.0.3(transitive)
- Removedhttp-errors@2.0.0(transitive)
- Removediconv-lite@0.5.20.6.3(transitive)
- Removedipaddr.js@1.9.1(transitive)
- Removedis-promise@4.0.0(transitive)
- Removedjinjs@0.3.6(transitive)
- Removedmedia-typer@0.3.01.1.0(transitive)
- Removedmerge-descriptors@2.0.0(transitive)
- Removedmethods@1.1.2(transitive)
- Removedmime-db@1.53.0(transitive)
- Removedmime-types@3.0.0(transitive)
- Removedms@2.1.2(transitive)
- Removednegotiator@0.6.31.0.0(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedobject-inspect@1.13.2(transitive)
- Removedon-finished@2.4.1(transitive)
- Removedoptimist@0.2.3(transitive)
- Removedparseurl@1.3.3(transitive)
- Removedpath-to-regexp@8.2.0(transitive)
- Removedproxy-addr@2.0.7(transitive)
- Removedqs@6.13.0(transitive)
- Removedrange-parser@1.2.1(transitive)
- Removedraw-body@3.0.0(transitive)
- Removedredis@4.7.0(transitive)
- Removedrouter@2.0.0(transitive)
- Removedsend@1.1.0(transitive)
- Removedserve-static@2.1.0(transitive)
- Removedset-function-length@1.2.2(transitive)
- Removedsetprototypeof@1.2.0(transitive)
- Removedside-channel@1.0.6(transitive)
- Removedsocket.io@4.8.0(transitive)
- Removedsocket.io-adapter@2.5.5(transitive)
- Removedsocket.io-parser@4.2.4(transitive)
- Removedstatuses@2.0.1(transitive)
- Removedtoidentifier@1.0.1(transitive)
- Removedtype-is@1.6.182.0.0(transitive)
- Removedundici-types@6.19.8(transitive)
- Removedunpipe@1.0.0(transitive)
- Removedutils-merge@1.0.1(transitive)
- Removedvary@1.1.2(transitive)
- Removedwordwrap@0.0.3(transitive)
- Removedws@8.17.1(transitive)
- Removedyallist@4.0.0(transitive)
Updatedasync@>= 0.1.15
Updatedntf@>= 0.2.0