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 2016/04/20 14:13:42 UTC
svn commit: r1740130 - in /jackrabbit/oak/trunk/oak-segment-next/src:
main/java/org/apache/jackrabbit/oak/segment/
main/java/org/apache/jackrabbit/oak/segment/memory/
test/java/org/apache/jackrabbit/oak/segment/
Author: mduerig
Date: Wed Apr 20 12:13:42 2016
New Revision: 1740130
URL: http://svn.apache.org/viewvc?rev=1740130&view=rev
Log:
OAK-4232: Bump segment version to 12
Segment version is now 12. Dropped support for older versions.
Modified:
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentVersion.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Template.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java
jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java
jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentVersionTest.java
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/RecordWriters.java Wed Apr 20 12:13:42 2016
@@ -33,7 +33,6 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.segment.RecordType.VALUE;
import static org.apache.jackrabbit.oak.segment.Segment.RECORD_ID_BYTES;
import static org.apache.jackrabbit.oak.segment.Segment.SMALL_LIMIT;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_11;
import java.io.IOException;
import java.util.Collection;
@@ -478,16 +477,10 @@ final class RecordWriters {
if (childNameId != null) {
writer.writeRecordId(childNameId);
}
- if (version.onOrAfter(V_11)) {
- if (propNamesId != null) {
- writer.writeRecordId(propNamesId);
- }
+ if (propNamesId != null) {
+ writer.writeRecordId(propNamesId);
}
for (int i = 0; i < propertyNames.length; i++) {
- if (!version.onOrAfter(V_11)) {
- // V10 only
- writer.writeRecordId(propertyNames[i]);
- }
writer.writeByte(propertyTypes[i]);
}
return id;
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java Wed Apr 20 12:13:42 2016
@@ -26,6 +26,7 @@ import static com.google.common.collect.
import static com.google.common.collect.Maps.newConcurrentMap;
import static java.lang.Boolean.getBoolean;
import static org.apache.jackrabbit.oak.commons.IOUtils.closeQuietly;
+import static org.apache.jackrabbit.oak.segment.SegmentVersion.isValid;
import static org.apache.jackrabbit.oak.segment.SegmentWriter.BLOCK_SIZE;
import java.io.IOException;
@@ -44,6 +45,7 @@ import javax.annotation.Nullable;
import com.google.common.base.Charsets;
import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
import org.apache.commons.io.HexDump;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -204,10 +206,11 @@ public class Segment {
}
public Segment(SegmentTracker tracker, SegmentId id, ByteBuffer data) {
- this(tracker, id, data, SegmentVersion.V_11);
+ this(tracker, id, data, SegmentVersion.LATEST_VERSION);
}
public Segment(SegmentTracker tracker, final SegmentId id, final ByteBuffer data, SegmentVersion version) {
+ Preconditions.checkArgument(isValid(version));
this.tracker = checkNotNull(tracker);
this.id = checkNotNull(id);
if (tracker.getStringCache() == null) {
@@ -228,7 +231,7 @@ public class Segment {
checkState(data.get(0) == '0'
&& data.get(1) == 'a'
&& data.get(2) == 'K'
- && SegmentVersion.isValid(segmentVersion),
+ && isValid(segmentVersion),
new Object() { // Defer evaluation of error message
@Override
public String toString() {
@@ -607,11 +610,7 @@ public class Segment {
}
PropertyTemplate[] properties;
- if (version.onOrAfter(SegmentVersion.V_11)) {
- properties = readPropsV11(propertyCount, offset);
- } else {
- properties = readPropsV10(propertyCount, offset);
- }
+ properties = readPropsV11(propertyCount, offset);
return new Template(primaryType, mixinTypes, properties, childName);
}
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeState.java Wed Apr 20 12:13:42 2016
@@ -153,29 +153,15 @@ public class SegmentNodeState extends Re
template.getPropertyTemplate(name);
if (propertyTemplate != null) {
Segment segment = getSegment();
- RecordId id;
- if (getSegment().getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- id = getRecordIdV11(segment, template, propertyTemplate);
- } else {
- id = getRecordIdV10(segment, template, propertyTemplate);
- }
+ RecordId id = getRecordId(segment, template, propertyTemplate);
return new SegmentPropertyState(id, propertyTemplate);
} else {
return null;
}
}
- private RecordId getRecordIdV10(Segment segment, Template template,
- PropertyTemplate propertyTemplate) {
- int ids = 2 + propertyTemplate.getIndex();
- if (template.getChildName() != Template.ZERO_CHILD_NODES) {
- ids++;
- }
- return segment.readRecordId(getOffset(0, ids));
- }
-
- private RecordId getRecordIdV11(Segment segment, Template template,
- PropertyTemplate propertyTemplate) {
+ private RecordId getRecordId(Segment segment, Template template,
+ PropertyTemplate propertyTemplate) {
int ids = 2;
if (template.getChildName() != Template.ZERO_CHILD_NODES) {
ids++;
@@ -209,20 +195,12 @@ public class SegmentNodeState extends Re
ids++;
}
- if (segment.getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- if (propertyTemplates.length > 0) {
- ListRecord pIds = new ListRecord(
- segment.readRecordId(getOffset(0, ids)),
- propertyTemplates.length);
- for (int i = 0; i < propertyTemplates.length; i++) {
- RecordId propertyId = pIds.getEntry(i);
- list.add(new SegmentPropertyState(propertyId,
- propertyTemplates[i]));
- }
- }
- } else {
+ if (propertyTemplates.length > 0) {
+ ListRecord pIds = new ListRecord(
+ segment.readRecordId(getOffset(0, ids)),
+ propertyTemplates.length);
for (int i = 0; i < propertyTemplates.length; i++) {
- RecordId propertyId = segment.readRecordId(getOffset(0, ids++));
+ RecordId propertyId = pIds.getEntry(i);
list.add(new SegmentPropertyState(propertyId,
propertyTemplates[i]));
}
@@ -302,12 +280,7 @@ public class SegmentNodeState extends Re
}
Segment segment = getSegment();
- RecordId id;
- if (segment.getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- id = getRecordIdV11(segment, template, propertyTemplate);
- } else {
- id = getRecordIdV10(segment, template, propertyTemplate);
- }
+ RecordId id = getRecordId(segment, template, propertyTemplate);
return readString(id);
}
@@ -345,12 +318,7 @@ public class SegmentNodeState extends Re
}
Segment segment = getSegment();
- RecordId id;
- if (getSegment().getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- id = getRecordIdV11(segment, template, propertyTemplate);
- } else {
- id = getRecordIdV10(segment, template, propertyTemplate);
- }
+ RecordId id = getRecordId(segment, template, propertyTemplate);
segment = id.getSegment();
int size = segment.readInt(id.getOffset());
if (size == 0) {
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java Wed Apr 20 12:13:42 2016
@@ -441,26 +441,17 @@ public class SegmentParser {
// Recurse into properties
PropertyTemplate[] propertyTemplates = template.getPropertyTemplates();
- if (segment.getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- if (propertyTemplates.length > 0) {
- size += RECORD_ID_BYTES;
- RecordId id = segment.readRecordId(offset + ids * RECORD_ID_BYTES);
- ListRecord pIds = new ListRecord(id,
- propertyTemplates.length);
- for (int i = 0; i < propertyTemplates.length; i++) {
- RecordId propertyId = pIds.getEntry(i);
- onProperty(nodeId, propertyId, propertyTemplates[i]);
- propertyCount++;
- }
- onList(nodeId, id, propertyTemplates.length);
- }
- } else {
- for (PropertyTemplate propertyTemplate : propertyTemplates) {
- size += RECORD_ID_BYTES;
- RecordId propertyId = segment.readRecordId(offset + ids++ * RECORD_ID_BYTES);
- onProperty(nodeId, propertyId, propertyTemplate);
+ if (propertyTemplates.length > 0) {
+ size += RECORD_ID_BYTES;
+ RecordId id = segment.readRecordId(offset + ids * RECORD_ID_BYTES);
+ ListRecord pIds = new ListRecord(id,
+ propertyTemplates.length);
+ for (int i = 0; i < propertyTemplates.length; i++) {
+ RecordId propertyId = pIds.getEntry(i);
+ onProperty(nodeId, propertyId, propertyTemplates[i]);
propertyCount++;
}
+ onList(nodeId, id, propertyTemplates.length);
}
return new NodeInfo(nodeId, nodeCount, propertyCount, size);
}
@@ -504,25 +495,16 @@ public class SegmentParser {
size += RECORD_ID_BYTES;
}
- if (segment.getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- if (propertyCount > 0) {
- RecordId listId = segment.readRecordId(offset + size);
- size += RECORD_ID_BYTES;
- ListRecord propertyNames = new ListRecord(listId, propertyCount);
- for (int i = 0; i < propertyCount; i++) {
- RecordId propertyNameId = propertyNames.getEntry(i);
- size++; // type
- onString(templateId, propertyNameId);
- }
- onList(templateId, listId, propertyCount);
- }
- } else {
+ if (propertyCount > 0) {
+ RecordId listId = segment.readRecordId(offset + size);
+ size += RECORD_ID_BYTES;
+ ListRecord propertyNames = new ListRecord(listId, propertyCount);
for (int i = 0; i < propertyCount; i++) {
- RecordId propertyNameId = segment.readRecordId(offset + size);
- size += RECORD_ID_BYTES;
- size++; // type
+ RecordId propertyNameId = propertyNames.getEntry(i);
+ size++; // type
onString(templateId, propertyNameId);
}
+ onList(templateId, listId, propertyCount);
}
return new TemplateInfo(templateId, hasPrimaryType, hasMixinTypes,
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Wed Apr 20 12:13:42 2016
@@ -18,6 +18,7 @@
*/
package org.apache.jackrabbit.oak.segment;
+import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.Queues.newArrayDeque;
import static com.google.common.collect.Sets.newHashSet;
import static java.lang.Boolean.getBoolean;
@@ -113,8 +114,8 @@ public class SegmentTracker {
private final SegmentVersion segmentVersion;
- public SegmentTracker(SegmentStore store, int cacheSizeMB,
- SegmentVersion version) {
+ public SegmentTracker(SegmentStore store, int cacheSizeMB, SegmentVersion version) {
+ checkArgument(SegmentVersion.isValid(version));
this.segmentVersion = version;
for (int i = 0; i < tables.length; i++) {
@@ -152,7 +153,7 @@ public class SegmentTracker {
}
public SegmentTracker(SegmentStore store) {
- this(store, DEFAULT_MEMORY_CACHE_SIZE, SegmentVersion.V_11);
+ this(store, DEFAULT_MEMORY_CACHE_SIZE, SegmentVersion.LATEST_VERSION);
}
/**
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentVersion.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentVersion.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentVersion.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentVersion.java Wed Apr 20 12:13:42 2016
@@ -31,6 +31,7 @@ import com.google.common.primitives.Unsi
* <ul>
* <li>10 = all Oak versions previous to 11</li>
* <li>11 = all Oak versions starting from 1.0.12, 1.1.7 and 1.2</li>
+ * <li>12 = all oak-segment-next versions</li>
* </ul>
*/
public enum SegmentVersion {
@@ -41,9 +42,13 @@ public enum SegmentVersion {
@Deprecated
V_10((byte) 10),
- V_11((byte) 11);
+ /**
+ * @deprecated Use latest version V11
+ */
+ @Deprecated
+ V_11((byte) 11),
- // FIXME OAK-3348 upgrade to version 12
+ V_12((byte) 12);
/**
* Latest segment version
@@ -71,7 +76,9 @@ public enum SegmentVersion {
}
public static SegmentVersion fromByte(byte v) {
- if (v == V_11.version) {
+ if (v == V_12.version) {
+ return V_12;
+ } else if (v == V_11.version) {
return V_11;
} else if (v == V_10.version) {
return V_10;
@@ -81,7 +88,10 @@ public enum SegmentVersion {
}
public static boolean isValid(byte v) {
- return v == V_10.version || v == V_11.version;
+ return v == V_12.version;
}
+ public static boolean isValid(SegmentVersion version) {
+ return isValid(version.version);
+ }
}
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java Wed Apr 20 12:13:42 2016
@@ -41,11 +41,6 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.api.Type.NAMES;
import static org.apache.jackrabbit.oak.api.Type.STRING;
import static org.apache.jackrabbit.oak.segment.MapRecord.BUCKETS_PER_LEVEL;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newBlobIdWriter;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newListWriter;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newMapBranchWriter;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newMapLeafWriter;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newValueWriter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -747,13 +742,9 @@ public class SegmentWriter {
}
RecordId propNamesId = null;
- if (version.onOrAfter(SegmentVersion.V_11)) {
- if (propertyNames.length > 0) {
- propNamesId = writeList(asList(propertyNames));
- ids.add(propNamesId);
- }
- } else {
- ids.addAll(asList(propertyNames));
+ if (propertyNames.length > 0) {
+ propNamesId = writeList(asList(propertyNames));
+ ids.add(propNamesId);
}
checkState(propertyNames.length < (1 << 18));
@@ -880,11 +871,7 @@ public class SegmentWriter {
}
if (!pIds.isEmpty()) {
- if (version.onOrAfter(SegmentVersion.V_11)) {
- ids.add(writeList(pIds));
- } else {
- ids.addAll(pIds);
- }
+ ids.add(writeList(pIds));
}
RecordId nodeId = null;
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Template.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Template.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Template.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/Template.java Wed Apr 20 12:13:42 2016
@@ -183,15 +183,9 @@ public class Template {
if (childName != ZERO_CHILD_NODES) {
offset += RECORD_ID_BYTES;
}
- RecordId rid = null;
- if (segment.getSegmentVersion().onOrAfter(SegmentVersion.V_11)) {
- RecordId lid = segment.readRecordId(offset);
- ListRecord props = new ListRecord(lid, properties.length);
- rid = props.getEntry(index);
- } else {
- offset += index * RECORD_ID_BYTES;
- rid = segment.readRecordId(offset);
- }
+ RecordId lid = segment.readRecordId(offset);
+ ListRecord props = new ListRecord(lid, properties.length);
+ RecordId rid = props.getEntry(index);
return new SegmentPropertyState(rid, properties[index]);
}
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/memory/MemoryStore.java Wed Apr 20 12:13:42 2016
@@ -46,7 +46,7 @@ import com.google.common.collect.Maps;
*/
public class MemoryStore implements SegmentStore {
- private final SegmentTracker tracker = new SegmentTracker(this, 16, SegmentVersion.V_11);
+ private final SegmentTracker tracker = new SegmentTracker(this, 16, SegmentVersion.LATEST_VERSION);
private SegmentNodeState head;
Modified: jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/RecordUsageAnalyserTest.java Wed Apr 20 12:13:42 2016
@@ -29,57 +29,33 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.segment.ListRecord.LEVEL_SIZE;
import static org.apache.jackrabbit.oak.segment.Segment.MEDIUM_LIMIT;
import static org.apache.jackrabbit.oak.segment.Segment.SMALL_LIMIT;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_10;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_11;
+import static org.apache.jackrabbit.oak.segment.SegmentVersion.LATEST_VERSION;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
-import java.util.List;
import java.util.Random;
import com.google.common.collect.ImmutableList;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
-import org.apache.jackrabbit.oak.segment.MapRecord;
-import org.apache.jackrabbit.oak.segment.RecordUsageAnalyser;
-import org.apache.jackrabbit.oak.segment.SegmentBufferWriter;
-import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.segment.SegmentStore;
-import org.apache.jackrabbit.oak.segment.SegmentTracker;
-import org.apache.jackrabbit.oak.segment.SegmentVersion;
-import org.apache.jackrabbit.oak.segment.SegmentWriter;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-@RunWith(Parameterized.class)
public class RecordUsageAnalyserTest {
- private final SegmentVersion segmentVersion;
-
private SegmentStore store;
private SegmentWriter writer;
private RecordUsageAnalyser analyser = new RecordUsageAnalyser();
- @Parameterized.Parameters
- public static List<SegmentVersion[]> fixtures() {
- return ImmutableList.of(new SegmentVersion[] {V_10}, new SegmentVersion[] {V_11});
- }
-
- public RecordUsageAnalyserTest(SegmentVersion segmentVersion) {
- this.segmentVersion = segmentVersion;
- }
-
@Before
public void setup() {
store = mock(SegmentStore.class);
SegmentTracker tracker = new SegmentTracker(store);
when(store.getTracker()).thenReturn(tracker);
- writer = new SegmentWriter(store, segmentVersion,
- new SegmentBufferWriter(store, segmentVersion, ""));
+ writer = new SegmentWriter(store, LATEST_VERSION,
+ new SegmentBufferWriter(store, LATEST_VERSION, ""));
analyser = new RecordUsageAnalyser();
}
@@ -119,11 +95,7 @@ public class RecordUsageAnalyserTest {
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);
- }
+ assertSizes(analyser, 0, 18, 23, 10, 6);
}
@Test
@@ -313,11 +285,7 @@ public class RecordUsageAnalyserTest {
SegmentNodeState node = writer.writeNode(builder.getNodeState());
analyser.analyseNode(node.getRecordId());
- if (segmentVersion == V_11) {
- assertCounts(analyser, 1, 5, 6, 1, 1, 1, 0, 10, 1, 1, 2, 3);
- } else {
- assertCounts(analyser, 1, 3, 6, 1, 1, 1, 0, 10, 1, 1, 2, 3);
- }
+ assertCounts(analyser, 1, 5, 6, 1, 1, 1, 0, 10, 1, 1, 2, 3);
}
private static Blob createRandomBlob(int size) {
Modified: jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java Wed Apr 20 12:13:42 2016
@@ -34,8 +34,7 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.LONG;
import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.MEDIUM;
import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.SMALL;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_10;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_11;
+import static org.apache.jackrabbit.oak.segment.SegmentVersion.LATEST_VERSION;
import static org.apache.jackrabbit.oak.segment.TestUtils.newRecordId;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -61,26 +60,12 @@ import org.apache.jackrabbit.oak.spi.sta
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-@RunWith(Parameterized.class)
public class SegmentParserTest {
- private final SegmentVersion segmentVersion;
-
private File directory;
private SegmentStore store;
private SegmentWriter writer;
- @Parameterized.Parameters
- public static List<SegmentVersion[]> fixtures() {
- return ImmutableList.of(new SegmentVersion[] {V_10}, new SegmentVersion[] {V_11});
- }
-
- public SegmentParserTest(SegmentVersion segmentVersion) {
- this.segmentVersion = segmentVersion;
- }
-
private static class TestParser extends SegmentParser {
private final String name;
@@ -160,8 +145,8 @@ public class SegmentParserTest {
directory.mkdir();
store = FileStore.builder(directory).build();
- writer = new SegmentWriter(store, segmentVersion,
- new SegmentBufferWriter(store, segmentVersion, ""));
+ writer = new SegmentWriter(store, LATEST_VERSION,
+ new SegmentBufferWriter(store, LATEST_VERSION, ""));
}
@After
@@ -209,12 +194,7 @@ public class SegmentParserTest {
@Override protected void onTemplate(RecordId parentId, RecordId templateId) { }
@Override protected void onMap(RecordId parentId, RecordId mapId, MapRecord map) { }
@Override protected void onProperty(RecordId parentId, RecordId propertyId, PropertyTemplate template) { }
- @Override
- protected void onList(RecordId parentId, RecordId listId, int count) {
- if (segmentVersion == V_10) {
- super.onList(parentId, listId, count);
- }
- }
+ @Override protected void onList(RecordId parentId, RecordId listId, int count) { }
}.parseNode(node.getRecordId());
assertEquals(node.getRecordId(), info.nodeId);
assertEquals(2, info.nodeCount);
@@ -246,12 +226,7 @@ public class SegmentParserTest {
@Override protected void onString(RecordId parentId, RecordId stringId) { }
@Override protected void onNode(RecordId parentId, RecordId nodeId) { }
@Override protected void onProperty(RecordId parentId, RecordId propertyId, PropertyTemplate template) { }
- @Override
- protected void onList(RecordId parentId, RecordId listId, int count) {
- if (segmentVersion == V_10) {
- super.onList(parentId, listId, count);
- }
- }
+ @Override protected void onList(RecordId parentId, RecordId listId, int count) { }
}.parseNode(node.getRecordId());
}
@@ -327,12 +302,7 @@ public class SegmentParserTest {
}
@Override protected void onTemplate(RecordId parentId, RecordId templateId) { }
@Override protected void onValue(RecordId parentId, RecordId valueId, Type<?> type) { }
- @Override
- protected void onList(RecordId parentId, RecordId listId, int count) {
- if (segmentVersion == V_10) {
- super.onList(parentId, listId, count);
- }
- }
+ @Override protected void onList(RecordId parentId, RecordId listId, int count) { }
}.parseNode(node.getRecordId());
}
Modified: jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentVersionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentVersionTest.java?rev=1740130&r1=1740129&r2=1740130&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentVersionTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/segment/SegmentVersionTest.java Wed Apr 20 12:13:42 2016
@@ -19,37 +19,12 @@
package org.apache.jackrabbit.oak.segment;
-import static org.apache.jackrabbit.oak.api.Type.LONG;
-import static org.apache.jackrabbit.oak.api.Type.LONGS;
-import static org.apache.jackrabbit.oak.api.Type.STRING;
-import static org.apache.jackrabbit.oak.api.Type.STRINGS;
import static org.apache.jackrabbit.oak.segment.SegmentVersion.LATEST_VERSION;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_10;
-import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_11;
-import static org.apache.jackrabbit.oak.segment.compaction.CompactionStrategy.CleanupType.CLEAN_NONE;
+import static org.apache.jackrabbit.oak.segment.SegmentVersion.V_12;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.File;
-import java.io.IOException;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
-import org.apache.jackrabbit.oak.segment.SegmentVersion;
-import org.apache.jackrabbit.oak.segment.compaction.CompactionStrategy;
-import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
-import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
-import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -67,165 +42,7 @@ public class SegmentVersionTest {
@Test
public void latestVersion() {
- assertEquals(V_11, LATEST_VERSION);
+ assertEquals(V_12, LATEST_VERSION);
}
- @Test
- public void compareOldRevision() throws Exception {
- FileStore fileStoreV10 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).withSegmentVersion(V_10).build();
- try {
- NodeState content = addTestContent(fileStoreV10, "content").getChildNode("content");
- assertVersion(content, SegmentVersion.V_10);
- NodeBuilder builder = content.builder();
- builder.setChildNode("foo");
- content.compareAgainstBaseState(builder.getNodeState(), new NodeStateDiff() {
- @Override
- public boolean propertyAdded(PropertyState after) {
- fail();
- return false;
- }
-
- @Override
- public boolean propertyChanged(PropertyState before, PropertyState after) {
- fail();
- return false;
- }
-
- @Override
- public boolean propertyDeleted(PropertyState before) {
- fail();
- return false;
- }
-
- @Override
- public boolean childNodeAdded(String name, NodeState after) {
- fail();
- return false;
- }
-
- @Override
- public boolean childNodeChanged(String name, NodeState before, NodeState after) {
- fail();
- return false;
- }
-
- @Override
- public boolean childNodeDeleted(String name, NodeState before) {
- assertEquals("foo", name);
- return false;
- }
- });
- } finally {
- fileStoreV10.close();
- }
- }
-
- @Test
- public void readOldVersions() throws Exception {
- FileStore fileStoreV10 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).withSegmentVersion(V_10).build();
- try {
- NodeState content = addTestContent(fileStoreV10, "content");
- assertVersion(content, SegmentVersion.V_10);
- } finally {
- fileStoreV10.close();
- }
-
- FileStore fileStoreV11 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).build();
- try {
- verifyContent(fileStoreV11, "content");
- } finally {
- fileStoreV11.close();
- }
- }
-
- @Test
- public void mixedVersions() throws IOException, CommitFailedException {
- FileStore fileStoreV10 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).withSegmentVersion(V_10).build();
- try {
- NodeState content10 = addTestContent(fileStoreV10, "content10");
- assertVersion(content10, SegmentVersion.V_10);
- } finally {
- fileStoreV10.close();
- }
-
- FileStore fileStoreV11 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).build();
- try {
- NodeState content11 = addTestContent(fileStoreV11, "content11");
- assertVersion(content11, V_11);
- verifyContent(fileStoreV11, "content10");
- verifyContent(fileStoreV11, "content11");
- } finally {
- fileStoreV11.close();
- }
- }
-
- @Test
- public void migrate() throws IOException, CommitFailedException {
- FileStore fileStoreV10 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).withSegmentVersion(V_10).build();
- try {
- addTestContent(fileStoreV10, "content10");
- } finally {
- fileStoreV10.close();
- }
-
- FileStore fileStoreV11 = FileStore.builder(getFileStoreFolder()).withMaxFileSize(1).build();
- try {
- fileStoreV11.setCompactionStrategy(new CompactionStrategy(false, false,
- CLEAN_NONE, 0, (byte) 0));
- checkAllVersions(fileStoreV11.getHead(), SegmentVersion.V_10);
- fileStoreV11.compact();
- checkAllVersions(fileStoreV11.getHead(), V_11);
- } finally {
- fileStoreV11.close();
- }
- }
-
- private static void checkAllVersions(SegmentNodeState head, SegmentVersion version) {
- assertVersion(head, version);
- for (ChildNodeEntry childNodeEntry : head.getChildNodeEntries()) {
- checkAllVersions((SegmentNodeState) childNodeEntry.getNodeState(), version);
- }
- }
-
- private static void assertVersion(NodeState node, SegmentVersion version) {
- assertTrue(node instanceof SegmentNodeState);
- assertEquals(version, ((SegmentNodeState) node).getSegment().getSegmentVersion());
- }
-
- @SuppressWarnings("deprecation")
- private static NodeState addTestContent(FileStore fs, String nodeName)
- throws CommitFailedException {
- NodeStore store = SegmentNodeStore.builder(fs).build();
- NodeBuilder builder = store.getRoot().builder();
-
- NodeBuilder content = builder.child(nodeName);
- content.setProperty("a", 1);
- content.setProperty("aM", ImmutableList.of(1L, 2L, 3L, 4L), LONGS);
-
- content.setProperty("b", "azerty");
- content.setProperty("bM",
- ImmutableList.of("a", "z", "e", "r", "t", "y"), STRINGS);
-
- // add blobs?
-
- return store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
- }
-
- private static void verifyContent(FileStore fs, String nodeName) {
- NodeStore store = SegmentNodeStore.builder(fs).build();
- SegmentNodeState content = (SegmentNodeState) store.getRoot()
- .getChildNode(nodeName);
-
- assertEquals(new Long(1), content.getProperty("a").getValue(LONG));
- assertEquals(ImmutableList.of(1L, 2L, 3L, 4L),
- Lists.newArrayList(content.getProperty("aM").getValue(LONGS)));
-
- assertEquals("azerty", content.getProperty("b").getValue(STRING));
- assertEquals("azerty", content.getString("b"));
-
- assertEquals(ImmutableList.of("a", "z", "e", "r", "t", "y"),
- Lists.newArrayList(content.getProperty("bM").getValue(STRINGS)));
- assertEquals(ImmutableList.of("a", "z", "e", "r", "t", "y"),
- Lists.newArrayList(content.getStrings("bM")));
- }
}