You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/03/09 22:28:06 UTC

[1/2] activemq-artemis git commit: ARTEMIS-827 AMQP test client validator classes not thread safe

Repository: activemq-artemis
Updated Branches:
  refs/heads/master 2b7807f7e -> 0b1e48a7f


ARTEMIS-827 AMQP test client validator classes not thread safe


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/59de5ed8
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/59de5ed8
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/59de5ed8

Branch: refs/heads/master
Commit: 59de5ed8a4201a50191dd2c3d9d3371165a15167
Parents: 2b7807f
Author: Francesco Nigro <ni...@gmail.com>
Authored: Thu Oct 27 15:50:24 2016 +0200
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 9 17:27:50 2017 -0500

----------------------------------------------------------------------
 .../amqp/client/AmqpFrameValidator.java         | 37 ++++++++++----------
 .../transport/amqp/client/AmqpValidator.java    | 36 +++++++++----------
 2 files changed, 35 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/59de5ed8/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpFrameValidator.java
----------------------------------------------------------------------
diff --git a/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpFrameValidator.java b/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpFrameValidator.java
index 4796110..dec8529 100644
--- a/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpFrameValidator.java
+++ b/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpFrameValidator.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.transport.amqp.client;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.qpid.proton.amqp.Binary;
 import org.apache.qpid.proton.amqp.transport.Attach;
 import org.apache.qpid.proton.amqp.transport.Begin;
@@ -29,12 +31,11 @@ import org.apache.qpid.proton.amqp.transport.Transfer;
 
 /**
  * Abstract base for a validation hook that is used in tests to check
- * the state of a remote resource after a variety of lifecycle events.
+ * the values of incoming or outgoing AMQP frames.
  */
 public class AmqpFrameValidator {
 
-   private boolean valid = true;
-   private String errorMessage;
+   private AtomicReference<String> errorMessage = new AtomicReference<>();
 
    public void inspectOpen(Open open, Binary encoded) {
 
@@ -73,31 +74,29 @@ public class AmqpFrameValidator {
    }
 
    public boolean isValid() {
-      return valid;
-   }
-
-   protected void setValid(boolean valid) {
-      this.valid = valid;
+      return errorMessage.get() != null;
    }
 
-   public String getErrorMessage() {
-      return errorMessage;
+   public final void clearErrorMessage() {
+      errorMessage.set(null);
    }
 
-   protected void setErrorMessage(String errorMessage) {
-      this.errorMessage = errorMessage;
+   public final String getErrorMessage() {
+      return errorMessage.get();
    }
 
-   protected void markAsInvalid(String errorMessage) {
-      if (valid) {
-         setValid(false);
-         setErrorMessage(errorMessage);
+   protected final boolean markAsInvalid(String message) {
+      if (message == null) {
+         throw new NullPointerException("Provided error message cannot be null!");
       }
+
+      return errorMessage.compareAndSet(null, message);
    }
 
-   public void assertValid() {
-      if (!isValid()) {
-         throw new AssertionError(errorMessage);
+   public final void assertValid() {
+      final String assertionErrorMessage = errorMessage.get();
+      if (assertionErrorMessage != null) {
+         throw new AssertionError(assertionErrorMessage);
       }
    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/59de5ed8/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpValidator.java
----------------------------------------------------------------------
diff --git a/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpValidator.java b/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpValidator.java
index eca7676..236dc60 100644
--- a/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpValidator.java
+++ b/tests/artemis-test-support/src/main/java/org/apache/activemq/transport/amqp/client/AmqpValidator.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.transport.amqp.client;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.qpid.proton.engine.Connection;
 import org.apache.qpid.proton.engine.Delivery;
 import org.apache.qpid.proton.engine.Receiver;
@@ -28,8 +30,7 @@ import org.apache.qpid.proton.engine.Session;
  */
 public class AmqpValidator {
 
-   private boolean valid = true;
-   private String errorMessage;
+   private AtomicReference<String> errorMessage = new AtomicReference<>();
 
    public void inspectOpenedResource(Connection connection) {
 
@@ -76,32 +77,29 @@ public class AmqpValidator {
    }
 
    public boolean isValid() {
-      return valid;
-   }
-
-   protected void setValid(boolean valid) {
-      this.valid = valid;
+      return this.errorMessage.get() == null;
    }
 
-   public String getErrorMessage() {
-      return errorMessage;
+   public final void clearErrorMessage() {
+      errorMessage.set(null);
    }
 
-   protected void setErrorMessage(String errorMessage) {
-      this.errorMessage = errorMessage;
+   public final String getErrorMessage() {
+      return errorMessage.get();
    }
 
-   protected void markAsInvalid(String errorMessage) {
-      if (valid) {
-         setValid(false);
-         setErrorMessage(errorMessage);
+   protected final boolean markAsInvalid(String message) {
+      if (message == null) {
+         throw new NullPointerException("Provided error message cannot be null!");
       }
+
+      return errorMessage.compareAndSet(null, message);
    }
 
-   public void assertValid() {
-      if (!isValid()) {
-         throw new AssertionError(errorMessage);
+   public final void assertValid() {
+      final String assertionErrorMessage = errorMessage.get();
+      if (assertionErrorMessage != null) {
+         throw new AssertionError(assertionErrorMessage);
       }
    }
-
 }


[2/2] activemq-artemis git commit: This closes #869

Posted by cl...@apache.org.
This closes #869


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/0b1e48a7
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/0b1e48a7
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/0b1e48a7

Branch: refs/heads/master
Commit: 0b1e48a7f4b61cc3b32b33a347ec10e5b815bbaf
Parents: 2b7807f 59de5ed
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Mar 9 17:27:51 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 9 17:27:51 2017 -0500

----------------------------------------------------------------------
 .../amqp/client/AmqpFrameValidator.java         | 37 ++++++++++----------
 .../transport/amqp/client/AmqpValidator.java    | 36 +++++++++----------
 2 files changed, 35 insertions(+), 38 deletions(-)
----------------------------------------------------------------------