Author: mduerig
Date: Fri Feb 20 17:07:18 2015
New Revision: 1661164

URL: http://svn.apache.org/r1661164
Log:
OAK-2542: Update RecordUsageAnalyser to reflect changes in segment format
- Add test with multiple properties
- Fix analyseTemplate for segment version V_11

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyser.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyser.java?rev=1661164&r1=1661163&r2=1661164&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyser.java
 Fri Feb 20 17:07:18 2015
@@ -295,31 +295,30 @@ public class RecordUsageAnalyser {
             if (hasPrimaryType) {
                 RecordId primaryId = segment.readRecordId(offset + size);
                 analyseString(primaryId);
-                size += Segment.RECORD_ID_BYTES;
+                size += RECORD_ID_BYTES;
             }
 
             if (hasMixinTypes) {
                 for (int i = 0; i < mixinCount; i++) {
                     RecordId mixinId = segment.readRecordId(offset + size);
                     analyseString(mixinId);
-                    size += Segment.RECORD_ID_BYTES;
+                    size += RECORD_ID_BYTES;
                 }
             }
 
             if (!zeroChildNodes && !manyChildNodes) {
                 RecordId childNameId = segment.readRecordId(offset + size);
                 analyseString(childNameId);
-                size += Segment.RECORD_ID_BYTES;
+                size += RECORD_ID_BYTES;
             }
 
             if (segment.getSegmentVersion().onOrAfter(V_11)) {
                 if (propertyCount > 0) {
                     RecordId listId = segment.readRecordId(offset + size);
-                    ListRecord propertyNames = new ListRecord(listId,
-                            propertyCount);
+                    size += RECORD_ID_BYTES;
+                    ListRecord propertyNames = new ListRecord(listId, 
propertyCount);
                     for (int i = 0; i < propertyCount; i++) {
                         RecordId propertyNameId = propertyNames.getEntry(i);
-                        size += Segment.RECORD_ID_BYTES;
                         size++; // type
                         analyseString(propertyNameId);
                     }
@@ -328,7 +327,7 @@ public class RecordUsageAnalyser {
             } else {
                 for (int i = 0; i < propertyCount; i++) {
                     RecordId propertyNameId = segment.readRecordId(offset + 
size);
-                    size += Segment.RECORD_ID_BYTES;
+                    size += RECORD_ID_BYTES;
                     size++;  // type
                     analyseString(propertyNameId);
                 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java?rev=1661164&r1=1661163&r2=1661164&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/RecordUsageAnalyserTest.java
 Fri Feb 20 17:07:18 2015
@@ -101,6 +101,22 @@ public class RecordUsageAnalyserTest {
     }
 
     @Test
+    public void nodeWithMultipleProperties() {
+        NodeBuilder builder = EMPTY_NODE.builder();
+        builder.setProperty("one", "11");
+        builder.setProperty("two", "22");
+        builder.setProperty("three", "33");
+
+        SegmentNodeState node = writer.writeNode(builder.getNodeState());
+        analyser.analyseNode(node.getRecordId());
+        if (segmentVersion == V_11) {
+            assertSizes(analyser, 0, 18, 23, 10, 6);
+        } else {
+            assertSizes(analyser, 0, 0, 23, 16, 12);
+        }
+    }
+
+    @Test
     public void nodeWithMediumString() {
         NodeBuilder builder = EMPTY_NODE.builder();
         builder.setProperty("medium", repeat("a", SMALL_LIMIT + 1));


Reply via email to