LoggerUnitTest.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include "LoggerUnitTest.hpp"
  14. #include <Logger.hpp>
  15. #include <ConsoleLogHandler.hpp>
  16. #include <FileLogHandler.hpp>
  17. #if !defined NDB_OSE || !defined NDB_SOFTOSE
  18. #include <SysLogHandler.hpp>
  19. #endif
  20. #include <NdbOut.hpp>
  21. #include <NdbMain.h>
  22. typedef bool (*TESTFUNC)(const char*);
  23. typedef struct
  24. {
  25.   const char* name;
  26.   TESTFUNC test;
  27. }Tests;
  28. static Tests testCases[] = { {"Alert", &LoggerUnitTest::testAlert},
  29.      {"Critical", &LoggerUnitTest::testCritical},
  30.      {"Error", &LoggerUnitTest::testError},
  31.      {"Warning", &LoggerUnitTest::testWarning},
  32.      {"Info", &LoggerUnitTest::testInfo},
  33.      {"Debug", &LoggerUnitTest::testDebug},
  34.      {"Info to Critical", &LoggerUnitTest::testInfoCritical},
  35.      {"All", &LoggerUnitTest::testAll},
  36.      {"Off", &LoggerUnitTest::testOff}
  37.                            };
  38. static Logger logger;
  39. int testFailed = 0;
  40. NDB_COMMAND(loggertest, "loggertest", "loggertest -console | -file", 
  41.     "loggertest", 16384)
  42. {
  43.   if (argc < 2)
  44.   {
  45. #if defined NDB_OSE || defined NDB_SOFTOSE
  46.     ndbout << "Usage: loggertest -console | -file" << endl;
  47. #else
  48.     ndbout << "Usage: loggertest -console | -file | -syslog" << endl;
  49. #endif
  50.     return 0;
  51.   }
  52.   if (strcmp(argv[1], "-console") == 0)
  53.   {
  54.     logger.createConsoleHandler();
  55.   }
  56.   else if (strcmp(argv[1], "-file") == 0)
  57.   {
  58.     logger.createFileHandler();
  59.     //logger.addHandler(new FileLogHandler(argv[2]));
  60.   }
  61. #if !defined NDB_OSE || !defined NDB_SOFTOSE
  62.   else if (strcmp(argv[1], "-syslog") == 0)
  63.   {
  64.     logger.createSyslogHandler();
  65.   }
  66. #endif
  67.   logger.disable(Logger::LL_ALL);
  68.   char str[256];
  69.   int testCount = (sizeof(testCases) / sizeof(Tests)); 
  70.   ndbout << "Starting " << testCount << " tests..." << endl;
  71.   for (int i = 0; i < testCount; i++)
  72.   {
  73.     ndbout << "-- " << " Test " << i + 1 
  74.          << " [" << testCases[i].name << "] --" << endl;
  75.     BaseString::snprintf(str, 256, "%s %s %s %d", "Logging ", 
  76.        testCases[i].name, " message ", i);  
  77.     if (testCases[i].test(str))
  78.     {
  79.       ndbout << "-- Passed --" << endl;
  80.     }    
  81.     else
  82.     {
  83.       ndbout << "-- Failed -- " << endl;
  84.     }
  85.     
  86.   }
  87.   ndbout << endl << "-- " << testCount - testFailed << " passed, " 
  88.        << testFailed << " failed --" << endl;
  89.   logger.removeAllHandlers(); // Need to remove all for OSE, 
  90.                               // because logger is global
  91.   return 0;  
  92. }
  93. bool
  94. LoggerUnitTest::logTo(Logger::LoggerLevel from, Logger::LoggerLevel to, const char* msg)
  95. {
  96.   logger.enable(from, to);
  97.   return logTo(from, msg);
  98. }
  99. bool
  100. LoggerUnitTest::logTo(Logger::LoggerLevel level, const char* msg)
  101. {
  102.   logger.enable(level);
  103.   logger.alert(msg);
  104.   logger.critical(msg);
  105.   logger.error(msg);
  106.   logger.warning(msg);
  107.   logger.info(msg);
  108.   logger.debug(msg);
  109.   logger.disable(level);
  110.   return true;
  111. }
  112. bool
  113. LoggerUnitTest::testAll(const char* msg)
  114. {
  115.   return logTo(Logger::LL_ALL, msg);
  116. }
  117. bool
  118. LoggerUnitTest::testOff(const char* msg)
  119. {
  120.   return logTo(Logger::LL_OFF, msg);
  121. }
  122. bool
  123. LoggerUnitTest::testAlert(const char* msg)
  124. {
  125.   return logTo(Logger::LL_ALERT, msg);
  126. }
  127. bool
  128. LoggerUnitTest::testCritical(const char* msg)
  129. {
  130.   return logTo(Logger::LL_CRITICAL, msg);
  131. }
  132. bool
  133. LoggerUnitTest::testError(const char* msg)
  134. {
  135.   return logTo(Logger::LL_ERROR, msg);
  136. }
  137. bool
  138. LoggerUnitTest::testWarning(const char* msg)
  139. {
  140.   return logTo(Logger::LL_WARNING, msg);
  141. }
  142. bool
  143. LoggerUnitTest::testInfo(const char* msg)
  144. {
  145.   return logTo(Logger::LL_INFO, msg);
  146. }
  147. bool
  148. LoggerUnitTest::testDebug(const char* msg)
  149. {
  150.   return logTo(Logger::LL_DEBUG, msg);
  151. }
  152. bool 
  153. LoggerUnitTest::testInfoCritical(const char* msg)
  154. {
  155.   return logTo(Logger::LL_CRITICAL, Logger::LL_INFO, msg);
  156. }
  157. void
  158. LoggerUnitTest::error(const char* msg)
  159. {
  160.   testFailed++;
  161.   ndbout << "Test failed: " << msg << endl;  
  162. }
  163. LoggerUnitTest::LoggerUnitTest()
  164. {
  165. }
  166. LoggerUnitTest::~LoggerUnitTest()
  167. {
  168. }