1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-09 22:24:09 +03:00
Files
mariadb/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp
2004-10-21 19:23:18 +00:00

198 lines
4.5 KiB
C++

/* 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()
{
}