Added support for data store type (OPERATIONAL or CONFIG or BOTH)
[controller.git] / benchmark / dsbenchmark / src / main / java / org / opendaylight / dsbenchmark / DatastoreAbstractWriter.java
index 93a4876340bf85e5e7fd6b9659aada5865144861..db17cdb7661a09a890bf2ec4e54d34574cc97a43 100644 (file)
@@ -8,24 +8,37 @@
 
 package org.opendaylight.dsbenchmark;
 
+import java.util.Random;
+
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.dsbenchmark.rev150105.StartTestInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.dsbenchmark.rev150105.StartTestInput.DataStore;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public abstract class DatastoreAbstractWriter {
+    private static final Logger LOG = LoggerFactory.getLogger(DatastoreAbstractWriter.class);
+
     protected final int outerListElem;
     protected final int innerListElem;
     protected final long writesPerTx;
     protected final StartTestInput.Operation oper;
+    protected final StartTestInput.DataStore dataStore;
+    protected final Random rn = new Random();
+
 
     protected int txOk = 0;
     protected int txError = 0;
 
 
     public DatastoreAbstractWriter(StartTestInput.Operation oper,
-                                   int outerListElem, int innerListElem, long writesPerTx) {
+                                   int outerListElem, int innerListElem, long writesPerTx, DataStore dataStore) {
         this.outerListElem = outerListElem;
         this.innerListElem = innerListElem;
         this.writesPerTx = writesPerTx;
         this.oper = oper;
+        this.dataStore = dataStore;
+        LOG.info("DatastoreAbstractWriter created: {}", this);
     }
 
     public abstract void createList();
@@ -39,4 +52,22 @@ public abstract class DatastoreAbstractWriter {
         return txOk;
     }
 
+    protected LogicalDatastoreType getDataStoreType() {
+        final LogicalDatastoreType dsType;
+        if (dataStore == DataStore.CONFIG) {
+            dsType = LogicalDatastoreType.CONFIGURATION;
+        }
+        else if (dataStore == DataStore.OPERATIONAL) {
+            dsType = LogicalDatastoreType.OPERATIONAL;
+        }
+        else
+        {
+            if (rn.nextInt() % 2 != 0) {
+                dsType = LogicalDatastoreType.OPERATIONAL;
+            } else {
+                dsType = LogicalDatastoreType.CONFIGURATION;
+            }
+        }
+        return dsType;
+    }
 }