Fix state conditions in check_memory and check_swap

This fixes the state conditions in check_memory and check_swap. This
turns the if/else if/else statements in simple if statements, since they
won't work properly when both thresholds are broken.

This also implements a new function to get a given state as wstring.
This commit is contained in:
Michael Insel 2018-11-29 22:03:26 +01:00
parent 1f06ba2dfc
commit 160a7716c5
4 changed files with 22 additions and 17 deletions

View File

@ -164,7 +164,7 @@ static int printOutput(printInfoStruct& printInfo)
if (l_Debug)
std::wcout << L"Constructing output string" << '\n';
state state;
state state = OK;
std::wcout << L"MEMORY ";
@ -175,16 +175,13 @@ static int printOutput(printInfoStruct& printInfo)
else
currentValue = printInfo.tRam - printInfo.aRam;
if (printInfo.warn.rend(currentValue, printInfo.tRam)) {
if (printInfo.warn.rend(currentValue, printInfo.tRam))
state = WARNING;
std::wcout << L"WARNING";
} else if (printInfo.crit.rend(currentValue, printInfo.tRam)) {
if (printInfo.crit.rend(currentValue, printInfo.tRam))
state = CRITICAL;
std::wcout << L"CRITICAL";
} else {
state = OK;
std::wcout << L"OK";
}
std::wcout << stateToString(state);
if (!printInfo.showUsed)
std::wcout << " - " << printInfo.percentFree << L"% free";

View File

@ -194,16 +194,13 @@ static int printOutput(printInfoStruct& printInfo)
else
currentValue = printInfo.tSwap - printInfo.aSwap;
if (printInfo.warn.rend(currentValue, printInfo.tSwap)) {
if (printInfo.warn.rend(currentValue, printInfo.tSwap))
state = WARNING;
std::wcout << L"WARNING - ";
} else if (printInfo.crit.rend(currentValue, printInfo.tSwap)) {
if (printInfo.crit.rend(currentValue, printInfo.tSwap))
state = CRITICAL;
std::wcout << L"CRITICAL - ";
} else {
state = OK;
std::wcout << L"OK - ";
}
std::wcout << stateToString(state) << " ";
if (!printInfo.showUsed)
std::wcout << printInfo.percentFree << L"% free ";

View File

@ -281,4 +281,13 @@ std::wstring formatErrorInfo(unsigned long err) {
}
return out.str();
}
std::wstring stateToString(const state& state) {
switch (state) {
case OK: return L"OK";
case WARNING: return L"WARNING";
case CRITICAL: return L"CRITICAL";
default: return L"UNKNOWN";
}
}

View File

@ -76,4 +76,6 @@ std::wstring TunitStr(const Tunit&);
void printErrorInfo(unsigned long err = 0);
std::wstring formatErrorInfo(unsigned long err);
std::wstring stateToString(const state&);
#endif /* THRESHOLDS_H */