Hash :
2c703b1a
Author :
Date :
2019-10-24T17:53:24
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>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
//
// 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_