Hash :
4fb29948
Author :
Date :
2020-02-12T13:48:43
Split up EGLContextCompatibilityTest. Instead of attempting to run numConfigs^2 test permutations in a single test we now split up each config into its own test. Each permutation also gets a unique name based on the configs it is testing. Because there were so many tests on some back-ends (e.g. D3D11) this CL adds a way to hard limit the number of test permutations by discarding random tests to reach a specified maximum per back-end. Uses the GoogleTest "RegisterTests" API instead of using the GTEST macros. See online GTest docs for more info. This will allow more easily supporting test timeouts when running batches of tests multi-process. As a side effect we no longer need to restrict this test to Release builds or ignore some renderers. Bug: angleproject:4449 Change-Id: Ia7991e2a3906175413b77a876432061da527d03b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050812 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
//
// Copyright 2013 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.
//
#include "gtest/gtest.h"
#include "test_utils/runner/TestSuite.h"
void ANGLEProcessTestArgs(int *argc, char *argv[]);
// Register* functions handle setting up special tests that need complex parameterization.
// GoogleTest relies heavily on static initialization to register test functions. This can
// cause all sorts of issues if the right variables aren't initialized in the right order.
// This register function needs to be called explicitly after static initialization and
// before the test launcher starts. This is a safer and generally better way to initialize
// tests. It's also more similar to how the dEQP Test harness works. In the future we should
// likely specialize more register functions more like dEQP instead of relying on static init.
void RegisterContextCompatibilityTests();
int main(int argc, char **argv)
{
angle::TestSuite testSuite(&argc, argv);
ANGLEProcessTestArgs(&argc, argv);
RegisterContextCompatibilityTests();
return testSuite.run();
}