diff --git a/Makefile b/Makefile index c764d76..5557166 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,18 @@ test-v2: --reporter-influxdb-name viz \ --reporter-influxdb-measurement api_results +test-debug: + newman run https://www.getpostman.com/collections/631643-f695cab7-6878-eb55-7943-ad88e1ccfd65-JsLv -r influxdb \ + --reporter-influxdb-server localhost \ + --reporter-influxdb-port 8086 \ + --reporter-influxdb-org viz \ + --reporter-influxdb-version 2 \ + --reporter-influxdb-username viz \ + --reporter-influxdb-password db123456 \ + --reporter-influxdb-name viz \ + --reporter-influxdb-measurement api_results \ + --reporter-influxdb-debug true + test-failed: newman run test/failed.json -r influxdb \ --reporter-influxdb-server localhost \ diff --git a/README.md b/README.md index a3df333..a25a9de 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ newman run https://www.getpostman.com/collections/631643-f695cab7-6878-eb55-7943 `--reporter-influxdb-username` (*Optional*) | Username created for InfluxDB (e.g. `newman_user`) `--reporter-influxdb-password` (*Optional*) | Password of the user (e.g. `p@ssw0rd`) `--reporter-influxdb-mode` | Transmission Mode `http`, `udp` (default: `http`) +`--reporter-debug` | Reporter debug mode (default: `false`) --- diff --git a/package-lock.json b/package-lock.json index 6d9c00a..ec2dd56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "newman-reporter-influxdb", - "version": "2.0.0", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ff11c20..2ae599c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newman-reporter-influxdb", - "version": "2.0.0", + "version": "2.0.2", "description": "Newman Reporter for InfluxDB", "main": "index.js", "scripts": { diff --git a/src/http.service.js b/src/http.service.js index 58dfdfa..d9935d7 100644 --- a/src/http.service.js +++ b/src/http.service.js @@ -47,7 +47,7 @@ class HttpService { const res = await this.client.post('/api/v2/signin'); this.client.defaults.headers.common['cookie'] = res.headers['set-cookie']; } catch (error) { - console.log('[-] ERROR: while signing in to InfluxDB', error); + console.log('[-] ERROR: while signing in to InfluxDB', this.context.debug ? error : error.message); } } @@ -56,7 +56,7 @@ class HttpService { try { await this.client.post('/api/v2/signout'); } catch (error) { - console.log('[-] ERROR: while signing out to InfluxDB', error); + console.log('[-] ERROR: while signing out to InfluxDB', this.context.debug ? error : error.message); } } @@ -66,7 +66,7 @@ class HttpService { try { const data = await axios.get(connectionUrl); } catch (error) { - console.log('[-] ERROR: not able to connect to InfluxDB', error); + console.log('[-] ERROR: not able to connect to InfluxDB', this.context.debug ? error : error.message); } } @@ -94,7 +94,7 @@ class HttpService { try { await this.client.post(url, data); } catch (error) { - console.log('[-] ERROR: while sending data to InfluxDB', error); + console.log('[-] ERROR: while sending data to InfluxDB', this.context.debug ? error : error.message); } } @@ -103,7 +103,6 @@ class HttpService { this.signOut(); } } - }; -module.exports = HttpService; \ No newline at end of file +module.exports = HttpService; diff --git a/src/influxdb-reporter.js b/src/influxdb-reporter.js index 6d37e45..ab1b060 100644 --- a/src/influxdb-reporter.js +++ b/src/influxdb-reporter.js @@ -20,12 +20,16 @@ class InfluxDBReporter { failed: [], skipped: [] }, - list: [] + list: [], + debug: false }; + const events = 'start iteration beforeItem item script request test assertion console exception done'.split(' '); events.forEach((e) => { if (typeof this[e] == 'function') newmanEmitter.on(e, (err, args) => this[e](err, args)) }); - // console.log('[+] Reporter Options', reporterOptions); + if (this.context.debug) { + console.log('[+] Reporter Options', reporterOptions); + } } start(error, args) { @@ -38,6 +42,8 @@ class InfluxDBReporter { this.context.username = this.reporterOptions.influxdbUsername || this.reporterOptions.username; this.context.password = this.reporterOptions.influxdbPassword || this.reporterOptions.password; this.context.mode = this.reporterOptions.influxdbMode || this.reporterOptions.mode; + this.context.debug = this.reporterOptions.influxdbDebug || this.reporterOptions.debug || false; + this.context.debug = this.context.debug === 'true'; if (!this.context.server) { throw new Error('[-] ERROR: InfluxDB Server Address is missing! Add --reporter-influxdb-server .'); @@ -54,7 +60,6 @@ class InfluxDBReporter { throw new Error('[-] ERROR: InfluxDB Database/Bucket Name is missing! Add --reporter-influxdb-name .'); } if (!this.context.measurement) { - // this.context.measurement = `api_results_${new Date().getTime()}`; throw new Error('[-] ERROR: InfluxDB Measurement Name is missing! Add --reporter-influxdb-measurement .'); } if (!this.context.mode) { @@ -116,10 +121,15 @@ class InfluxDBReporter { if(error) { this.context.currentItem.data.test_status = 'FAIL'; - const failMessage = `${error.test} | ${error.name}: ${error.message}`; + let failMessage = `${error.test} | ${error.name}`; + if (this.context.debug) { + failMessage += `: ${error.message}`; + } this.context.currentItem.data.failed.push(failMessage); this.context.currentItem.data.failed_count++; - this.context.assertions.failed.push(failMessage); // for debug only + if (this.context.debug) { + this.context.assertions.failed.push(failMessage); + } } else if(args.skipped) { if(this.context.currentItem.data.test_status !== 'FAIL') { this.context.currentItem.data.test_status = 'SKIP'; @@ -128,31 +138,20 @@ class InfluxDBReporter { const skipMessage = args.assertion; this.context.currentItem.data.skipped.push(args.assertion); this.context.currentItem.data.skipped_count++; - this.context.assertions.skipped.push(skipMessage); // for debug only + if (this.context.debug) { + this.context.assertions.skipped.push(skipMessage); + } } } item(error, args) { const binaryData = this.buildPayload(this.context.currentItem.data); - // console.log('binaryData', binaryData); - this.service.sendData(binaryData); } done() { this.service.disconnect(); console.log(`[+] Finished collection: ${this.options.collection.name} (${this.context.id})`); - - // console.log('this.context', this.context); - // console.log('this.options.collection', this.options.collection); - - // this.stream.write(payload); - // this.stream.done(); - - // this.exports.push({ - // name: 'newman-reporter-influxdb', - // options: reporterOptions - // }); } /// Private method starts here @@ -182,7 +181,6 @@ class InfluxDBReporter { .replace(/,/g, '\\,') .replace(/=/g, '\\='); } - }; -module.exports = InfluxDBReporter; \ No newline at end of file +module.exports = InfluxDBReporter; diff --git a/src/udp.service.js b/src/udp.service.js index ba61a08..d9e465d 100644 --- a/src/udp.service.js +++ b/src/udp.service.js @@ -12,9 +12,7 @@ class UdpService { async sendData(data) { try { - this.socket.send(data, this.context.port, this.context.address, (error, response) => { - if(error) { console.log('udp error', error); throw error; @@ -22,16 +20,14 @@ class UdpService { console.log('udp response', response); }); - } catch (error) { - console.log('[-] ERROR: while sending data to InfluxDB', error); + console.log('[-] ERROR: while sending data to InfluxDB', this.context.debug ? error : error.message); } } close() { this.socket.close(); } - }; -module.exports = UdpService; \ No newline at end of file +module.exports = UdpService;