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