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.
This commit is contained in:
Markus Mäkelä
2020-03-05 10:16:17 +02:00
parent 68c070c2c4
commit 5b45796da4
7 changed files with 111 additions and 21 deletions

View File

@ -303,14 +303,6 @@ module.exports = function() {
// Perform a PATCH on a resource // Perform a PATCH on a resource
this.updateValue = function(host, resource, key, value) { this.updateValue = function(host, resource, key, value) {
var body = {} var body = {}
// Convert string booleans into JSON booleans
if (value == "true") {
value = true
} else if (value == "false") {
value = false
}
_.set(body, key, value) _.set(body, key, value)
return doRequest(host, resource, null, { method: 'PATCH', body: body }) return doRequest(host, resource, null, { method: 'PATCH', body: body })
} }

View File

@ -171,10 +171,8 @@ exports.builder = function(yargs) {
var err = false; var err = false;
if (argv.params) { err = validateParams(argv, argv.params)
err = validateParams(argv, argv.params) monitor.data.attributes.parameters = argv.params.reduce(to_obj, {})
monitor.data.attributes.parameters = argv.params.reduce(to_obj, {})
}
if (argv.servers) { if (argv.servers) {
for (i = 0; i < argv.servers.length; i++) { 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)
var err = validateParams(argv, argv.params) if (err) {
if (err) { return Promise.reject(err)
return Promise.reject(err)
}
filter.data.attributes.parameters = argv.params.reduce(to_obj, {})
} }
filter.data.attributes.parameters = argv.params.reduce(to_obj, {})
return doRequest(host, 'filters', null, {method: 'POST', body: filter}) return doRequest(host, 'filters', null, {method: 'POST', body: filter})
}) })

View File

@ -273,6 +273,18 @@
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
"dev": true "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": { "aggregate-error": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", "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", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "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": { "diff": {
"version": "3.5.0", "version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@ -2146,6 +2164,12 @@
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true "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": { "lru-cache": {
"version": "4.1.5", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@ -2185,6 +2209,31 @@
"object-visit": "^1.0.0" "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": { "mem": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
@ -2295,6 +2344,21 @@
"supports-color": "5.4.0" "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": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",

View File

@ -31,6 +31,7 @@
"devDependencies": { "devDependencies": {
"chai": "^3.5.0", "chai": "^3.5.0",
"chai-as-promised": "^6.0.0", "chai-as-promised": "^6.0.0",
"mariadb": "^2.2.0",
"mocha": "^5.2.0", "mocha": "^5.2.0",
"nyc": "^15.0.0" "nyc": "^15.0.0"
}, },

View File

@ -19,7 +19,7 @@ describe("Create/Destroy Commands", function() {
}) })
it('monitor without parameters fails due to missing user parameter', 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 .should.be.rejected
}) })
@ -273,5 +273,10 @@ describe("Create/Destroy Commands", function() {
.should.be.fulfilled .should.be.fulfilled
}) })
it('create filter with bad parameters', function() {
return doCommand('create filter test-filter qlafilter count 10')
.should.be.rejected
})
after(stopMaxScale) after(stopMaxScale)
}); });

View File

@ -1,4 +1,18 @@
require('../test_utils.js')() 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 = [ var tests = [
'list servers', 'list servers',
@ -15,6 +29,7 @@ var tests = [
'show services', 'show services',
'show monitors', 'show monitors',
'show sessions', 'show sessions',
'show session 1',
'show filters', 'show filters',
'show modules', 'show modules',
'show maxscale', 'show maxscale',
@ -30,10 +45,19 @@ var tests = [
'show maxscale', 'show maxscale',
'show logging', 'show logging',
'show commands readwritesplit', '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() { describe("Diagnostic Commands", function() {
before(startMaxScale) before(startMaxScale)
before(createConnection)
tests.forEach(function(i) { tests.forEach(function(i) {
it(i, function() { 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) after(stopMaxScale)
}); });

View File

@ -17,7 +17,7 @@ describe("Library invocation", function() {
}) })
it('multiple hosts', 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) return ctrl.execute('list servers'.split(' '), opts)
.should.be.fulfilled .should.be.fulfilled
}) })