[testng] 264/355: Fix #425 Wrong invocation order with lastTimeOnly
Eugene Zhukov
eugene-guest at moszumanska.debian.org
Tue Aug 18 10:20:13 UTC 2015
This is an automated email from the git hooks/post-receive script.
eugene-guest pushed a commit to annotated tag OpenBSD
in repository testng.
commit ce11604bda708dbd2c42435e77027d5c360c9fa9
Author: Julien Herr <julien.herr at alcatel-lucent.com>
Date: Wed May 6 23:49:42 2015 +0200
Fix #425 Wrong invocation order with lastTimeOnly
---
src/main/java/org/testng/ITestNGMethod.java | 8 ++++++++
src/main/java/org/testng/internal/BaseTestMethod.java | 13 +++++++++++--
src/main/java/org/testng/internal/ClonedMethod.java | 5 +++++
src/main/java/org/testng/internal/Invoker.java | 6 +++---
src/main/java/org/testng/internal/TestNGMethod.java | 11 +++++++++++
src/test/java/org/testng/internal/MethodInstanceTest.java | 5 +++++
6 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/testng/ITestNGMethod.java b/src/main/java/org/testng/ITestNGMethod.java
index b91426d..f0db926 100755
--- a/src/main/java/org/testng/ITestNGMethod.java
+++ b/src/main/java/org/testng/ITestNGMethod.java
@@ -165,6 +165,14 @@ public interface ITestNGMethod extends Comparable, Serializable, Cloneable {
void setInvocationCount(int count);
/**
+ * @return the total number of thimes this method needs to be invoked, including possible
+ * clones of this method - this is relevant when threadPoolSize is bigger than 1
+ * where each clone of this method is only invoked once individually, i.e.
+ * {@link org.testng.ITestNGMethod#getInvocationCount()} would always return 1.
+ */
+ int getTotalInvocationCount();
+
+ /**
* @return the success percentage for this method (between 0 and 100).
*/
int getSuccessPercentage();
diff --git a/src/main/java/org/testng/internal/BaseTestMethod.java b/src/main/java/org/testng/internal/BaseTestMethod.java
index e0ded14..39b635d 100755
--- a/src/main/java/org/testng/internal/BaseTestMethod.java
+++ b/src/main/java/org/testng/internal/BaseTestMethod.java
@@ -153,8 +153,8 @@ public abstract class BaseTestMethod implements ITestNGMethod {
int result = -2;
Class<?> thisClass = getRealClass();
Class<?> otherClass = ((ITestNGMethod) o).getRealClass();
- if (this == o) {
- result = 0;
+ if (this == o) {
+ result = 0;
} else if (thisClass.isAssignableFrom(otherClass)) {
result = -1;
} else if (otherClass.isAssignableFrom(thisClass)) {
@@ -347,6 +347,15 @@ public abstract class BaseTestMethod implements ITestNGMethod {
}
/**
+ * {@inheritDoc}
+ * @return the number of times this method or one of its clones must be invoked.
+ */
+ @Override
+ public int getTotalInvocationCount() {
+ return 1;
+ }
+
+ /**
* {@inheritDoc} Default value for successPercentage.
*/
@Override
diff --git a/src/main/java/org/testng/internal/ClonedMethod.java b/src/main/java/org/testng/internal/ClonedMethod.java
index ccdcc6a..29b7265 100755
--- a/src/main/java/org/testng/internal/ClonedMethod.java
+++ b/src/main/java/org/testng/internal/ClonedMethod.java
@@ -105,6 +105,11 @@ public class ClonedMethod implements ITestNGMethod {
}
@Override
+ public int getTotalInvocationCount() {
+ return 1;
+ }
+
+ @Override
public long getInvocationTimeOut() {
return m_method.getInvocationTimeOut();
}
diff --git a/src/main/java/org/testng/internal/Invoker.java b/src/main/java/org/testng/internal/Invoker.java
index 8a15ae7..f699c5a 100644
--- a/src/main/java/org/testng/internal/Invoker.java
+++ b/src/main/java/org/testng/internal/Invoker.java
@@ -796,12 +796,12 @@ public class Invoker implements IInvoker {
// If we have parameters, set the boolean if we are about to run
// the last invocation
if (tm.getParameterInvocationCount() > 0) {
- isLast = current == tm.getParameterInvocationCount();
+ isLast = current == tm.getParameterInvocationCount() * tm.getTotalInvocationCount();
}
// If we have invocationCount > 1, set the boolean if we are about to
// run the last invocation
- else if (tm.getInvocationCount() > 1) {
- isLast = current == tm.getInvocationCount();
+ else if (tm.getTotalInvocationCount() > 1) {
+ isLast = current == tm.getTotalInvocationCount();
}
if (! cm.isLastTimeOnly() || (cm.isLastTimeOnly() && isLast)) {
result.add(m);
diff --git a/src/main/java/org/testng/internal/TestNGMethod.java b/src/main/java/org/testng/internal/TestNGMethod.java
index d364696..7e86ef9 100755
--- a/src/main/java/org/testng/internal/TestNGMethod.java
+++ b/src/main/java/org/testng/internal/TestNGMethod.java
@@ -29,6 +29,7 @@ public class TestNGMethod extends BaseTestMethod implements Serializable {
private static final long serialVersionUID = -1742868891986775307L;
private int m_threadPoolSize = 0;
private int m_invocationCount = 1;
+ private int m_totalInvocationCount = m_invocationCount;
private int m_successPercentage = 100;
/**
@@ -62,6 +63,14 @@ public class TestNGMethod extends BaseTestMethod implements Serializable {
* {@inheritDoc}
*/
@Override
+ public int getTotalInvocationCount() {
+ return m_totalInvocationCount;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public int getSuccessPercentage() {
return m_successPercentage;
}
@@ -96,6 +105,7 @@ public class TestNGMethod extends BaseTestMethod implements Serializable {
m_successPercentage = testAnnotation.getSuccessPercentage();
setInvocationCount(testAnnotation.getInvocationCount());
+ m_totalInvocationCount = testAnnotation.getInvocationCount();
setThreadPoolSize(testAnnotation.getThreadPoolSize());
setAlwaysRun(testAnnotation.getAlwaysRun());
setDescription(findDescription(testAnnotation, xmlTest));
@@ -185,6 +195,7 @@ public class TestNGMethod extends BaseTestMethod implements Serializable {
clone.setEnabled(getEnabled());
clone.setParameterInvocationCount(getParameterInvocationCount());
clone.setInvocationCount(getInvocationCount());
+ clone.m_totalInvocationCount = getTotalInvocationCount();
clone.m_successPercentage = getSuccessPercentage();
clone.setTimeOut(getTimeOut());
clone.setRetryAnalyzer(getRetryAnalyzer());
diff --git a/src/test/java/org/testng/internal/MethodInstanceTest.java b/src/test/java/org/testng/internal/MethodInstanceTest.java
index 36bf2e1..f3c81dc 100644
--- a/src/test/java/org/testng/internal/MethodInstanceTest.java
+++ b/src/test/java/org/testng/internal/MethodInstanceTest.java
@@ -406,6 +406,11 @@ public class MethodInstanceTest {
}
@Override
+ public int getTotalInvocationCount() {
+ return 0;
+ }
+
+ @Override
public void setInvocationCount(int count) {
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/testng.git
More information about the pkg-java-commits
mailing list