diff options
Diffstat (limited to 'storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp')
-rw-r--r-- | storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp b/storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp new file mode 100644 index 00000000000..990d2e0eada --- /dev/null +++ b/storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp @@ -0,0 +1,197 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "LoggerUnitTest.hpp" + +#include <Logger.hpp> +#include <ConsoleLogHandler.hpp> +#include <FileLogHandler.hpp> + +#if !defined NDB_OSE || !defined NDB_SOFTOSE +#include <SysLogHandler.hpp> +#endif + +#include <NdbOut.hpp> +#include <NdbMain.h> + +typedef bool (*TESTFUNC)(const char*); +typedef struct +{ + const char* name; + TESTFUNC test; +}Tests; + +static Tests testCases[] = { {"Alert", &LoggerUnitTest::testAlert}, + {"Critical", &LoggerUnitTest::testCritical}, + {"Error", &LoggerUnitTest::testError}, + {"Warning", &LoggerUnitTest::testWarning}, + {"Info", &LoggerUnitTest::testInfo}, + {"Debug", &LoggerUnitTest::testDebug}, + {"Info to Critical", &LoggerUnitTest::testInfoCritical}, + {"All", &LoggerUnitTest::testAll}, + {"Off", &LoggerUnitTest::testOff} + }; + +static Logger logger; +int testFailed = 0; + +NDB_COMMAND(loggertest, "loggertest", "loggertest -console | -file", + "loggertest", 16384) +{ + if (argc < 2) + { +#if defined NDB_OSE || defined NDB_SOFTOSE + ndbout << "Usage: loggertest -console | -file" << endl; +#else + ndbout << "Usage: loggertest -console | -file | -syslog" << endl; +#endif + return 0; + } + + if (strcmp(argv[1], "-console") == 0) + { + logger.createConsoleHandler(); + } + else if (strcmp(argv[1], "-file") == 0) + { + logger.createFileHandler(); + //logger.addHandler(new FileLogHandler(argv[2])); + } +#if !defined NDB_OSE || !defined NDB_SOFTOSE + else if (strcmp(argv[1], "-syslog") == 0) + { + logger.createSyslogHandler(); + } +#endif + + logger.disable(Logger::LL_ALL); + + char str[256]; + int testCount = (sizeof(testCases) / sizeof(Tests)); + ndbout << "Starting " << testCount << " tests..." << endl; + for (int i = 0; i < testCount; i++) + { + ndbout << "-- " << " Test " << i + 1 + << " [" << testCases[i].name << "] --" << endl; + BaseString::snprintf(str, 256, "%s %s %s %d", "Logging ", + testCases[i].name, " message ", i); + if (testCases[i].test(str)) + { + ndbout << "-- Passed --" << endl; + } + else + { + ndbout << "-- Failed -- " << endl; + } + + } + ndbout << endl << "-- " << testCount - testFailed << " passed, " + << testFailed << " failed --" << endl; + + logger.removeAllHandlers(); // Need to remove all for OSE, + // because logger is global + return 0; +} + +bool +LoggerUnitTest::logTo(Logger::LoggerLevel from, Logger::LoggerLevel to, const char* msg) +{ + logger.enable(from, to); + return logTo(from, msg); +} + +bool +LoggerUnitTest::logTo(Logger::LoggerLevel level, const char* msg) +{ + logger.enable(level); + logger.alert(msg); + logger.critical(msg); + logger.error(msg); + logger.warning(msg); + logger.info(msg); + logger.debug(msg); + logger.disable(level); + return true; +} + +bool +LoggerUnitTest::testAll(const char* msg) +{ + return logTo(Logger::LL_ALL, msg); +} + +bool +LoggerUnitTest::testOff(const char* msg) +{ + return logTo(Logger::LL_OFF, msg); + +} + +bool +LoggerUnitTest::testAlert(const char* msg) +{ + return logTo(Logger::LL_ALERT, msg); +} + +bool +LoggerUnitTest::testCritical(const char* msg) +{ + return logTo(Logger::LL_CRITICAL, msg); +} + +bool +LoggerUnitTest::testError(const char* msg) +{ + return logTo(Logger::LL_ERROR, msg); +} + +bool +LoggerUnitTest::testWarning(const char* msg) +{ + return logTo(Logger::LL_WARNING, msg); +} + +bool +LoggerUnitTest::testInfo(const char* msg) +{ + return logTo(Logger::LL_INFO, msg); +} + +bool +LoggerUnitTest::testDebug(const char* msg) +{ + return logTo(Logger::LL_DEBUG, msg); +} + +bool +LoggerUnitTest::testInfoCritical(const char* msg) +{ + return logTo(Logger::LL_CRITICAL, Logger::LL_INFO, msg); +} + +void +LoggerUnitTest::error(const char* msg) +{ + testFailed++; + ndbout << "Test failed: " << msg << endl; +} + +LoggerUnitTest::LoggerUnitTest() +{ +} +LoggerUnitTest::~LoggerUnitTest() +{ +} |