From 5b45796da447e19fcae3888bc1e76fdc608a402b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Thu, 5 Mar 2020 10:16:17 +0200 Subject: [PATCH] Add missing maxctrl test cases Code coverage revealed that some parts of the code could be easily tested. Added these missing test cases and removed some dead code. --- maxctrl/lib/common.js | 8 ----- maxctrl/lib/create.js | 18 ++++------ maxctrl/package-lock.json | 64 +++++++++++++++++++++++++++++++++++ maxctrl/package.json | 1 + maxctrl/test/createdestroy.js | 7 +++- maxctrl/test/diagnostics.js | 32 ++++++++++++++++++ maxctrl/test/special.js | 2 +- 7 files changed, 111 insertions(+), 21 deletions(-) diff --git a/maxctrl/lib/common.js b/maxctrl/lib/common.js index bdd70ecb7..60a4b88d1 100644 --- a/maxctrl/lib/common.js +++ b/maxctrl/lib/common.js @@ -303,14 +303,6 @@ module.exports = function() { // Perform a PATCH on a resource this.updateValue = function(host, resource, key, value) { var body = {} - - // Convert string booleans into JSON booleans - if (value == "true") { - value = true - } else if (value == "false") { - value = false - } - _.set(body, key, value) return doRequest(host, resource, null, { method: 'PATCH', body: body }) } diff --git a/maxctrl/lib/create.js b/maxctrl/lib/create.js index d3b73ef2a..674237d0a 100644 --- a/maxctrl/lib/create.js +++ b/maxctrl/lib/create.js @@ -171,10 +171,8 @@ exports.builder = function(yargs) { var err = false; - if (argv.params) { - err = validateParams(argv, argv.params) - monitor.data.attributes.parameters = argv.params.reduce(to_obj, {}) - } + err = validateParams(argv, argv.params) + monitor.data.attributes.parameters = argv.params.reduce(to_obj, {}) if (argv.servers) { for (i = 0; i < argv.servers.length; i++) { @@ -265,14 +263,12 @@ exports.builder = function(yargs) { } } - if (argv.params) { - var err = validateParams(argv, argv.params) - if (err) { - return Promise.reject(err) - } - - filter.data.attributes.parameters = argv.params.reduce(to_obj, {}) + var err = validateParams(argv, argv.params) + if (err) { + return Promise.reject(err) } + filter.data.attributes.parameters = argv.params.reduce(to_obj, {}) + return doRequest(host, 'filters', null, {method: 'POST', body: filter}) }) diff --git a/maxctrl/package-lock.json b/maxctrl/package-lock.json index f804d529d..2ce473d3a 100644 --- a/maxctrl/package-lock.json +++ b/maxctrl/package-lock.json @@ -273,6 +273,18 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", + "dev": true + }, + "@types/node": { + "version": "13.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz", + "integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg==", + "dev": true + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", @@ -911,6 +923,12 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", + "dev": true + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -2146,6 +2164,12 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -2185,6 +2209,31 @@ "object-visit": "^1.0.0" } }, + "mariadb": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-2.2.0.tgz", + "integrity": "sha512-YXPF11u4NVgm3FLetJoAbq9Fb0a/RSwNrDHdmAqpqgYErWAOes/IVbOfvWPWZQ0hI88j/81f15AGJZAVuR3bGg==", + "dev": true, + "requires": { + "@types/geojson": "^7946.0.7", + "@types/node": ">=8.0.0", + "denque": "^1.4.1", + "iconv-lite": "^0.5.1", + "long": "^4.0.0", + "moment-timezone": "^0.5.27" + }, + "dependencies": { + "iconv-lite": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.1.tgz", + "integrity": "sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -2295,6 +2344,21 @@ "supports-color": "5.4.0" } }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "moment-timezone": { + "version": "0.5.28", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz", + "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", + "dev": true, + "requires": { + "moment": ">= 2.9.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", diff --git a/maxctrl/package.json b/maxctrl/package.json index 0c258f22d..9917bf72f 100644 --- a/maxctrl/package.json +++ b/maxctrl/package.json @@ -31,6 +31,7 @@ "devDependencies": { "chai": "^3.5.0", "chai-as-promised": "^6.0.0", + "mariadb": "^2.2.0", "mocha": "^5.2.0", "nyc": "^15.0.0" }, diff --git a/maxctrl/test/createdestroy.js b/maxctrl/test/createdestroy.js index 35ea842eb..54660175e 100644 --- a/maxctrl/test/createdestroy.js +++ b/maxctrl/test/createdestroy.js @@ -19,7 +19,7 @@ describe("Create/Destroy Commands", function() { }) it('monitor without parameters fails due to missing user parameter', function() { - return verifyCommand('create monitor my-monitor mysqlmon', 'monitors/my-monitor') + return doCommand('create monitor my-monitor mysqlmon') .should.be.rejected }) @@ -273,5 +273,10 @@ describe("Create/Destroy Commands", function() { .should.be.fulfilled }) + it('create filter with bad parameters', function() { + return doCommand('create filter test-filter qlafilter count 10') + .should.be.rejected + }) + after(stopMaxScale) }); diff --git a/maxctrl/test/diagnostics.js b/maxctrl/test/diagnostics.js index 58a7f88c1..1108a1881 100644 --- a/maxctrl/test/diagnostics.js +++ b/maxctrl/test/diagnostics.js @@ -1,4 +1,18 @@ require('../test_utils.js')() +const mariadb = require('mariadb'); +var conn + +function createConnection() { + return mariadb.createConnection({host: '127.0.0.1', port: 4006, user: 'maxuser', password: 'maxpwd'}) + .then(c => { + conn = c + }) +} + +function closeConnection() { + conn.end() + conn = null +} var tests = [ 'list servers', @@ -15,6 +29,7 @@ var tests = [ 'show services', 'show monitors', 'show sessions', + 'show session 1', 'show filters', 'show modules', 'show maxscale', @@ -30,10 +45,19 @@ var tests = [ 'show maxscale', 'show logging', 'show commands readwritesplit', + 'show qc_cache', + 'show dbusers RW-Split-Router', +] + +var rdns_tests = [ + 'list sessions', + 'show sessions', + 'show session 1', ] describe("Diagnostic Commands", function() { before(startMaxScale) + before(createConnection) tests.forEach(function(i) { it(i, function() { @@ -42,6 +66,14 @@ describe("Diagnostic Commands", function() { }); }) + rdns_tests.forEach(function(i) { + it(i + ' with reverse DNS lookups', function() { + return doCommand(i + ' --rdns') + .should.be.fulfilled + }); + }) + + after(closeConnection) after(stopMaxScale) }); diff --git a/maxctrl/test/special.js b/maxctrl/test/special.js index 48f01028d..29a07d5f9 100644 --- a/maxctrl/test/special.js +++ b/maxctrl/test/special.js @@ -17,7 +17,7 @@ describe("Library invocation", function() { }) it('multiple hosts', function() { - var opts = { extra_args: [ '--quiet', '--hosts', '127.0.0.1:8989', 'localhost:8989'] } + var opts = { extra_args: [ '--quiet', '--hosts', '127.0.0.1:8989,localhost:8989'] } return ctrl.execute('list servers'.split(' '), opts) .should.be.fulfilled })