Commit fbcd96db by Jamie Madill Committed by Commit Bot

dEQP: Add simple stats reporting to GTest runs.

BUG=None Change-Id: Ia2b59916ebb0de5a09c1f039200d6c8885dd294c Reviewed-on: https://chromium-review.googlesource.com/365940Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent c53507ca
...@@ -209,6 +209,15 @@ class dEQPTest : public testing::TestWithParam<size_t> ...@@ -209,6 +209,15 @@ class dEQPTest : public testing::TestWithParam<size_t>
return sCaseList; return sCaseList;
} }
static void SetUpTestCase()
{
sPasses = 0;
sFails = 0;
sUnexpectedPasses = 0;
}
static void TearDownTestCase();
protected: protected:
void runTest() void runTest()
{ {
...@@ -220,54 +229,78 @@ class dEQPTest : public testing::TestWithParam<size_t> ...@@ -220,54 +229,78 @@ class dEQPTest : public testing::TestWithParam<size_t>
if (caseInfo.mExpectation == gpu::GPUTestExpectationsParser::kGpuTestPass) if (caseInfo.mExpectation == gpu::GPUTestExpectationsParser::kGpuTestPass)
{ {
EXPECT_TRUE(result); EXPECT_TRUE(result);
sPasses += (result ? 1u : 0u);
sFails += (!result ? 1u : 0u);
} }
else if (result) else if (result)
{ {
std::cout << "Test expected to fail but passed!" << std::endl; std::cout << "Test expected to fail but passed!" << std::endl;
sUnexpectedPasses++;
}
else
{
sFails++;
} }
} }
};
class dEQP_GLES2 : public dEQPTest<0>
{
};
class dEQP_GLES3 : public dEQPTest<1> static unsigned int sPasses;
{ static unsigned int sFails;
static unsigned int sUnexpectedPasses;
}; };
class dEQP_GLES31 : public dEQPTest<2> template <size_t TestModuleIndex>
{ unsigned int dEQPTest<TestModuleIndex>::sPasses = 0;
}; template <size_t TestModuleIndex>
unsigned int dEQPTest<TestModuleIndex>::sFails = 0;
template <size_t TestModuleIndex>
unsigned int dEQPTest<TestModuleIndex>::sUnexpectedPasses = 0;
class dEQP_EGL : public dEQPTest<3> // static
template <size_t TestModuleIndex>
void dEQPTest<TestModuleIndex>::TearDownTestCase()
{ {
}; unsigned int total = sPasses + sFails;
float passFrac = static_cast<float>(sPasses) / static_cast<float>(total) * 100.0f;
float failFrac = static_cast<float>(sFails) / static_cast<float>(total) * 100.0f;
std::cout << "Passed: " << sPasses << "/" << total << " tests. (" << passFrac << "%)"
<< std::endl;
if (sFails > 0)
{
std::cout << "Failed: " << sFails << "/" << total << " tests. (" << failFrac << "%)"
<< std::endl;
}
if (sUnexpectedPasses > 0)
{
std::cout << sUnexpectedPasses << " tests unexpectedly passed." << std::endl;
}
}
// TODO(jmadill): add different platform configs, or ability to choose platform // TODO(jmadill): add different platform configs, or ability to choose platform
#define ANGLE_INSTANTIATE_DEQP_TEST_CASE(DEQP_TEST) \ #define ANGLE_INSTANTIATE_DEQP_TEST_CASE(DEQP_TEST, N) \
class DEQP_TEST : public dEQPTest<N> \
{ \
}; \
TEST_P(DEQP_TEST, Default) { runTest(); } \ TEST_P(DEQP_TEST, Default) { runTest(); } \
\ \
INSTANTIATE_TEST_CASE_P(, DEQP_TEST, DEQP_TEST::GetTestingRange(), \ INSTANTIATE_TEST_CASE_P(, DEQP_TEST, DEQP_TEST::GetTestingRange(), \
[](const testing::TestParamInfo<size_t> &info) \ [](const testing::TestParamInfo<size_t> &info) { \
{ \
return DEQP_TEST::GetCaseGTestName(info.param); \ return DEQP_TEST::GetCaseGTestName(info.param); \
}) })
#ifdef ANGLE_DEQP_GLES2_TESTS #ifdef ANGLE_DEQP_GLES2_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES2); ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES2, 0);
#endif #endif
#ifdef ANGLE_DEQP_GLES3_TESTS #ifdef ANGLE_DEQP_GLES3_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES3); ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES3, 1);
#endif #endif
#ifdef ANGLE_DEQP_GLES31_TESTS #ifdef ANGLE_DEQP_GLES31_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES31); ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_GLES31, 2);
#endif #endif
#ifdef ANGLE_DEQP_EGL_TESTS #ifdef ANGLE_DEQP_EGL_TESTS
ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_EGL); ANGLE_INSTANTIATE_DEQP_TEST_CASE(dEQP_EGL, 3);
#endif #endif
} // anonymous namespace } // anonymous namespace
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment