1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-03 17:59:28 +02:00

Minimal start with a custom logger and device tracker.

This commit is contained in:
Simo Kinnunen 2014-01-07 10:55:41 +09:00
parent 971fcb8297
commit f67eb6dd25
7 changed files with 126 additions and 0 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
# http://editorconfig.org/
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/node_modules/

2
bin/stf Executable file
View file

@ -0,0 +1,2 @@
#!/usr/bin/env node
require('../lib/cli')

15
lib/cli.js Normal file
View file

@ -0,0 +1,15 @@
var program = require('commander')
var pkg = require('../package')
program
.version(pkg.version)
program
.command('provider')
.description('run STF provider')
.action(function() {
require('./provider')
})
program.parse(process.argv)

26
lib/provider.js Normal file
View file

@ -0,0 +1,26 @@
var adb = require('adbkit')
var async = require('async')
var log = require('./util/logger').createLogger('provider')
var client = adb.createClient()
client.trackDevices(function(err, tracker) {
if (err) {
log.fatal('Unable to track devices: %s', err.message)
throw err
}
log.info('Tracking devices')
tracker.on('add', function(device) {
log.info('Found device "%s" (%s)', device.id, device.type)
})
tracker.on('change', function(device) {
log.info('Device "%s" is now "%s"', device.id, device.type)
})
tracker.on('remove', function(device) {
log.info('Lost device "%s" (%s)', device.id, device.type)
})
})

59
lib/util/logger.js Normal file
View file

@ -0,0 +1,59 @@
var util = require('util')
function Log(tag, stream) {
this.tag = tag
this.stream = stream || process.stderr
this.levels = {
DEBUG: 'DBG'
, VERBOSE: 'VRB'
, INFO: 'INF'
, WARNING: 'WRN'
, ERROR: 'ERR'
, FATAL: 'FTL'
}
}
Log.prototype.debug = function() {
this._write(this._format(this.levels.DEBUG, arguments))
}
Log.prototype.verbose = function() {
this._write(this._format(this.levels.VERBOSE, arguments))
}
Log.prototype.info = function() {
this._write(this._format(this.levels.INFO, arguments))
}
Log.prototype.warn = function() {
this._write(this._format(this.levels.WARNING, arguments))
}
Log.prototype.error = function() {
this._write(this._format(this.levels.ERROR, arguments))
}
Log.prototype.fatal = function() {
this._write(this._format(this.levels.FATAL, arguments))
}
Log.prototype._format = function(priority, args) {
return util.format('%s %s/%s %d %s\n',
Log.prefix, priority, this.tag, process.pid, util.format.apply(util, args))
}
Log.prototype._write = function(out) {
this.stream.write(out)
}
Log.prefix = '*'
Log.createLogger = function(tag) {
return new Log(tag)
}
Log.setPrefix = function(prefix) {
Log.prefix = prefix
}
exports = module.exports = Log

12
test/util/logger.js Normal file
View file

@ -0,0 +1,12 @@
var chai = require('chai')
var expect = chai.expect
var logger = require('../../lib/util/logger')
describe('Logger', function() {
it('should have a createLogger method', function() {
expect(logger).itself.to.respondTo('createLogger')
})
})