Commit Graph

76 Commits

Author SHA1 Message Date
cf8028a5ce MXS-1300: Un-modularize the core
Making the core a module proved to bring more problems than it solved. For
the sake of simplicity in installation and code coverage reporting, the
core is now completely contained in the `lib/` directory.

Also added preliminary coverage reporting with nyc.
2017-07-23 08:21:00 +03:00
0f1a427458 MXS-1300: Add monitor test to MaxCtrl
The test runts tests on the commands that interact with monitors.
2017-07-23 08:21:00 +03:00
0f8cd4e90c MXS-1300: Add monitor credentials as create options
The monitor user and password can now be defined as options to the create
command. This should help with the creation of a monitor in one request.

Fixed the command description of `create listener`.
2017-07-23 08:21:00 +03:00
fa6bea33fe MXS-1300: Fix monitor and listener creation
The creation commands for monitors and listeners referred to undefined
variables. Also fixed the test case names being duplicated.
2017-07-23 08:21:00 +03:00
2411288388 MXS-1300: Add service test for MaxCtrl
The test goes through the commands that affect services.
2017-07-23 08:21:00 +03:00
d1bee274fa MXS-1300: Add MaxCtrl server tests
The test creates, destroys and alters servers with both valid and invalid
parameters.
2017-07-18 11:37:18 +03:00
f9e161eaf6 MXS-1300: Add finer granularity to error message content
If an unexpected network error occurs, only the error part of the response
should be printed. The complete object should be dumped only as a last
resort.
2017-07-18 11:37:18 +03:00
9e688772cc MXS-1300: Make the MaxCtrl core a Node.js module
The core is now a module that is loaded by the command line client. This
allows the core library to be reused for testing.
2017-07-18 11:37:18 +03:00
9a6e281456 MXS-1300: Add list listeners command
The listeners of a service can now be listed.
2017-07-18 11:37:18 +03:00
3255d58e70 MXS-1300: Take the refactored core into use
The refactored maxctrl function is now in use.
2017-07-18 11:37:18 +03:00
b98b326bba MXS-1300: Refactor multi-hosts command execution
The main `maxctrl` function now does the cluster health checks and handles
the iteration over the host list. This solves the problem of how to
execute commands on multiple hosts while still allowing recursive calls
into the common functions.

This does not, however, solve the problem of how interconnected commands
across a set of servers are handled. One way to solve this would be to
offer a second main function, `maxctrl_cluster` which would call the
callback with a set of servers instead of a single server.
2017-07-18 11:37:18 +03:00
aabbf64991 MXS-1300: Add server state manipulation test
The test sets and clears server states and verifies it via the REST
API. It also checks that only correct arguments are accepted.
2017-07-18 11:37:18 +03:00
18f05578c3 MXS-1300: Disable all output with --quiet
As the option is currently only used for testing, it's better to have it
produce no output at all.
2017-07-18 11:37:18 +03:00
738dc48df7 MXS-1300: Add basic maxctrl tests
Added basic tests for maxctrl. They simply test that the diagnostic
commands work.
2017-07-18 11:37:18 +03:00
d938dcc701 MXS-1300: Make output optional
Minor refactoring to the core library to allow multiple calls from within
the same program.

Added --quiet option to silence output so that tests aren't so
verbose. Currently this only works on UNIX based systems.
2017-07-18 11:37:18 +03:00
ec5b0fea39 MXS-1300: Use native promises for requests
The request-promise-native package adds support for request with native
promises. This is a convenient way to synchronize multiple HTTP requests.

The functions are changed to use promises to make testing easier. With
promises, the testing code can use the chai-as-promised library.

There are a few cases where doRequest is called with a callback that again
calls doAsyncRequest. With multiple hosts, this causes each command to be
propagated to all servers. This is a design flaw of the current multi-host
mode and needs to be changed.

Changed maxctrl.js to wait on the promises to silence some warnings if the
promise rejections are ignored.
2017-07-18 11:37:18 +03:00
b54e94ce95 MXS-1300: Add TSV output to MaxCtrl
TSV output is a lot easier to parse compared to the pretty-printed
Unicode.
2017-07-18 11:37:18 +03:00
816e317485 MXS-1300: Make MaxCtrl more like a library
All invocations into the common helper functions are now done through the
`maxctrl` function. This allows the program arguments to be passed to the
core as a parameter instead of reading them from global variables.

This helps with the implicit initialization that was done when the yargs
library was required which caused duplicated output.

Refactored the core functions so that they only process the argument
vector. The parsing of the argument vector is done in maxctrl.js where it
is more appropriate.
2017-07-18 11:37:18 +03:00
01fa1a827a MXS-1300: Move the REST API tests back into the core
As the REST API is a part of the core, it is more appropriate for the
tests to reside there as well. Further refactoring of the testing needs to
be done to allow multiple components to use the same framework but with
different tests.
2017-07-18 11:37:18 +03:00
a082871726 MXS-1300: Refactor the way maxctrl is invoked
Making the invocation explicit should allow testing without actually
starting the process fromt the command line. Also returning a promise
allows chaining of commands for testing and verification.
2017-07-18 11:37:18 +03:00
6c601955d6 MXS-1300: Build MaxCtrl if npm was found
If npm is installed on the local system, try to build MaxCtrl as a part of
the core.
2017-07-18 11:37:18 +03:00
d3f45f0e0e MXS-1300: Speed up REST API testing
The MariaDB servers are now started first. This will give them time to
prepare while other parts of the tests are being prepared.
2017-07-18 11:37:18 +03:00
4dcefed974 MXS-1300: Fix test server creation
Before creating the users, the master will do a RESET MASTER to remove the
automatically generated binlogs. The servers should now start a lot faster
since they no longer need to replicate the large amounts of data that were
in these generated binlogs.
2017-07-18 11:37:18 +03:00
16ed95d865 MXS-1220: Fix REST API tests
The service and server tests were deleting the relationships object and
posting a body without it instead of posting an empty relationships object
to delete relationships.
2017-07-18 11:37:18 +03:00
6479788283 MXS-1300: Add docker based cluster for REST API testing
The REST API test suite now starts a four node MariaDB cluster with
docker-compose. This allows quick and easy local testing.
2017-07-18 11:37:18 +03:00
d59d3ab638 MXS-1300: Combine REST API and MaxCtrl tests
The REST API tests are now located under the maxctrl directory. This
allows both tests to use the same framework for testing.
2017-07-18 11:37:18 +03:00