andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 | * |
| 4 | * Use of this source code is governed by a BSD-style license |
| 5 | * that can be found in the LICENSE file in the root of the source |
| 6 | * tree. An additional intellectual property rights grant can be found |
| 7 | * in the file PATENTS. All contributing project authors may |
| 8 | * be found in the AUTHORS file in the root of the source tree. |
| 9 | */ |
| 10 | |
Mirko Bonadei | 92ea95e | 2017-09-15 06:47:31 +0200 | [diff] [blame] | 11 | #include "test/testsupport/perf_test.h" |
andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 12 | |
| 13 | #include <string> |
| 14 | |
Mirko Bonadei | 92ea95e | 2017-09-15 06:47:31 +0200 | [diff] [blame] | 15 | #include "test/gtest.h" |
andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 16 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 17 | namespace { |
| 18 | |
| 19 | const char* kJsonExpected = R"({ |
| 20 | "format_version":"1.0", |
| 21 | "charts":{ |
| 22 | "foobar":{ |
| 23 | "baz_v":{ |
| 24 | "type":"scalar", |
| 25 | "value":7, |
| 26 | "units":"widgets" |
| 27 | }, |
| 28 | "baz_me":{ |
| 29 | "type":"list_of_scalars", |
| 30 | "values":[1], |
| 31 | "std":2, |
| 32 | "units":"lemurs" |
| 33 | }, |
| 34 | "baz_vl":{ |
| 35 | "type":"list_of_scalars", |
| 36 | "values":[1,2,3], |
| 37 | "units":"units" |
| 38 | } |
| 39 | }, |
| 40 | "measurementmodifier":{ |
| 41 | "trace":{ |
| 42 | "type":"scalar", |
| 43 | "value":42, |
| 44 | "units":"units" |
| 45 | } |
| 46 | } |
| 47 | } |
| 48 | })"; |
| 49 | |
| 50 | std::string RemoveSpaces(std::string s) { |
| 51 | s.erase(std::remove(s.begin(), s.end(), ' '), s.end()); |
| 52 | s.erase(std::remove(s.begin(), s.end(), '\n'), s.end()); |
| 53 | return s; |
| 54 | } |
| 55 | |
| 56 | } // namespace |
| 57 | |
andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 58 | namespace webrtc { |
| 59 | namespace test { |
| 60 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 61 | class PerfTest : public ::testing::Test { |
| 62 | protected: |
| 63 | void TearDown() override { |
| 64 | ClearPerfResults(); |
| 65 | } |
| 66 | }; |
| 67 | |
| 68 | |
Edward Lemur | f49a56b | 2017-11-29 20:29:30 +0100 | [diff] [blame] | 69 | #if defined(WEBRTC_IOS) |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 70 | #define MAYBE_TestPrintResult DISABLED_TestPrintResult |
Edward Lemur | f49a56b | 2017-11-29 20:29:30 +0100 | [diff] [blame] | 71 | #else |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 72 | #define MAYBE_TestPrintResult TestPrintResult |
Edward Lemur | f49a56b | 2017-11-29 20:29:30 +0100 | [diff] [blame] | 73 | #endif |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 74 | TEST_F(PerfTest, MAYBE_TestPrintResult) { |
Edward Lemur | f7ff3e8 | 2017-11-22 16:32:01 +0100 | [diff] [blame] | 75 | testing::internal::CaptureStdout(); |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 76 | std::string expected; |
| 77 | |
| 78 | expected += "RESULT measurementmodifier: trace= 42 units\n"; |
Edward Lemur | f7ff3e8 | 2017-11-22 16:32:01 +0100 | [diff] [blame] | 79 | PrintResult("measurement", "modifier", "trace", 42, "units", false); |
andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 80 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 81 | expected += "*RESULT foobar: baz_v= 7 widgets\n"; |
| 82 | PrintResult("foo", "bar", "baz_v", 7, "widgets", true); |
Edward Lemur | 2f06168 | 2017-11-24 13:40:01 +0100 | [diff] [blame] | 83 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 84 | expected += "RESULT foobar: baz_me= {1,2} lemurs\n"; |
| 85 | PrintResultMeanAndError("foo", "bar", "baz_me", 1, 2, "lemurs", false); |
Edward Lemur | 2f06168 | 2017-11-24 13:40:01 +0100 | [diff] [blame] | 86 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 87 | const double kListOfScalars[] = {1, 2, 3}; |
| 88 | expected += "RESULT foobar: baz_vl= [1,2,3] units\n"; |
| 89 | PrintResultList("foo", "bar", "baz_vl", kListOfScalars, "units", false); |
Edward Lemur | f7ff3e8 | 2017-11-22 16:32:01 +0100 | [diff] [blame] | 90 | |
Edward Lemur | 936dfb1 | 2017-11-30 11:43:42 +0100 | [diff] [blame] | 91 | EXPECT_EQ(expected, testing::internal::GetCapturedStdout()); |
| 92 | } |
| 93 | |
| 94 | TEST_F(PerfTest, TestGetPerfResultsJSON) { |
| 95 | PrintResult("measurement", "modifier", "trace", 42, "units", false); |
| 96 | PrintResult("foo", "bar", "baz_v", 7, "widgets", true); |
| 97 | PrintResultMeanAndError("foo", "bar", "baz_me", 1, 2, "lemurs", false); |
| 98 | const double kListOfScalars[] = {1, 2, 3}; |
| 99 | PrintResultList("foo", "bar", "baz_vl", kListOfScalars, "units", false); |
| 100 | |
| 101 | EXPECT_EQ(RemoveSpaces(kJsonExpected), GetPerfResultsJSON()); |
| 102 | } |
| 103 | |
| 104 | TEST_F(PerfTest, TestClearPerfResults) { |
| 105 | PrintResult("measurement", "modifier", "trace", 42, "units", false); |
| 106 | ClearPerfResults(); |
| 107 | EXPECT_EQ(R"({"format_version":"1.0","charts":{}})", GetPerfResultsJSON()); |
andrew@webrtc.org | 2009f6b | 2012-11-20 00:20:20 +0000 | [diff] [blame] | 108 | } |
| 109 | |
| 110 | } // namespace test |
| 111 | } // namespace webrtc |