You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2015/07/07 14:40:42 UTC

svn commit: r1689643 - in /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment: SegmentCompactionIT.java SegmentCompactionMBean.java

Author: mduerig
Date: Tue Jul  7 12:40:42 2015
New Revision: 1689643

URL: http://svn.apache.org/r1689643
Log:
OAK-2849: Improve revision gc on SegmentMK
SegmentCompactionIT improvement: make the ratio of the individual operations configurable

Modified:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionMBean.java

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java?rev=1689643&r1=1689642&r2=1689643&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java Tue Jul  7 12:40:42 2015
@@ -142,6 +142,11 @@ public class SegmentCompactionIT {
     private volatile int maxReferences = 10;
     private volatile int maxNodeCount = 1000;
     private volatile int maxPropertyCount = 1000;
+    private volatile int nodeRemoveRatio = 10;
+    private volatile int propertyRemoveRatio = 10;
+    private volatile int nodeAddRatio = 40;
+    private volatile int addStringRatio = 20;
+    private volatile int addBinaryRatio = 20;
     private volatile int compactionInterval = 1;
     private volatile boolean stopping;
     private volatile Reference rootReference;
@@ -382,14 +387,21 @@ public class SegmentCompactionIT {
 
         private void modify(NodeStore nodeStore, NodeBuilder nodeBuilder, boolean deleteOnly)
                 throws IOException {
-            int k = rnd.nextInt(100);
-            if (k < 10) {
+            int p0 = nodeRemoveRatio;
+            int p1 = propertyRemoveRatio;
+            int p2 = nodeAddRatio;
+            int p3 = addStringRatio;
+            int p4 = addBinaryRatio;
+            double p = p0 + p1 + p2 + p3 + p4;
+
+            double k = rnd.nextDouble();
+            if (k < p0/p) {
                 chooseRandomNode(nodeBuilder).remove();
-            } else if (k < 20) {
+            } else if (k < (p0 + p1)/p) {
                 removeRandomProperty(chooseRandomNode(nodeBuilder));
-            } else if (k < 60 && !deleteOnly)  {
+            } else if (k < (p0 + p1 + p2)/p && !deleteOnly)  {
                 addRandomNode(nodeBuilder);
-            } else if (k < 80 && !deleteOnly) {
+            } else if (k < (p0 + p1 + p2 + p3)/p && !deleteOnly) {
                 addRandomValue(nodeBuilder);
             } else if (!deleteOnly) {
                 addRandomBlob(nodeStore, nodeBuilder);
@@ -771,6 +783,56 @@ public class SegmentCompactionIT {
         }
 
         @Override
+        public void setNodeRemoveRatio(int ratio) {
+            nodeRemoveRatio = ratio;
+        }
+
+        @Override
+        public int getNodeRemoveRatio() {
+            return nodeRemoveRatio;
+        }
+
+        @Override
+        public void setPropertyRemoveRatio(int ratio) {
+            propertyRemoveRatio = ratio;
+        }
+
+        @Override
+        public int getPropertyRemoveRatio() {
+            return propertyRemoveRatio;
+        }
+
+        @Override
+        public void setNodeAddRatio(int ratio) {
+            nodeAddRatio = ratio;
+        }
+
+        @Override
+        public int getNodeAddRatio() {
+            return nodeAddRatio;
+        }
+
+        @Override
+        public void setAddStringRatio(int ratio) {
+            addStringRatio = ratio;
+        }
+
+        @Override
+        public int getAddStringRatio() {
+            return addStringRatio;
+        }
+
+        @Override
+        public void setAddBinaryRatio(int ratio) {
+            addBinaryRatio = ratio;
+        }
+
+        @Override
+        public int getAddBinaryRatio() {
+            return addBinaryRatio;
+        }
+
+        @Override
         public void setRootReference(boolean set) {
             if (set && rootReference == null) {
                 rootReference = new Reference(nodeStore.getRoot());

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionMBean.java?rev=1689643&r1=1689642&r2=1689643&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionMBean.java Tue Jul  7 12:40:42 2015
@@ -162,6 +162,61 @@ public interface SegmentCompactionMBean
     int getMaxPropertyCount();
 
     /**
+     * Set the ration of remove node operations wrt. all other operations.
+     * @param ratio  ratio of node remove operations
+     */
+    void setNodeRemoveRatio(int ratio);
+
+    /**
+     * @return  Ratio of node remove operations
+     */
+    int getNodeRemoveRatio();
+
+    /**
+     * Set the ration of remove property operations wrt. all other operations.
+     * @param ratio  ratio of property remove operations
+     */
+    void setPropertyRemoveRatio(int ratio);
+
+    /**
+     * @return  Ratio of property remove operations
+     */
+    int getPropertyRemoveRatio();
+
+    /**
+     * Set the ration of add node operations wrt. all other operations.
+     * @param ratio  ratio of node add operations
+     */
+    void setNodeAddRatio(int ratio);
+
+    /**
+     * @return  Ratio of node add operations
+     */
+    int getNodeAddRatio();
+
+    /**
+     * Set the ration of add string property operations wrt. all other operations.
+     * @param ratio  ratio of string property add operations
+     */
+    void setAddStringRatio(int ratio);
+
+    /**
+     * @return  Ratio of string property add operations
+     */
+    int getAddStringRatio();
+
+    /**
+     * Set the ration of add binary property operations wrt. all other operations.
+     * @param ratio  ratio of binary property add operations
+     */
+    void setAddBinaryRatio(int ratio);
+
+    /**
+     * @return  Ratio of binary property add operations
+     */
+    int getAddBinaryRatio();
+
+    /**
      * Add a reference to the current root or release a held reference.
      * @param set  add a reference if {@code true}, otherwise release any held reference
      */