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:
Ton Voon 2005-12-15 17:06:55 +00:00
parent e03d87d8ae
commit 71ce143ab1
3 changed files with 56 additions and 15 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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" );
}