You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by va...@apache.org on 2023/02/17 07:27:00 UTC

[qpid-broker-j] branch main updated: QPID-8621 - [Broker-J] Add operation "resetStatistics" to Producer (#174)

This is an automated email from the ASF dual-hosted git repository.

vavrtom pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/main by this push:
     new 36770cdfcc QPID-8621 - [Broker-J] Add operation "resetStatistics" to Producer (#174)
36770cdfcc is described below

commit 36770cdfcc06aa06c676202be8584d7fe27a6edb
Author: Daniil Kirilyuk <da...@gmail.com>
AuthorDate: Fri Feb 17 08:26:55 2023 +0100

    QPID-8621 - [Broker-J] Add operation "resetStatistics" to Producer (#174)
---
 .../org/apache/qpid/server/model/Producer.java     |  7 +++--
 .../org/apache/qpid/server/model/ProducerImpl.java |  7 +++++
 .../server/session/AbstractAMQPSessionTest.java    | 33 +++++++++++++++++++++-
 .../server/{exchange => session}/ProducerTest.java |  3 +-
 4 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/Producer.java b/broker-core/src/main/java/org/apache/qpid/server/model/Producer.java
index 7235e6a14f..316d124086 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/Producer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/Producer.java
@@ -47,11 +47,14 @@ public interface Producer<X extends Producer<X>> extends ConfiguredObject<X>
     @DerivedAttribute(description = "Destination type (exchange or queue)")
     DestinationType getDestinationType();
 
-    @ManagedStatistic(statisticType = StatisticType.POINT_IN_TIME, units = StatisticUnit.MESSAGES)
+    @ManagedStatistic(statisticType = StatisticType.POINT_IN_TIME, units = StatisticUnit.MESSAGES, resettable = true)
     int getMessagesOut();
 
-    @ManagedStatistic(statisticType = StatisticType.POINT_IN_TIME, units = StatisticUnit.BYTES)
+    @ManagedStatistic(statisticType = StatisticType.POINT_IN_TIME, units = StatisticUnit.BYTES, resettable = true)
     long getBytesOut();
 
+    @ManagedOperation(description = "Resets producer statistics", changesConfiguredObjectState = true)
+    void resetStatistics();
+
     ListenableFuture<Void> deleteNoChecks();
 }
diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/ProducerImpl.java b/broker-core/src/main/java/org/apache/qpid/server/model/ProducerImpl.java
index 431b4e31d5..52e350f272 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/ProducerImpl.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/ProducerImpl.java
@@ -149,4 +149,11 @@ public class ProducerImpl<X extends Producer<X>>
     {
         return _bytesOut.get();
     }
+
+    @Override
+    public void resetStatistics()
+    {
+        _bytesOut.set(0);
+        _messagesOut.set(0);
+    }
 }
diff --git a/broker-core/src/test/java/org/apache/qpid/server/session/AbstractAMQPSessionTest.java b/broker-core/src/test/java/org/apache/qpid/server/session/AbstractAMQPSessionTest.java
index fb5f6a8da8..5e9c9e306c 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/session/AbstractAMQPSessionTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/session/AbstractAMQPSessionTest.java
@@ -41,6 +41,8 @@ import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.BrokerTestHelper;
 import org.apache.qpid.server.model.Connection;
 import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.model.Producer;
+import org.apache.qpid.server.model.PublishingLink;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.Session;
 import org.apache.qpid.server.security.auth.TestPrincipalUtils;
@@ -74,7 +76,6 @@ public class AbstractAMQPSessionTest extends UnitTestBase
         when(_connection.getContextValue(Long.class, Session.PRODUCER_AUTH_CACHE_TIMEOUT)).thenReturn(Session.PRODUCER_AUTH_CACHE_TIMEOUT_DEFAULT);
         when(_connection.getContextValue(Integer.class, Session.PRODUCER_AUTH_CACHE_SIZE)).thenReturn(Session.PRODUCER_AUTH_CACHE_SIZE_DEFAULT);
         mockAMQPSession = new MockAMQPSession(_connection, 123);
-
     }
 
     @AfterEach
@@ -154,6 +155,36 @@ public class AbstractAMQPSessionTest extends UnitTestBase
         assertEquals(0L, statisticsAfterReset.get("transactedMessagesOut"));
     }
 
+    @Test
+    public void producer() throws Exception
+    {
+        final PublishingLink link = mock(PublishingLink.class);
+        when(link.getName()).thenReturn("test-link");
+        when(link.getType()).thenReturn(PublishingLink.TYPE_LINK);
+
+        final Queue<?> queue = mock(Queue.class);
+
+        final Producer<?> producer = mockAMQPSession.addProducer(link, queue);
+
+        Map<String, Object> statistics = producer.getStatistics();
+
+        assertEquals(0, statistics.get("messagesOut"));
+        assertEquals(0L, statistics.get("bytesOut"));
+
+        producer.registerMessageDelivered(100L);
+
+        statistics = producer.getStatistics();
+
+        assertEquals(1, statistics.get("messagesOut"));
+        assertEquals(100L, statistics.get("bytesOut"));
+
+        producer.resetStatistics();
+        statistics = producer.getStatistics();
+
+        assertEquals(0, statistics.get("messagesOut"));
+        assertEquals(0L, statistics.get("bytesOut"));
+    }
+
     private static class MockAMQPSession extends AbstractAMQPSession
     {
 
diff --git a/broker-core/src/test/java/org/apache/qpid/server/exchange/ProducerTest.java b/broker-core/src/test/java/org/apache/qpid/server/session/ProducerTest.java
similarity index 98%
rename from broker-core/src/test/java/org/apache/qpid/server/exchange/ProducerTest.java
rename to broker-core/src/test/java/org/apache/qpid/server/session/ProducerTest.java
index 0635bda606..adc5829314 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/exchange/ProducerTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/session/ProducerTest.java
@@ -18,7 +18,7 @@
  * under the License.
  *
  */
-package org.apache.qpid.server.exchange;
+package org.apache.qpid.server.session;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -31,6 +31,7 @@ import java.util.UUID;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import org.apache.qpid.server.exchange.ExchangeDefaults;
 import org.apache.qpid.server.message.MessageSender;
 import org.apache.qpid.server.model.BrokerTestHelper;
 import org.apache.qpid.server.model.Exchange;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org