1 // Copyright (C) 2014-2015 EDF-R&D
2 // This library is free software; you can redistribute it and/or
3 // modify it under the terms of the GNU Lesser General Public
4 // License as published by the Free Software Foundation; either
5 // version 2.1 of the License, or (at your option) any later version.
7 // This library is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 // Lesser General Public License for more details.
12 // You should have received a copy of the GNU Lesser General Public
13 // License along with this library; if not, write to the Free Software
14 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #include <TestLib_Listener.h>
20 #include <cppunit/Test.h>
29 Convert the given time structure to milliseconds number
30 @param theTime the time structure to convert
31 @return the calculated number of milliseconds
33 INT64 GetMilliseconds( const FILETIME& theTime )
36 FileTimeToSystemTime( &theTime, &aTime );
38 aRes += aTime.wHour * ( 3600 * 1000 );
39 aRes += aTime.wMinute * ( 60 * 1000 );
40 aRes += aTime.wSecond * ( 1000 );
41 aRes += aTime.wMilliseconds;
47 Calculate the complete execution time for the current thread
48 @return the calculated time as the number of milliseconds
50 INT64 GetTimeForCurrentThreadInMs()
53 FILETIME aCreationTime, anExitTime, aKernelTime, aUserTime;
54 GetThreadTimes( GetCurrentThread(), &aCreationTime, &anExitTime, &aKernelTime, &aUserTime );
55 INT64 aKernelMs = GetMilliseconds( aKernelTime );
56 INT64 aUserMs = GetMilliseconds( aUserTime );
57 return aKernelMs + aUserMs;
59 struct timespec aTime;
60 clock_gettime( CLOCK_MONOTONIC, &aTime );
61 INT64 aSec = aTime.tv_sec;
63 aSec += aTime.tv_nsec / 1000000;
71 TestLib_Listener::TestLib_Listener()
72 : myStart( 0 ), myComplete( 0 )
79 TestLib_Listener::~TestLib_Listener()
84 \brief Clear the internal state of the listener
86 void TestLib_Listener::Clear()
93 Get complete time of all tests execution in milliseconds
94 @return complete time in milliseconds
96 INT64 TestLib_Listener::GetCompleteTimeInMS() const
102 Handler for test start
103 @param theTest the started tests
105 void TestLib_Listener::startTest( CppUnit::Test* theTest )
109 aName = theTest->getName();
111 std::cout << aName << "...";
112 myStart = GetTimeForCurrentThreadInMs();
116 Handler for test finish
117 @param theTest the finished tests
119 void TestLib_Listener::endTest( CppUnit::Test* theTest )
121 INT64 aCurTime = GetTimeForCurrentThreadInMs();
122 INT64 anExecTimeMS = aCurTime - myStart;
123 myComplete += anExecTimeMS;
124 std::cout << " " << anExecTimeMS << " ms" << std::endl;
128 Handler for test suite start
129 @param theTest the started test suite
131 void TestLib_Listener::startSuite( CppUnit::Test* theTest )
136 Handler for test suite finish
137 @param theTest the finished test suite
139 void TestLib_Listener::endSuite( CppUnit::Test* theTest )
144 Handler for test failure
145 @param theFailure the failure information
147 void TestLib_Listener::addFailure( const CppUnit::TestFailure& theFailure )