Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma / lib / runner.js
1 var http = require('http')
2
3 var constant = require('./constants')
4 var helper = require('./helper')
5 var cfg = require('./config')
6
7 var parseExitCode = function (buffer, defaultCode) {
8   var tailPos = buffer.length - Buffer.byteLength(constant.EXIT_CODE) - 1
9
10   if (tailPos < 0) {
11     return defaultCode
12   }
13
14   // tail buffer which might contain the message
15   var tail = buffer.slice(tailPos)
16   var tailStr = tail.toString()
17   if (tailStr.substr(0, tailStr.length - 1) === constant.EXIT_CODE) {
18     tail.fill('\x00')
19     return parseInt(tailStr.substr(-1), 10)
20   }
21
22   return defaultCode
23 }
24
25 // TODO(vojta): read config file (port, host, urlRoot)
26 exports.run = function (config, done) {
27   done = helper.isFunction(done) ? done : process.exit
28   config = cfg.parseConfig(config.configFile, config)
29
30   var exitCode = 1
31   var options = {
32     hostname: config.hostname,
33     path: config.urlRoot + 'run',
34     port: config.port,
35     method: 'POST',
36     headers: {
37       'Content-Type': 'application/json'
38     }
39   }
40
41   var request = http.request(options, function (response) {
42     response.on('data', function (buffer) {
43       exitCode = parseExitCode(buffer, exitCode)
44       process.stdout.write(buffer)
45     })
46
47     response.on('end', function () {
48       done(exitCode)
49     })
50   })
51
52   request.on('error', function (e) {
53     if (e.code === 'ECONNREFUSED') {
54       console.error('There is no server listening on port %d', options.port)
55       done(1)
56     } else {
57       throw e
58     }
59   })
60
61   request.end(JSON.stringify({
62     args: config.clientArgs,
63     removedFiles: config.removedFiles,
64     changedFiles: config.changedFiles,
65     addedFiles: config.addedFiles,
66     refresh: config.refresh
67   }))
68 }