GLogTest.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright 2014-present Facebook, Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <folly/GLog.h>
  17. #include <folly/portability/GTest.h>
  18. #include <vector>
  19. TEST(LogEveryMs, basic) {
  20. std::vector<std::chrono::steady_clock::time_point> hist;
  21. while (hist.size() < 10) {
  22. FB_LOG_EVERY_MS(INFO, 10)
  23. << "test msg "
  24. << (hist.push_back(std::chrono::steady_clock::now()), hist.size());
  25. }
  26. bool atLeastOneIsGood = false;
  27. for (size_t i = 0; i < hist.size() - 1; ++i) {
  28. auto delta = hist[i + 1] - hist[i];
  29. if (delta > std::chrono::milliseconds(5) &&
  30. delta < std::chrono::milliseconds(15)) {
  31. atLeastOneIsGood = true;
  32. }
  33. }
  34. EXPECT_TRUE(atLeastOneIsGood);
  35. }
  36. TEST(LogEveryMs, zero) {
  37. int count = 0;
  38. for (int i = 0; i < 10; ++i) {
  39. FB_LOG_EVERY_MS(INFO, 0) << "test msg " << ++count;
  40. }
  41. EXPECT_EQ(10, count);
  42. }