aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2016-08-09 05:04:29 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-09 05:04:29 -0700
commitd5b9173fe869584f01f0e8c468ad0daf03fbc958 (patch)
treebf9d69e17d587b469d8459958d5ea7f68e62a6f8 /tests
parentfc3ea41cebb8272c3f683f9cf585ff780b18f09b (diff)
add flaky test option
One fuzzer generated pathops test fails everywhere except for one builder. Add a flaky state to the pathops test framework to handle this until I can investigate further. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221153005 Review-Url: https://codereview.chromium.org/2221153005
Diffstat (limited to 'tests')
-rw-r--r--tests/PathOpsExtendedTest.cpp48
-rw-r--r--tests/PathOpsExtendedTest.h2
-rw-r--r--tests/PathOpsOpTest.cpp3
3 files changed, 32 insertions, 21 deletions
diff --git a/tests/PathOpsExtendedTest.cpp b/tests/PathOpsExtendedTest.cpp
index 6ea67fe89f..a7ff885220 100644
--- a/tests/PathOpsExtendedTest.cpp
+++ b/tests/PathOpsExtendedTest.cpp
@@ -58,6 +58,23 @@ static const char* opSuffixes[] = {
"r",
};
+enum class ExpectSuccess {
+ kNo,
+ kYes,
+ kFlaky
+};
+
+enum class SkipAssert {
+ kNo,
+ kYes
+};
+
+enum class ExpectMatch {
+ kNo,
+ kYes,
+ kFlaky
+};
+
#if DEBUG_SHOW_TEST_NAME
static void showPathData(const SkPath& path) {
SkPath::RawIter iter(path);
@@ -333,11 +350,11 @@ SK_DECLARE_STATIC_MUTEX(compareDebugOut3);
static int comparePaths(skiatest::Reporter* reporter, const char* testName, const SkPath& one,
const SkPath& scaledOne, const SkPath& two, const SkPath& scaledTwo, SkBitmap& bitmap,
const SkPath& a, const SkPath& b, const SkPathOp shapeOp, const SkMatrix& scale,
- bool expectSuccess) {
+ ExpectMatch expectMatch) {
int errors2x2;
const int MAX_ERRORS = 8;
(void) pathsDrawTheSame(bitmap, scaledOne, scaledTwo, errors2x2);
- if (!expectSuccess) {
+ if (ExpectMatch::kNo == expectMatch) {
if (errors2x2 < MAX_ERRORS) {
REPORTER_ASSERT(reporter, 0);
}
@@ -346,7 +363,7 @@ static int comparePaths(skiatest::Reporter* reporter, const char* testName, cons
if (errors2x2 == 0) {
return 0;
}
- if (errors2x2 >= MAX_ERRORS) {
+ if (ExpectMatch::kYes == expectMatch && errors2x2 >= MAX_ERRORS) {
SkAutoMutexAcquire autoM(compareDebugOut3);
showPathOpPath(testName, one, two, a, b, scaledOne, scaledTwo, shapeOp, scale);
SkDebugf("\n/*");
@@ -452,21 +469,6 @@ bool testSimplify(SkPath& path, bool useXor, SkPath& out, PathOpsThreadState& st
return result == 0;
}
-enum class ExpectSuccess {
- kNo,
- kYes
-};
-
-enum class SkipAssert {
- kNo,
- kYes
-};
-
-enum class ExpectMatch {
- kNo,
- kYes
-};
-
static bool inner_simplify(skiatest::Reporter* reporter, const SkPath& path, const char* filename,
ExpectSuccess expectSuccess, SkipAssert skipAssert, ExpectMatch expectMatch) {
#if 0 && DEBUG_SHOW_TEST_NAME
@@ -494,7 +496,7 @@ static bool inner_simplify(skiatest::Reporter* reporter, const SkPath& path, con
REPORTER_ASSERT(reporter, 0);
return false;
}
- } else if (errors) {
+ } else if (ExpectMatch::kYes == expectMatch && errors) {
REPORTER_ASSERT(reporter, 0);
}
reporter->bumpTestCount();
@@ -574,7 +576,7 @@ static bool innerPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkP
scaledOut.addPath(out, scale);
scaledOut.setFillType(out.getFillType());
int result = comparePaths(reporter, testName, pathOut, scaledPathOut, out, scaledOut, bitmap,
- a, b, shapeOp, scale, ExpectMatch::kYes == expectMatch);
+ a, b, shapeOp, scale, expectMatch);
reporter->bumpTestCount();
return result == 0;
}
@@ -609,6 +611,12 @@ bool testPathOpFailSkipAssert(skiatest::Reporter* reporter, const SkPath& a, con
ExpectMatch::kNo);
}
+bool testPathOpFlakySkipAssert(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
+ const SkPathOp shapeOp, const char* testName) {
+ return innerPathOp(reporter, a, b, shapeOp, testName, ExpectSuccess::kFlaky, SkipAssert::kYes,
+ ExpectMatch::kFlaky);
+}
+
bool testPathOpFail(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
const SkPathOp shapeOp, const char* testName) {
#if DEBUG_SHOW_TEST_NAME
diff --git a/tests/PathOpsExtendedTest.h b/tests/PathOpsExtendedTest.h
index f6efbef040..8cf708b278 100644
--- a/tests/PathOpsExtendedTest.h
+++ b/tests/PathOpsExtendedTest.h
@@ -46,6 +46,8 @@ extern bool testPathOpFailCheck(skiatest::Reporter* reporter, const SkPath& a, c
const SkPathOp , const char* testName);
extern bool testPathOpFailSkipAssert(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
const SkPathOp , const char* testName);
+extern bool testPathOpFlakySkipAssert(skiatest::Reporter* reporter, const SkPath& a,
+ const SkPath& b, const SkPathOp , const char* testName);
extern bool testPathOpSkipAssert(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
const SkPathOp , const char* testName);
extern bool testSimplify(SkPath& path, bool useXor, SkPath& out, PathOpsThreadState& state,
diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp
index a4aab37c6d..aba4e86ce5 100644
--- a/tests/PathOpsOpTest.cpp
+++ b/tests/PathOpsOpTest.cpp
@@ -6925,7 +6925,8 @@ path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x
path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
SkPath path2(path);
- testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 0, filename);
+ // FIXME: fails on Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast, passes everywhere else
+ testPathOpFlakySkipAssert(reporter, path1, path2, (SkPathOp) 0, filename);
}
static void fuzz763_19(skiatest::Reporter* reporter, const char* filename) {