RollingSegmentHandle h = new RollingSegmentHandle(headerHandle, policy, segmentChunks); h.setHeaderLength(serialization.length); return h;
private void createHeader(RollingSegmentHandle handle) throws StreamSegmentException { Preconditions.checkArgument(handle.getHeaderHandle() == null, "handle already has a header."); // Create a new Header SegmentChunk. String headerName = StreamSegmentNameUtils.getHeaderSegmentName(handle.getSegmentName()); this.baseStorage.create(headerName); val headerHandle = this.baseStorage.openWrite(headerName); // Create a new Handle and serialize it, after which update the original handle. val newHandle = new RollingSegmentHandle(headerHandle, handle.getRollingPolicy(), handle.chunks()); serializeHandle(newHandle); handle.refresh(newHandle); }
retValue = new RollingSegmentHandle(headerHandle, rollingPolicy, new ArrayList<>()); serializeHandle(retValue); } catch (StreamSegmentExistsException ex) {
private RollingSegmentHandle newHandle(String segmentName, int chunkCount) { val chunks = new ArrayList<SegmentChunk>(); long offset = 0; val rnd = new Random(0); for (int i = 0; i < chunkCount; i++) { val chunk = new SegmentChunk(StreamSegmentNameUtils.getSegmentChunkName(segmentName, offset), offset); chunk.setLength(MathHelpers.abs(rnd.nextInt())); if (i < chunkCount - 1) { chunk.markSealed(); } chunks.add(chunk); offset += chunk.getLength(); } return new RollingSegmentHandle(new TestHandle(StreamSegmentNameUtils.getHeaderSegmentName(segmentName), false), TEST_ROLLING_POLICY, chunks); }
public void testAddChunks() { val headerHandle = new TestHandle(HEADER_NAME, true); val h = new RollingSegmentHandle(headerHandle, DEFAULT_ROLLING_POLICY, new ArrayList<>());
/** * Tests the ability of the Handle to refresh based on information from another similar handle. */ @Test public void testRefresh() { val headerHandle = new TestHandle(HEADER_NAME, true); val target = new RollingSegmentHandle(headerHandle, DEFAULT_ROLLING_POLICY, Collections.singletonList(new SegmentChunk("s1", 0L))); val source = new RollingSegmentHandle(headerHandle, DEFAULT_ROLLING_POLICY, Arrays.asList( new SegmentChunk("s1", 0L), new SegmentChunk("s2", 100L))); source.chunks().get(0).setLength(100); source.markSealed(); source.setHeaderLength(1000); source.setActiveChunkHandle(new TestHandle(source.lastChunk().getName(), false)); target.refresh(source); Assert.assertEquals("Unexpected getHeaderLength()", source.getHeaderLength(), target.getHeaderLength()); AssertExtensions.assertListEquals("Unexpected chunks()", source.chunks(), target.chunks(), Object::equals); Assert.assertTrue("Unexpected isSealed.", target.isSealed()); Assert.assertNull("Not expecting any ActiveSegmentHandle to be copied.", target.getActiveChunkHandle()); }
handle = new RollingSegmentHandle(segmentHandle);
public void testAddChunk() { val headerHandle = new TestHandle(HEADER_NAME, true); val h = new RollingSegmentHandle(headerHandle, DEFAULT_ROLLING_POLICY, new ArrayList<>());
public void testMainFeatures() { val headerHandle = new TestHandle(HEADER_NAME, true); val h = new RollingSegmentHandle(headerHandle, DEFAULT_ROLLING_POLICY, new ArrayList<>()); Assert.assertNull("Unexpected lastChunk for empty handle.", h.lastChunk()); Assert.assertEquals("Unexpected contents in chunks() for empty handle.", 0, h.chunks().size());