Edit

kc3-lang/angle/src/tests/test_expectations/GPUTestExpectationsParser.h

Branch :

  • Show log

    Commit

  • Author : Courtney Goeltzenleuchter
    Date : 2019-10-24 17:53:24
    Hash : 2c703b1a
    Message : Print the testConfig in dEQP tests. This will help debug failures on the bots that could be caused by the wrong test config being used. As a side effect this changes the condition array of GPUTestConfig to use an angle::BitSetT BUG=chromium:997351 Change-Id: If742cd3d416694d5df6c3e6c1d722a24f487a960 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1879585 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>

  • src/tests/test_expectations/GPUTestExpectationsParser.h
  • //
    // Copyright 2019 The ANGLE Project 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 TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
    #define TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_
    
    #include <stddef.h>
    #include <stdint.h>
    
    #include <string>
    #include <vector>
    
    namespace angle
    {
    
    struct GPUTestConfig;
    
    class 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 GPUTestConfig &config, const std::string &data);
        bool loadTestExpectationsFromFile(const GPUTestConfig &config, const std::string &path);
    
        // Query error messages from the last LoadTestExpectations() call.
        const std::vector<std::string> &getErrorMessages() const;
    
        // Query error messages from any expectations that weren't used before being queried.
        std::vector<std::string> getUnusedExpectationsMessages() const;
    
        // Get the test expectation of a given test on a given bot.
        int32_t getTestExpectation(const std::string &testName);
    
      private:
        struct GPUTestExpectationEntry
        {
            GPUTestExpectationEntry();
    
            std::string testName;
            int32_t testExpectation;
            size_t lineNumber;
            bool used;
        };
    
        // Parse a line of text. If we have a valid entry, save it; otherwise,
        // generate error messages.
        bool parseLine(const GPUTestConfig &config, const std::string &lineData, size_t lineNumber);
    
        // Check a the condition assigned to a particular token.
        bool checkTokenCondition(const GPUTestConfig &config,
                                 bool &err,
                                 int32_t token,
                                 size_t lineNumber);
    
        // Check if two entries' config overlap with each other. May generate an
        // error message.
        bool detectConflictsBetweenEntries();
    
        // Query a list of any expectations that were's used before being queried.
        std::vector<GPUTestExpectationEntry> getUnusedExpectations() const;
    
        // Save an error message, which can be queried later.
        void pushErrorMessage(const std::string &message, size_t lineNumber);
        void pushErrorMessage(const std::string &message,
                              size_t entry1LineNumber,
                              size_t entry2LineNumber);
    
        std::vector<GPUTestExpectationEntry> mEntries;
        std::vector<std::string> mErrorMessages;
    };
    
    const char *GetConditionName(uint32_t condition);
    
    }  // namespace angle
    
    #endif  // TEST_EXPECTATIONS_GPU_TEST_EXPECTATIONS_PARSER_H_