2 * ============LICENSE_START===================================================
3 * SPARKY (AAI UI service)
4 * ============================================================================
5 * Copyright © 2017 AT&T Intellectual Property.
6 * Copyright © 2017 Amdocs
8 * ============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=====================================================
22 * ECOMP and OpenECOMP are trademarks
23 * and service marks of AT&T Intellectual Property.
25 package org.onap.aai.sparky.sync;
27 import java.util.concurrent.atomic.AtomicInteger;
29 import org.onap.aai.sparky.analytics.AveragingRingBuffer;
30 import org.onap.aai.sparky.sync.config.NetworkStatisticsConfig;
32 public class TransactionRateMonitor {
34 private AtomicInteger numTransactions;
35 private AveragingRingBuffer responseTimeTracker;
36 private long startTimeInMs;
39 * Instantiates a new transaction rate controller.
41 * @param config the config
43 public TransactionRateMonitor(int numWorkerThreads, NetworkStatisticsConfig config) {
45 this.responseTimeTracker = new AveragingRingBuffer(
46 config.getNumSamplesPerThreadForRunningAverage() * numWorkerThreads);
47 this.startTimeInMs = System.currentTimeMillis();
48 this.numTransactions = new AtomicInteger(0);
52 * Track response time.
54 * @param responseTimeInMs the response time in ms
56 public void trackResponseTime(long responseTimeInMs) {
57 this.numTransactions.incrementAndGet();
58 responseTimeTracker.addSample(responseTimeInMs);
61 public long getAvg() {
62 return responseTimeTracker.getAvg();
65 public double getCurrentTps() {
66 if (numTransactions.get() > 0) {
67 double timeDelta = System.currentTimeMillis() - startTimeInMs;
68 double numTxns = numTransactions.get();
69 return (numTxns / timeDelta) * 1000.0;