Skip to content

Commit

Permalink
Add MacOS X 10.10 Yosemite support to GPUTestBotConfig.
Browse files Browse the repository at this point in the history
It allows test GPUTestConfigTest.LoadCurrentConfig to pass on Yosemite.

BUG=474551

TEST=gpu_unittests --gtest_filter="GPUTestConfigTest.LoadCurrentConfig"

Review URL: https://codereview.chromium.org/1068813002

Cr-Commit-Position: refs/heads/master@{#325221}
  • Loading branch information
iceman authored and Commit bot committed Apr 15, 2015
1 parent 27804d1 commit 3197ce8
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 24 deletions.
3 changes: 3 additions & 0 deletions gpu/config/gpu_test_config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ GPUTestConfig::OS GetCurrentOS() {
return GPUTestConfig::kOsMacMountainLion;
case 9:
return GPUTestConfig::kOsMacMavericks;
case 10:
return GPUTestConfig::kOsMacYosemite;
}
}
#elif defined(OS_ANDROID)
Expand Down Expand Up @@ -172,6 +174,7 @@ bool GPUTestBotConfig::IsValid() const {
case kOsMacLion:
case kOsMacMountainLion:
case kOsMacMavericks:
case kOsMacYosemite:
case kOsLinux:
case kOsChromeOS:
case kOsAndroid:
Expand Down
9 changes: 5 additions & 4 deletions gpu/config/gpu_test_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ class GPU_EXPORT GPUTestConfig {
kOsMacLion = 1 << 6,
kOsMacMountainLion = 1 << 7,
kOsMacMavericks = 1 << 8,
kOsMacYosemite = 1 << 9,
kOsMac = kOsMacLeopard | kOsMacSnowLeopard | kOsMacLion |
kOsMacMountainLion | kOsMacMavericks,
kOsLinux = 1 << 9,
kOsChromeOS = 1 << 10,
kOsAndroid = 1 << 11,
kOsMacMountainLion | kOsMacMavericks | kOsMacYosemite,
kOsLinux = 1 << 10,
kOsChromeOS = 1 << 11,
kOsAndroid = 1 << 12,
};

enum BuildType {
Expand Down
5 changes: 5 additions & 0 deletions gpu/config/gpu_test_expectations_parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ enum Token {
kConfigMacLion,
kConfigMacMountainLion,
kConfigMacMavericks,
kConfigMacYosemite,
kConfigMac,
kConfigLinux,
kConfigChromeOS,
Expand Down Expand Up @@ -83,6 +84,7 @@ const TokenInfo kTokenData[] = {
{ "lion", GPUTestConfig::kOsMacLion },
{ "mountainlion", GPUTestConfig::kOsMacMountainLion },
{ "mavericks", GPUTestConfig::kOsMacMavericks },
{ "yosemite", GPUTestConfig::kOsMacYosemite },
{ "mac", GPUTestConfig::kOsMac },
{ "linux", GPUTestConfig::kOsLinux },
{ "chromeos", GPUTestConfig::kOsChromeOS },
Expand Down Expand Up @@ -235,6 +237,7 @@ bool GPUTestExpectationsParser::ParseConfig(
case kConfigMacLion:
case kConfigMacMountainLion:
case kConfigMacMavericks:
case kConfigMacYosemite:
case kConfigMac:
case kConfigLinux:
case kConfigChromeOS:
Expand Down Expand Up @@ -286,6 +289,7 @@ bool GPUTestExpectationsParser::ParseLine(
case kConfigMacLion:
case kConfigMacMountainLion:
case kConfigMacMavericks:
case kConfigMacYosemite:
case kConfigMac:
case kConfigLinux:
case kConfigChromeOS:
Expand Down Expand Up @@ -400,6 +404,7 @@ bool GPUTestExpectationsParser::UpdateTestConfig(
case kConfigMacLion:
case kConfigMacMountainLion:
case kConfigMacMavericks:
case kConfigMacYosemite:
case kConfigMac:
case kConfigLinux:
case kConfigChromeOS:
Expand Down
123 changes: 103 additions & 20 deletions gpu/config/gpu_test_expectations_parser_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,58 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/format_macros.h"
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "gpu/config/gpu_test_expectations_parser.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace gpu {

struct TestOSEntry {
const char* name;
GPUTestConfig::OS os;
};

static const TestOSEntry kOsFamilyWin = { "WIN", GPUTestConfig::kOsWin };
static const TestOSEntry kOsFamilyMac = { "MAC", GPUTestConfig::kOsMac };

static const struct TestOsWithFamily {
TestOSEntry version;
TestOSEntry family;
} kOSVersionsWithFamily[] = {
{ { "XP", GPUTestConfig::kOsWinXP }, kOsFamilyWin },
{ { "VISTA", GPUTestConfig::kOsWinVista }, kOsFamilyWin },
{ { "WIN7", GPUTestConfig::kOsWin7 }, kOsFamilyWin },
{ { "WIN8", GPUTestConfig::kOsWin8 }, kOsFamilyWin },
{ { "LEOPARD", GPUTestConfig::kOsMacLeopard }, kOsFamilyMac },
{ { "SNOWLEOPARD", GPUTestConfig::kOsMacSnowLeopard }, kOsFamilyMac },
{ { "LION", GPUTestConfig::kOsMacLion }, kOsFamilyMac },
{ { "MOUNTAINLION", GPUTestConfig::kOsMacMountainLion }, kOsFamilyMac },
{ { "MAVERICKS", GPUTestConfig::kOsMacMavericks }, kOsFamilyMac },
{ { "YOSEMITE", GPUTestConfig::kOsMacYosemite }, kOsFamilyMac },
{ { "LINUX", GPUTestConfig::kOsLinux },
{ "LINUX", GPUTestConfig::kOsLinux } },
{ { "CHROMEOS", GPUTestConfig::kOsChromeOS },
{ "CHROMEOS", GPUTestConfig::kOsChromeOS } },
{ { "ANDROID", GPUTestConfig::kOsAndroid },
{ "ANDROID", GPUTestConfig::kOsAndroid } }
};

TestOSEntry GetUnrelatedOS(const TestOSEntry& os) {
return (os.os & kOsFamilyWin.os) ? kOsFamilyMac : kOsFamilyWin;
}

// Prints test parameter details.
std::ostream& operator << (std::ostream& out, const TestOsWithFamily& os) {
out << "{ os_name: \"" << os.version.name
<< "\", os_flag: " << os.version.os
<< ", os_family: \"" << os.family.name
<< "\", os_family_flag: " << os.family.os
<< " }";
return out;
}

class GPUTestExpectationsParserTest : public testing::Test {
public:
GPUTestExpectationsParserTest() { }
Expand All @@ -29,10 +75,35 @@ class GPUTestExpectationsParserTest : public testing::Test {

void TearDown() override {}

void set_os(int32 os) {
bot_config_.set_os(os);
ASSERT_TRUE(bot_config_.IsValid());
}

private:
GPUTestBotConfig bot_config_;
};

class GPUTestExpectationsParserParamTest
: public GPUTestExpectationsParserTest,
public testing::WithParamInterface<TestOsWithFamily> {
public:
GPUTestExpectationsParserParamTest() { }

~GPUTestExpectationsParserParamTest() override {}

protected:
const GPUTestBotConfig& GetBotConfig() {
set_os(GetParam().version.os);
return bot_config();
}

private:
// Restrict access to bot_config() function.
// GetBotConfig() should be used instead.
using GPUTestExpectationsParserTest::bot_config;
};

TEST_F(GPUTestExpectationsParserTest, CommentOnly) {
const std::string text =
" \n"
Expand All @@ -45,37 +116,40 @@ TEST_F(GPUTestExpectationsParserTest, CommentOnly) {
parser.GetTestExpectation("some_test", bot_config()));
}

TEST_F(GPUTestExpectationsParserTest, ValidFullEntry) {
TEST_P(GPUTestExpectationsParserParamTest, ValidFullEntry) {
const std::string text =
"BUG12345 WIN7 RELEASE NVIDIA 0x0640 : MyTest = FAIL";
base::StringPrintf("BUG12345 %s RELEASE NVIDIA 0x0640 : MyTest = FAIL",
GetParam().version.name);

GPUTestExpectationsParser parser;
EXPECT_TRUE(parser.LoadTestExpectations(text));
EXPECT_EQ(0u, parser.GetErrorMessages().size());
EXPECT_EQ(GPUTestExpectationsParser::kGpuTestFail,
parser.GetTestExpectation("MyTest", bot_config()));
parser.GetTestExpectation("MyTest", GetBotConfig()));
}

TEST_F(GPUTestExpectationsParserTest, ValidPartialEntry) {
TEST_P(GPUTestExpectationsParserParamTest, ValidPartialEntry) {
const std::string text =
"BUG12345 WIN NVIDIA : MyTest = TIMEOUT";
base::StringPrintf("BUG12345 %s NVIDIA : MyTest = TIMEOUT",
GetParam().family.name);

GPUTestExpectationsParser parser;
EXPECT_TRUE(parser.LoadTestExpectations(text));
EXPECT_EQ(0u, parser.GetErrorMessages().size());
EXPECT_EQ(GPUTestExpectationsParser::kGpuTestTimeout,
parser.GetTestExpectation("MyTest", bot_config()));
parser.GetTestExpectation("MyTest", GetBotConfig()));
}

TEST_F(GPUTestExpectationsParserTest, ValidUnrelatedOsEntry) {
const std::string text =
"BUG12345 LEOPARD : MyTest = TIMEOUT";
TEST_P(GPUTestExpectationsParserParamTest, ValidUnrelatedOsEntry) {
const std::string text = base::StringPrintf(
"BUG12345 %s : MyTest = TIMEOUT",
GetUnrelatedOS(GetParam().version).name);

GPUTestExpectationsParser parser;
EXPECT_TRUE(parser.LoadTestExpectations(text));
EXPECT_EQ(0u, parser.GetErrorMessages().size());
EXPECT_EQ(GPUTestExpectationsParser::kGpuTestPass,
parser.GetTestExpectation("MyTest", bot_config()));
parser.GetTestExpectation("MyTest", GetBotConfig()));
}

TEST_F(GPUTestExpectationsParserTest, ValidUnrelatedTestEntry) {
Expand Down Expand Up @@ -107,9 +181,11 @@ TEST_F(GPUTestExpectationsParserTest, AllModifiers) {
parser.GetTestExpectation("MyTest", bot_config()));
}

TEST_F(GPUTestExpectationsParserTest, DuplicateModifiers) {
const std::string text =
"BUG12345 WIN7 WIN7 RELEASE NVIDIA 0x0640 : MyTest = FAIL";
TEST_P(GPUTestExpectationsParserParamTest, DuplicateModifiers) {
const std::string text = base::StringPrintf(
"BUG12345 %s %s RELEASE NVIDIA 0x0640 : MyTest = FAIL",
GetParam().version.name,
GetParam().version.name);

GPUTestExpectationsParser parser;
EXPECT_FALSE(parser.LoadTestExpectations(text));
Expand Down Expand Up @@ -160,9 +236,10 @@ TEST_F(GPUTestExpectationsParserTest, IllegalModifier) {
EXPECT_NE(0u, parser.GetErrorMessages().size());
}

TEST_F(GPUTestExpectationsParserTest, OsConflicts) {
const std::string text =
"BUG12345 XP WIN : MyTest = FAIL";
TEST_P(GPUTestExpectationsParserParamTest, OsConflicts) {
const std::string text = base::StringPrintf("BUG12345 %s %s : MyTest = FAIL",
GetParam().version.name,
GetParam().family.name);

GPUTestExpectationsParser parser;
EXPECT_FALSE(parser.LoadTestExpectations(text));
Expand Down Expand Up @@ -196,10 +273,12 @@ TEST_F(GPUTestExpectationsParserTest, MoreThanOneGpuDeviceID) {
EXPECT_NE(0u, parser.GetErrorMessages().size());
}

TEST_F(GPUTestExpectationsParserTest, MultipleEntriesConflicts) {
const std::string text =
"BUG12345 WIN7 RELEASE NVIDIA 0x0640 : MyTest = FAIL\n"
"BUG12345 WIN : MyTest = FAIL";
TEST_P(GPUTestExpectationsParserParamTest, MultipleEntriesConflicts) {
const std::string text = base::StringPrintf(
"BUG12345 %s RELEASE NVIDIA 0x0640 : MyTest = FAIL\n"
"BUG12345 %s : MyTest = FAIL",
GetParam().version.name,
GetParam().family.name);

GPUTestExpectationsParser parser;
EXPECT_FALSE(parser.LoadTestExpectations(text));
Expand Down Expand Up @@ -241,5 +320,9 @@ TEST_F(GPUTestExpectationsParserTest, StarMatching) {
parser.GetTestExpectation("OtherTest", bot_config()));
}

INSTANTIATE_TEST_CASE_P(GPUTestExpectationsParser,
GPUTestExpectationsParserParamTest,
::testing::ValuesIn(kOSVersionsWithFamily));

} // namespace gpu

0 comments on commit 3197ce8

Please sign in to comment.