diff --git a/CMakeLists.txt b/CMakeLists.txt index 8282ef4..761f9c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1290,7 +1290,7 @@ if(GPERFTOOLS_BUILD_CPU_PROFILER) src/base/logging.h src/base/threading.h src/base/basictypes.h) - target_link_libraries(profiledata_unittest ${LIBPROFILER}) + target_link_libraries(profiledata_unittest ${LIBPROFILER} gtest) add_test(profiledata_unittest profiledata_unittest) add_executable(profile_handler_unittest src/tests/profile-handler_unittest.cc diff --git a/Makefile.am b/Makefile.am index b81837f..b892fb5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -861,8 +861,9 @@ TESTS += getpc_test getpc_test_SOURCES = src/tests/getpc_test.cc src/getpc.h TESTS += profiledata_unittest -profiledata_unittest_SOURCES = src/tests/profiledata_unittest.cc -profiledata_unittest_LDADD = libprofiler.la +profiledata_unittest_SOURCES = src/tests/profiledata_unittest.cc src/profiledata.cc +profiledata_unittest_CPPFLAGS = $(gtest_CPPFLAGS) +profiledata_unittest_LDADD = libstacktrace.la libcommon.la libgtest.la TESTS += profile_handler_unittest profile_handler_unittest_SOURCES = src/tests/profile-handler_unittest.cc src/profile-handler.cc diff --git a/src/tests/profiledata_unittest.cc b/src/tests/profiledata_unittest.cc index 990eb62..723f8b1 100644 --- a/src/tests/profiledata_unittest.cc +++ b/src/tests/profiledata_unittest.cc @@ -44,12 +44,8 @@ #include "base/commandlineflags.h" #include "base/logging.h" -#include "tests/legacy_assertions.h" -using std::string; - -// Some helpful macros for the test class -#define TEST_F(cls, fn) void cls :: fn() +#include "gtest/gtest.h" namespace { @@ -118,16 +114,16 @@ class ProfileDataChecker { if (tmpdir == NULL) tmpdir = "/tmp"; mkdir(tmpdir, 0755); // if necessary - filename_ = string(tmpdir) + "/profiledata_unittest.tmp"; + filename_ = std::string(tmpdir) + "/profiledata_unittest.tmp"; } - string filename() const { return filename_; } + std::string filename() const { return filename_; } // Checks the first 'num_slots' profile data slots in the file // against the data pointed to by 'slots'. Returns kNoError if the // data matched, otherwise returns an indication of the cause of the // mismatch. - string Check(const ProfileDataSlot* slots, int num_slots) { + std::string Check(const ProfileDataSlot* slots, int num_slots) { return CheckWithSkips(slots, num_slots, NULL, 0); } @@ -142,8 +138,8 @@ class ProfileDataChecker { // // Returns kNoError if the data matched, otherwise returns an // indication of the cause of the mismatch. - string CheckWithSkips(const ProfileDataSlot* slots, int num_slots, - const int* skips, int num_skips); + std::string CheckWithSkips(const ProfileDataSlot* slots, int num_slots, + const int* skips, int num_skips); // Validate that a profile is correctly formed. The profile is // assumed to have been created by the same kind of binary (e.g., @@ -151,15 +147,15 @@ class ProfileDataChecker { // // Returns kNoError if the profile appears valid, otherwise returns // an indication of the problem with the profile. - string ValidateProfile(); + std::string ValidateProfile(); private: - string filename_; + std::string filename_; }; -string ProfileDataChecker::CheckWithSkips(const ProfileDataSlot* slots, - int num_slots, const int* skips, - int num_skips) { +std::string ProfileDataChecker::CheckWithSkips(const ProfileDataSlot* slots, + int num_slots, const int* skips, + int num_skips) { FileDescriptor fd(open(filename_.c_str(), O_RDONLY)); if (fd.get() < 0) return "file open error"; @@ -182,7 +178,7 @@ string ProfileDataChecker::CheckWithSkips(const ProfileDataSlot* slots, return kNoError; } -string ProfileDataChecker::ValidateProfile() { +std::string ProfileDataChecker::ValidateProfile() { FileDescriptor fd(open(filename_.c_str(), O_RDONLY)); if (fd.get() < 0) return "file open error"; @@ -311,7 +307,7 @@ string ProfileDataChecker::ValidateProfile() { return kNoError; } -class ProfileDataTest { +class ProfileDataTest : public testing::Test { protected: void ExpectStopped() { EXPECT_FALSE(collector_.enabled()); @@ -334,38 +330,6 @@ class ProfileDataTest { ProfileData collector_; ProfileDataChecker checker_; - - private: - // The tests to run - void OpsWhenStopped(); - void StartStopEmpty(); - void StartStopNoOptionsEmpty(); - void StartWhenStarted(); - void StartStopEmpty2(); - void CollectOne(); - void CollectTwoMatching(); - void CollectTwoFlush(); - void StartResetRestart(); - - public: -#define RUN(test) do { \ - printf("Running %s\n", #test); \ - ProfileDataTest pdt; \ - pdt.test(); \ -} while (0) - - static int RUN_ALL_TESTS() { - RUN(OpsWhenStopped); - RUN(StartStopEmpty); - RUN(StartWhenStarted); - RUN(StartStopEmpty2); - RUN(CollectOne); - RUN(CollectTwoMatching); - RUN(CollectTwoFlush); - RUN(StartResetRestart); - RUN(StartStopNoOptionsEmpty); - return 0; - } }; // Check that various operations are safe when stopped. @@ -601,9 +565,3 @@ TEST_F(ProfileDataTest, StartResetRestart) { } } // namespace - -int main(int argc, char** argv) { - int rc = ProfileDataTest::RUN_ALL_TESTS(); - printf("%s\n", rc == 0 ? "PASS" : "FAIL"); - return rc; -}