Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 50C59200B80 for ; Wed, 14 Sep 2016 14:47:23 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 4F95D160AB4; Wed, 14 Sep 2016 12:47:23 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4D748160AD4 for ; Wed, 14 Sep 2016 14:47:22 +0200 (CEST) Received: (qmail 76915 invoked by uid 500); 14 Sep 2016 12:47:21 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 76902 invoked by uid 99); 14 Sep 2016 12:47:21 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Sep 2016 12:47:21 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 54134E03E2; Wed, 14 Sep 2016 12:47:20 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.apache.org Date: Wed, 14 Sep 2016 12:47:20 -0000 Message-Id: <545135e3e6164370b003446c1450661c@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] ignite git commit: Usability and safety improvements. archived-at: Wed, 14 Sep 2016 12:47:23 -0000 Repository: ignite Updated Branches: refs/heads/ignite-3661 71fbcad8a -> 36c817038 Usability and safety improvements. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bca08147 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bca08147 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bca08147 Branch: refs/heads/ignite-3661 Commit: bca08147e22f39ccceda8199c4b66d11d7d648e6 Parents: 71fbcad Author: vozerov-gridgain Authored: Wed Sep 14 15:44:22 2016 +0300 Committer: vozerov-gridgain Committed: Wed Sep 14 15:44:22 2016 +0300 ---------------------------------------------------------------------- .../ignite/testframework/IgniteTestSuite.java | 63 +++++++++++++++++++- .../testframework/junits/GridAbstractTest.java | 22 ++++++- .../apache/ignite/testsuites/IgniteIgnore.java | 9 ++- .../internal/websession/WebSessionSelfTest.java | 2 +- .../WebSessionTransactionalSelfTest.java | 12 ++-- 5 files changed, 95 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/bca08147/modules/core/src/test/java/org/apache/ignite/testframework/IgniteTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/IgniteTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testframework/IgniteTestSuite.java index e2802aa..73610c2 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/IgniteTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/IgniteTestSuite.java @@ -20,6 +20,8 @@ package org.apache.ignite.testframework; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; +import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.testframework.junits.GridAbstractTest; import org.apache.ignite.testsuites.IgniteIgnore; import org.jetbrains.annotations.Nullable; import org.junit.internal.MethodSorter; @@ -123,6 +125,7 @@ public class IgniteTestSuite extends TestSuite { for(List names = new ArrayList<>(); Test.class.isAssignableFrom(superCls); superCls = superCls.getSuperclass()) { + Method[] methods = MethodSorter.getDeclaredMethods(superCls); for (Method each : methods) { @@ -159,10 +162,38 @@ public class IgniteTestSuite extends TestSuite { names.add(name); - if (m.isAnnotationPresent(IgniteIgnore.class) == ignoredOnly) { - addTest(createTest(theClass, name)); + boolean hasIgnore = m.isAnnotationPresent(IgniteIgnore.class); + + if (ignoredOnly) { + if (hasIgnore) { + IgniteIgnore ignore = m.getAnnotation(IgniteIgnore.class); + + String ticket = ignore.jira(); + + if (F.isEmpty(ticket)) + throw new IllegalArgumentException("JIRA ticket is not set for ignored test [class=" + + theClass.getName() + ", method=" + name + ']'); + + Test test = createTest(theClass, name); + + if (ignore.forceFailure()) { + if (test instanceof GridAbstractTest) + ((GridAbstractTest)test).forceFailure(ignore.jira()); + else + test = new ForcedFailure(name, ignore.jira()); + } + + addTest(test); + + return true; + } + } + else { + if (!hasIgnore) { + addTest(createTest(theClass, name)); - return true; + return true; + } } return false; @@ -189,4 +220,30 @@ public class IgniteTestSuite extends TestSuite { private static boolean isPublicTestMethod(Method m) { return isTestMethod(m) && Modifier.isPublic(m.getModifiers()); } + + /** + * Test case simulating failure. + */ + private static class ForcedFailure extends TestCase { + /** Message. */ + private final String msg; + + /** + * Constructor. + * + * @param name Name. + * @param msg Message. + */ + private ForcedFailure(String name, String msg) { + super(name); + + this.msg = msg; + } + + /** {@inheritDoc} */ + @Override protected void runTest() { + fail("Forced failure: " + msg + " (extend " + GridAbstractTest.class.getSimpleName() + + " for better output)."); + } + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bca08147/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java index 3910ce4..8d6fd07 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java @@ -155,6 +155,12 @@ public abstract class GridAbstractTest extends TestCase { /** Starting grid name. */ protected static final ThreadLocal startingGrid = new ThreadLocal<>(); + /** Force failure flag. */ + private boolean forceFailure; + + /** Force failure message. */ + private String forceFailureMsg; + /** * */ @@ -1753,11 +1759,25 @@ public abstract class GridAbstractTest extends TestCase { } /** + * Force test failure. + * + * @param msg Message. + */ + public void forceFailure(@Nullable String msg) { + forceFailure = true; + + forceFailureMsg = msg; + } + + /** * @throws Throwable If failed. */ @SuppressWarnings({"ProhibitedExceptionDeclared"}) private void runTestInternal() throws Throwable { - super.runTest(); + if (forceFailure) + fail("Forced failure: " + forceFailureMsg); + else + super.runTest(); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bca08147/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgnore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgnore.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgnore.java index ac9a885..b98202e 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgnore.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgnore.java @@ -29,7 +29,12 @@ import java.lang.annotation.Target; @Target({ElementType.METHOD, ElementType.TYPE}) public @interface IgniteIgnore { /** - * The optional reason why the test is ignored. + * JIRA ticket URL for this failure. */ - String value() default ""; + String jira(); + + /** + * Whether tests should be failed immediately. Useful when test hangs or consumes a lot of time. + */ + boolean forceFailure() default false; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bca08147/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java index 5138e3a..1c3d23c 100644 --- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java +++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java @@ -89,7 +89,7 @@ public class WebSessionSelfTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ - @IgniteIgnore("https://issues.apache.org/jira/browse/IGNITE-3663") + @IgniteIgnore(jira = "https://issues.apache.org/jira/browse/IGNITE-3663") public void testSessionRenewalDuringLogin() throws Exception { testSessionRenewalDuringLogin("/modules/core/src/test/config/websession/example-cache.xml"); } http://git-wip-us.apache.org/repos/asf/ignite/blob/bca08147/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionTransactionalSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionTransactionalSelfTest.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionTransactionalSelfTest.java index 7a9179b..80fa445 100644 --- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionTransactionalSelfTest.java +++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionTransactionalSelfTest.java @@ -29,20 +29,20 @@ public class WebSessionTransactionalSelfTest extends WebSessionSelfTest { } /** {@inheritDoc} */ - @IgniteIgnore("https://issues.apache.org/jira/browse/IGNITE-810") + @IgniteIgnore(jira = "https://issues.apache.org/jira/browse/IGNITE-810", forceFailure = true) @Override public void testRestarts() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-810"); + // No-op. } /** {@inheritDoc} */ - @IgniteIgnore("https://issues.apache.org/jira/browse/IGNITE-810") + @IgniteIgnore(jira = "https://issues.apache.org/jira/browse/IGNITE-810", forceFailure = true) @Override public void testInvalidatedSession() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-810"); + // No-op. } /** {@inheritDoc} */ - @IgniteIgnore("https://issues.apache.org/jira/browse/IGNITE-810") + @IgniteIgnore(jira = "https://issues.apache.org/jira/browse/IGNITE-810", forceFailure = true) @Override public void testClientReconnectRequest() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-810"); + // No-op. } }