Add a function to report perf results in JSON format.
Add support to report perf results in the JSON format specified in [1]. [1] https://github.com/catapult-project/catapult/blob/master/dashboard/docs/data-format.md Bug: webrtc:8566 Change-Id: I25f829a4b012b3e2a3d56d61582a674f780148d0 Reviewed-on: https://webrtc-review.googlesource.com/26031 Reviewed-by: Patrik Höglund <phoglund@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20950}
This commit is contained in:
@ -14,30 +14,97 @@
|
||||
|
||||
#include "test/gtest.h"
|
||||
|
||||
namespace {
|
||||
|
||||
const char* kJsonExpected = R"({
|
||||
"format_version":"1.0",
|
||||
"charts":{
|
||||
"foobar":{
|
||||
"baz_v":{
|
||||
"type":"scalar",
|
||||
"value":7,
|
||||
"units":"widgets"
|
||||
},
|
||||
"baz_me":{
|
||||
"type":"list_of_scalars",
|
||||
"values":[1],
|
||||
"std":2,
|
||||
"units":"lemurs"
|
||||
},
|
||||
"baz_vl":{
|
||||
"type":"list_of_scalars",
|
||||
"values":[1,2,3],
|
||||
"units":"units"
|
||||
}
|
||||
},
|
||||
"measurementmodifier":{
|
||||
"trace":{
|
||||
"type":"scalar",
|
||||
"value":42,
|
||||
"units":"units"
|
||||
}
|
||||
}
|
||||
}
|
||||
})";
|
||||
|
||||
std::string RemoveSpaces(std::string s) {
|
||||
s.erase(std::remove(s.begin(), s.end(), ' '), s.end());
|
||||
s.erase(std::remove(s.begin(), s.end(), '\n'), s.end());
|
||||
return s;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace webrtc {
|
||||
namespace test {
|
||||
|
||||
class PerfTest : public ::testing::Test {
|
||||
protected:
|
||||
void TearDown() override {
|
||||
ClearPerfResults();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#if defined(WEBRTC_IOS)
|
||||
#define MAYBE_AppendResult DISABLED_AppendResult
|
||||
#define MAYBE_TestPrintResult DISABLED_TestPrintResult
|
||||
#else
|
||||
#define MAYBE_AppendResult AppendResult
|
||||
#define MAYBE_TestPrintResult TestPrintResult
|
||||
#endif
|
||||
TEST(PerfTest, MAYBE_AppendResult) {
|
||||
TEST_F(PerfTest, MAYBE_TestPrintResult) {
|
||||
testing::internal::CaptureStdout();
|
||||
std::string expected = "RESULT measurementmodifier: trace= 42 units\n";
|
||||
std::string expected;
|
||||
|
||||
expected += "RESULT measurementmodifier: trace= 42 units\n";
|
||||
PrintResult("measurement", "modifier", "trace", 42, "units", false);
|
||||
|
||||
expected += "*RESULT foobar: baz= 7 widgets\n";
|
||||
PrintResult("foo", "bar", "baz", 7, "widgets", true);
|
||||
expected += "*RESULT foobar: baz_v= 7 widgets\n";
|
||||
PrintResult("foo", "bar", "baz_v", 7, "widgets", true);
|
||||
|
||||
expected += "RESULT foobar: baz= {1,2} lemurs\n";
|
||||
PrintResultMeanAndError("foo", "bar", "baz", 1, 2, "lemurs", false);
|
||||
expected += "RESULT foobar: baz_me= {1,2} lemurs\n";
|
||||
PrintResultMeanAndError("foo", "bar", "baz_me", 1, 2, "lemurs", false);
|
||||
|
||||
expected += "RESULT foobar: baz= [1,2,3] units\n";
|
||||
PrintResultList("foo", "bar", "baz", {1, 2, 3}, "units", false);
|
||||
const double kListOfScalars[] = {1, 2, 3};
|
||||
expected += "RESULT foobar: baz_vl= [1,2,3] units\n";
|
||||
PrintResultList("foo", "bar", "baz_vl", kListOfScalars, "units", false);
|
||||
|
||||
std::string output = testing::internal::GetCapturedStdout();
|
||||
EXPECT_EQ(expected, output);
|
||||
EXPECT_EQ(expected, testing::internal::GetCapturedStdout());
|
||||
}
|
||||
|
||||
TEST_F(PerfTest, TestGetPerfResultsJSON) {
|
||||
PrintResult("measurement", "modifier", "trace", 42, "units", false);
|
||||
PrintResult("foo", "bar", "baz_v", 7, "widgets", true);
|
||||
PrintResultMeanAndError("foo", "bar", "baz_me", 1, 2, "lemurs", false);
|
||||
const double kListOfScalars[] = {1, 2, 3};
|
||||
PrintResultList("foo", "bar", "baz_vl", kListOfScalars, "units", false);
|
||||
|
||||
EXPECT_EQ(RemoveSpaces(kJsonExpected), GetPerfResultsJSON());
|
||||
}
|
||||
|
||||
TEST_F(PerfTest, TestClearPerfResults) {
|
||||
PrintResult("measurement", "modifier", "trace", 42, "units", false);
|
||||
ClearPerfResults();
|
||||
EXPECT_EQ(R"({"format_version":"1.0","charts":{}})", GetPerfResultsJSON());
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
|
||||
Reference in New Issue
Block a user