LogHandlerListUnitTest.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 <ndb_global.h>
  14. #include "LogHandlerListUnitTest.hpp"
  15. #include <ConsoleLogHandler.hpp>
  16. #include <FileLogHandler.hpp>
  17. #include <SysLogHandler.hpp>
  18. #include <NdbOut.hpp>
  19. typedef bool (*TESTFUNC)(const char*);
  20. typedef struct
  21. {
  22.   const char* name;
  23.   TESTFUNC test;
  24. }Tests;
  25. static Tests testCases[] = { {"Add", &LogHandlerListUnitTest::testAdd},
  26.      {"Remove", &LogHandlerListUnitTest::testRemove},
  27.      {"Traverse Next", &LogHandlerListUnitTest::testTraverseNext}
  28.                            };
  29. int testFailed = 0;
  30. int main(int argc, char* argv[])
  31. {
  32.   char str[256];
  33.   int testCount = (sizeof(testCases) / sizeof(Tests)); 
  34.   ndbout << "Starting " << testCount << " tests..." << endl;
  35.   for (int i = 0; i < testCount; i++)
  36.   {
  37.     ndbout << "-- " << " Test " << i + 1 
  38.          << " [" << testCases[i].name << "] --" << endl;
  39.     BaseString::snprintf(str, 256, "%s %s %s %d", "Logging ", 
  40.      testCases[i].name, " message ", i);  
  41.     if (testCases[i].test(str))
  42.     {
  43.       ndbout << "-- Passed --" << endl;
  44.     }    
  45.     else
  46.     {
  47.       ndbout << "-- Failed -- " << endl;
  48.     }
  49.     
  50.   }
  51.   ndbout << endl << "-- " << testCount - testFailed << " passed, " 
  52.        << testFailed << " failed --" << endl;
  53.   
  54.   return 0;  
  55. }
  56. bool 
  57. LogHandlerListUnitTest::testAdd(const char* msg)
  58. {
  59.   bool rc = true;
  60.   LogHandlerList list;
  61.   int size = 10;
  62.   for (int i = 0; i < size; i++)
  63.   {
  64.     list.add(new ConsoleLogHandler());
  65.   }
  66.   if (list.size() != size)
  67.   {
  68.     rc = false;
  69.   }
  70.   ndbout << "List size: " << list.size() << endl;
  71.   return rc;
  72. }
  73. bool 
  74. LogHandlerListUnitTest::testRemove(const char* msg)
  75. {
  76.   bool rc = true;
  77.   LogHandlerList list;
  78.   int size = 10;
  79.   LogHandler* pHandlers[10];
  80.   for (int i = 0; i < size; i++)
  81.   {
  82.     pHandlers[i] = new ConsoleLogHandler();
  83.     list.add(pHandlers[i]);
  84.   }
  85.   
  86.   // Remove
  87.   for (int i = 0; i < size; i++)
  88.   {
  89.     if (!list.remove(pHandlers[i]))
  90.     {
  91.       ndbout << "Could not remove handler!" << endl;
  92.     }
  93.     else
  94.     {
  95.       ndbout << "List size: " << list.size() << endl;
  96.     }
  97.   }
  98.   return rc;
  99. }
  100. bool 
  101. LogHandlerListUnitTest::testTraverseNext(const char* msg)
  102. {
  103.   bool rc = true;
  104.   LogHandlerList list;
  105.   int size = 10;
  106.   LogHandler* pHandlers[10];
  107.   for (int i = 0; i < size; i++)
  108.   {
  109.     char* str = new char[3];
  110.     pHandlers[i] = new ConsoleLogHandler();
  111.     BaseString::snprintf(str, 3, "%d", i);
  112.     pHandlers[i]->setDateTimeFormat(str);   
  113.     list.add(pHandlers[i]);
  114.   }
  115.   
  116.   ndbout << "List size: " << list.size() << endl;
  117.       
  118.   LogHandler* pHandler = NULL;
  119.   int i = 0;
  120.   while ((pHandler = list.next()) != NULL)
  121.   {
  122.     ndbout << "Handler[" << i++ << "]:dateformat = " 
  123.  << pHandler->getDateTimeFormat() << endl;
  124.   }
  125.   list.removeAll();
  126.   return rc;
  127. }
  128. void
  129. LogHandlerListUnitTest::error(const char* msg)
  130. {
  131.   testFailed++;
  132.   ndbout << "Test failed: " << msg << endl;  
  133. }
  134. LogHandlerListUnitTest::LogHandlerListUnitTest()
  135. {
  136. }
  137. LogHandlerListUnitTest::~LogHandlerListUnitTest()
  138. {
  139. }