Author: frm
Date: Thu Jul 14 12:49:01 2016
New Revision: 1752636

URL: http://svn.apache.org/viewvc?rev=1752636&view=rev
Log:
OAK-4560 - Add failing test to prove that stable IDs are not propagated across 
generations

Added:
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
      - copied, changed from r1752600, 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java
Removed:
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java
Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java?rev=1752636&r1=1752635&r2=1752636&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
 Thu Jul 14 12:49:01 2016
@@ -136,6 +136,18 @@ public class SegmentNodeState extends Re
         }
     }
 
+    byte[] getStableIdBytes() {
+        RecordId id = getSegment().readRecordId(getOffset());
+
+        if (id.equals(getRecordId())) {
+            return id.getBytes();
+        } else {
+            byte[] buffer = new byte[18];
+            id.getSegment().readBytes(id.getOffset(), buffer, 0, 
buffer.length);
+            return buffer;
+        }
+    }
+
     @Override
     public boolean exists() {
         return true;

Copied: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
 (from r1752600, 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java&p1=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java&r1=1752600&r2=1752636&rev=1752636&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/NodeRecordTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NodeRecordTest.java
 Thu Jul 14 12:49:01 2016
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.jackrabbit.oak.segment.file;
+package org.apache.jackrabbit.oak.segment;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertTrue;
 
 import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
@@ -25,6 +26,9 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.segment.SegmentWriter;
 import org.apache.jackrabbit.oak.segment.SegmentWriterBuilder;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -48,6 +52,29 @@ public class NodeRecordTest {
         }
     }
 
+    @Test
+    @Ignore("OAK-4560")
+    public void stableIdShouldPersistAcrossGenerations() throws Exception {
+        try (FileStore store = newFileStore()) {
+            SegmentWriter writer;
+
+            writer = 
SegmentWriterBuilder.segmentWriterBuilder("1").withGeneration(1).build(store);
+            SegmentNodeState one = writer.writeNode(EmptyNodeState.EMPTY_NODE);
+            writer.flush();
+
+            writer = 
SegmentWriterBuilder.segmentWriterBuilder("2").withGeneration(2).build(store);
+            SegmentNodeState two = writer.writeNode(one);
+            writer.flush();
+
+            writer = 
SegmentWriterBuilder.segmentWriterBuilder("3").withGeneration(3).build(store);
+            SegmentNodeState three = writer.writeNode(two);
+            writer.flush();
+
+            assertArrayEquals(three.getStableIdBytes(), 
two.getStableIdBytes());
+            assertArrayEquals(two.getStableIdBytes(), one.getStableIdBytes());
+        }
+    }
+
     private boolean isRootRecord(SegmentNodeState sns) {
         Segment segment = sns.getRecordId().getSegment();
 


Reply via email to