mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-06-08 16:26:23 -04:00
Display errors with slave queries correctly. Added extra tests for slaves
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1299 f882894a-f735-0410-b71e-b25c423dba1c
This commit is contained in:
parent
e03d87d8ae
commit
71ce143ab1
3 changed files with 56 additions and 15 deletions
|
|
@ -46,6 +46,8 @@ default via the C<use NPTest;> statement.
|
|||
|
||||
=item getTestParameter( "ENV_VARIABLE", $brief_description, $default )
|
||||
|
||||
$default is optional.
|
||||
|
||||
This function allows the test harness
|
||||
developer to interactively request test parameter information from the
|
||||
user. The user can accept the developer's default value or reply "none"
|
||||
|
|
@ -302,7 +304,7 @@ sub getTestParameter
|
|||
{
|
||||
my( $param, $envvar, $default, $brief, $scoped );
|
||||
my $new_style;
|
||||
if (scalar @_ == 3) {
|
||||
if (scalar @_ <= 3) {
|
||||
($param, $brief, $default) = @_;
|
||||
$envvar = $param;
|
||||
$new_style = 1;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ main (int argc, char **argv)
|
|||
/* should be status */
|
||||
|
||||
char *result = NULL;
|
||||
char *error = NULL;
|
||||
char slaveresult[SLAVERESULTSIZE];
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
|
|
@ -99,21 +100,30 @@ main (int argc, char **argv)
|
|||
if(check_slave) {
|
||||
/* check the slave status */
|
||||
if (mysql_query (&mysql, "show slave status") != 0) {
|
||||
error = strdup(mysql_error(&mysql));
|
||||
mysql_close (&mysql);
|
||||
die (STATE_CRITICAL, _("slave query error: %s\n"), mysql_error (&mysql));
|
||||
die (STATE_CRITICAL, _("slave query error: %s\n"), error);
|
||||
}
|
||||
|
||||
/* store the result */
|
||||
if ( (res = mysql_store_result (&mysql)) == NULL) {
|
||||
error = strdup(mysql_error(&mysql));
|
||||
mysql_close (&mysql);
|
||||
die (STATE_CRITICAL, _("slave store_result error: %s\n"), mysql_error (&mysql));
|
||||
die (STATE_CRITICAL, _("slave store_result error: %s\n"), error);
|
||||
}
|
||||
|
||||
/* Check there is some data */
|
||||
if (mysql_num_rows(res) == 0) {
|
||||
mysql_close(&mysql);
|
||||
die (STATE_WARNING, "%s\n", _("No slaves defined"));
|
||||
}
|
||||
|
||||
/* fetch the first row */
|
||||
if ( (row = mysql_fetch_row (res)) == NULL) {
|
||||
error = strdup(mysql_error(&mysql));
|
||||
mysql_free_result (res);
|
||||
mysql_close (&mysql);
|
||||
die (STATE_CRITICAL, _("slave fetch row error: %s\n"), mysql_error (&mysql));
|
||||
die (STATE_CRITICAL, _("slave fetch row error: %s\n"), error);
|
||||
}
|
||||
|
||||
if (mysql_field_count (&mysql) == 12) {
|
||||
|
|
|
|||
|
|
@ -13,20 +13,49 @@ use vars qw($tests);
|
|||
|
||||
plan skip_all => "check_mysql not compiled" unless (-x "check_mysql");
|
||||
|
||||
plan tests => 3;
|
||||
plan tests => 7;
|
||||
|
||||
my $failureOutput = '/Access denied for user /';
|
||||
my $mysqlserver = getTestParameter( "mysql_server", "NP_MYSQL_SERVER", undef,
|
||||
"A MySQL Server");
|
||||
my $mysql_login_details = getTestParameter( "mysql_login_details", "MYSQL_LOGIN_DETAILS", undef,
|
||||
"Command line parameters to specify login access");
|
||||
my $bad_login_output = '/Access denied for user /';
|
||||
my $mysqlserver = getTestParameter(
|
||||
"NP_MYSQL_SERVER",
|
||||
"A MySQL Server with no slaves setup"
|
||||
);
|
||||
my $mysql_login_details = getTestParameter(
|
||||
"MYSQL_LOGIN_DETAILS",
|
||||
"Command line parameters to specify login access",
|
||||
"-u user -ppw",
|
||||
);
|
||||
my $with_slave = getTestParameter(
|
||||
"NP_MYSQL_WITH_SLAVE",
|
||||
"MySQL server with slaves setup"
|
||||
);
|
||||
my $with_slave_login = getTestParameter(
|
||||
"NP_MYSQL_WITH_SLAVE_LOGIN",
|
||||
"Login details for server with slave",
|
||||
"-uroot -ppw"
|
||||
);
|
||||
|
||||
my $result;
|
||||
|
||||
$result = NPTest->testCmd("./check_mysql -H $mysqlserver $mysql_login_details");
|
||||
cmp_ok( $result->return_code, '==', 0, "Login okay");
|
||||
SKIP: {
|
||||
skip "No mysql server defined", 5 unless $mysqlserver;
|
||||
$result = NPTest->testCmd("./check_mysql -H $mysqlserver $mysql_login_details");
|
||||
cmp_ok( $result->return_code, '==', 0, "Login okay");
|
||||
|
||||
$result = NPTest->testCmd("./check_mysql -H $mysqlserver -u dummy");
|
||||
cmp_ok( $result->return_code, '==', 2, "Login expected failure");
|
||||
like( $result->output, $failureOutput, "Error string as expected");
|
||||
$result = NPTest->testCmd("./check_mysql -H $mysqlserver -u dummy");
|
||||
cmp_ok( $result->return_code, '==', 2, "Login failure");
|
||||
like( $result->output, $bad_login_output, "Expected login failure message");
|
||||
|
||||
$result = NPTest->testCmd("./check_mysql -S -H $mysqlserver $mysql_login_details");
|
||||
cmp_ok( $result->return_code, "==", 1, "No slaves defined" );
|
||||
like( $result->output, "/No slaves defined/", "Correct error message");
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
skip "No mysql server with slaves defined", 2 unless $with_slave;
|
||||
$result = NPTest->testCmd("./check_mysql -H $with_slave $with_slave_login");
|
||||
cmp_ok( $result->return_code, '==', 0, "Login okay");
|
||||
|
||||
$result = NPTest->testCmd("./check_mysql -S -H $with_slave $with_slave_login");
|
||||
cmp_ok( $result->return_code, "==", 0, "Slaves okay" );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue