| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_ |
| #define GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "base/files/file_path.h" |
| #include "gpu/config/gpu_test_config.h" |
| #include "gpu/gpu_export.h" |
| |
| namespace gpu { |
| |
| class GPU_EXPORT GPUTestExpectationsParser { |
| public: |
| enum GPUTestExpectation { |
| kGpuTestPass = 1 << 0, |
| kGpuTestFail = 1 << 1, |
| kGpuTestFlaky = 1 << 2, |
| kGpuTestTimeout = 1 << 3, |
| kGpuTestSkip = 1 << 4, |
| }; |
| |
| GPUTestExpectationsParser(); |
| ~GPUTestExpectationsParser(); |
| |
| // Parse the text expectations, and if no error is encountered, |
| // save all the entries. Otherwise, generate error messages. |
| // Return true if parsing succeeds. |
| bool LoadTestExpectations(const std::string& data); |
| bool LoadTestExpectations(const base::FilePath& path); |
| |
| // Query error messages from the last LoadTestExpectations() call. |
| const std::vector<std::string>& GetErrorMessages() const; |
| |
| // Get the test expectation of a given test on a given bot. |
| int32 GetTestExpectation(const std::string& test_name, |
| const GPUTestBotConfig& bot_config) const; |
| |
| // Parse a list of config modifiers. If we have a valid entry with no |
| // conflicts, | config | stores it, and the function returns true. |
| bool ParseConfig(const std::string& config_data, GPUTestConfig* config); |
| |
| private: |
| struct GPUTestExpectationEntry { |
| GPUTestExpectationEntry(); |
| |
| std::string test_name; |
| GPUTestConfig test_config; |
| int32 test_expectation; |
| size_t line_number; |
| }; |
| |
| // Parse a line of text. If we have a valid entry, save it; otherwise, |
| // generate error messages. |
| bool ParseLine(const std::string& line_data, size_t line_number); |
| |
| // Update OS/GPUVendor/BuildType modifiers. May generate an error message. |
| bool UpdateTestConfig( |
| GPUTestConfig* config, int32 token, size_t line_number); |
| |
| // Update GPUDeviceID modifier. May generate an error message. |
| bool UpdateTestConfig(GPUTestConfig* config, |
| const std::string & gpu_device_id, |
| size_t line_number); |
| |
| // Check if two entries' config overlap with each other. May generate an |
| // error message. |
| bool DetectConflictsBetweenEntries(); |
| |
| // Save an error message, which can be queried later. |
| void PushErrorMessage(const std::string& message, size_t line_number); |
| void PushErrorMessage(const std::string& message, |
| size_t entry1_line_number, |
| size_t entry2_line_number); |
| |
| std::vector<GPUTestExpectationEntry> entries_; |
| std::vector<std::string> error_messages_; |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_CONFIG_GPU_TEST_EXPECTATIONS_PARSER_H_ |
| |