1 package org.opendaylight.controller.sal.dom.broker.impl;
3 import java.util.concurrent.atomic.AtomicLong;
5 import org.opendaylight.controller.md.sal.common.api.data.DataModification;
6 import org.opendaylight.controller.sal.core.api.data.DataStore;
7 import org.opendaylight.yangtools.concepts.Delegator;
8 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
9 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
11 public class DataStoreStatsWrapper implements Delegator<DataStore>, DataStore {
13 private final DataStore delegate;
15 private AtomicLong cfgReadCount = new AtomicLong();
16 private AtomicLong cfgReadTimeTotal = new AtomicLong();
18 private AtomicLong operReadCount = new AtomicLong();
19 private AtomicLong operReadTimeTotal = new AtomicLong();
21 private AtomicLong requestCommitCount = new AtomicLong();
22 private AtomicLong requestCommitTimeTotal = new AtomicLong();
24 public DataStoreStatsWrapper(DataStore store) {
29 public DataStore getDelegate() {
34 public CompositeNode readConfigurationData(InstanceIdentifier path) {
35 cfgReadCount.incrementAndGet();
36 final long startTime = System.nanoTime();
38 return delegate.readConfigurationData(path);
40 final long endTime = System.nanoTime();
41 final long runTime = endTime - startTime;
42 cfgReadTimeTotal.addAndGet(runTime);
47 public CompositeNode readOperationalData(InstanceIdentifier path) {
48 operReadCount.incrementAndGet();
49 final long startTime = System.nanoTime();
51 return delegate.readOperationalData(path);
53 final long endTime = System.nanoTime();
54 final long runTime = endTime - startTime;
55 operReadTimeTotal.addAndGet(runTime);
59 public DataCommitTransaction<InstanceIdentifier, CompositeNode> requestCommit(
60 DataModification<InstanceIdentifier, CompositeNode> modification) {
61 requestCommitCount.incrementAndGet();
62 final long startTime = System.nanoTime();
64 return delegate.requestCommit(modification);
66 final long endTime = System.nanoTime();
67 final long runTime = endTime - startTime;
68 requestCommitTimeTotal.addAndGet(runTime);
73 public boolean containsConfigurationPath(InstanceIdentifier path) {
74 return delegate.containsConfigurationPath(path);
77 public Iterable<InstanceIdentifier> getStoredConfigurationPaths() {
78 return delegate.getStoredConfigurationPaths();
81 public Iterable<InstanceIdentifier> getStoredOperationalPaths() {
82 return delegate.getStoredOperationalPaths();
85 public boolean containsOperationalPath(InstanceIdentifier path) {
86 return delegate.containsOperationalPath(path);
89 public final long getConfigurationReadCount() {
90 return cfgReadCount.get();
93 public final long getOperationalReadCount() {
94 return operReadCount.get();
97 public final long getRequestCommitCount() {
98 return requestCommitCount.get();
101 public final double getConfigurationReadTotalTime() {
102 return cfgReadTimeTotal.get() / 1000.0d;
105 public final double getOperationalReadTotalTime() {
106 return operReadTimeTotal.get() / 1000.0d;
109 public final double getRequestCommitTotalTime() {
110 return requestCommitTimeTotal.get() / 1000.0d;
113 public final double getConfigurationReadAverageTime() {
114 long readCount = cfgReadCount.get();
118 return getConfigurationReadTotalTime() / readCount;
121 public final double getOperationalReadAverageTime() {
122 long readCount = operReadCount.get();
126 return getOperationalReadTotalTime() / readCount;
129 public final double getRequestCommitAverageTime() {
130 long count = requestCommitCount.get();
134 return getRequestCommitTotalTime() / count;