use of com.ociweb.pronghorn.pipe.Pipe in project PronghornPipes by oci-pronghorn.
the class RingStreamsTest method testRingToRingOutputStream.
// TODO: RingStreams needs to be deleted and no longer used.
@Ignore
public void testRingToRingOutputStream() {
Pipe testRing = new Pipe(new PipeConfig(RawDataSchema.instance, 1 << 5, 1 << 13));
testRing.initBuffers();
int blockSize = testRing.maxVarLen;
Pipe targetRing = new Pipe(new PipeConfig(RawDataSchema.instance, 1 << 5, 1 << 13));
targetRing.initBuffers();
RingOutputStream ringOutputStream = new RingOutputStream(targetRing);
int testBits = 11;
int testSize = 1 << testBits;
int testMask = testSize - 1;
byte[] testData = new byte[testSize];
int j = testSize;
while (--j >= 0) {
testData[j] = (byte) (j & 0xFF);
}
int testIdx = 0;
int testTotal = testSize * 10;
while (testIdx < testTotal) {
int datLen = testIdx & testMask;
assertEquals(0, Pipe.contentRemaining(testRing));
assertEquals(0, Pipe.contentRemaining(targetRing));
// Write data into the the ring buffer
RingStreams.writeBytesToRing(testData, 0, datLen, testRing, blockSize);
RingStreams.writeEOF(testRing);
// Here we are reading from one ring and writing to another ring going through an OutputStream
try {
RingStreams.writeToOutputStream(testRing, ringOutputStream);
RingStreams.writeEOF(targetRing);
} catch (IOException e) {
e.printStackTrace();
fail();
}
// Now read the data off the target ring to confirm it matches
ByteArrayOutputStream baost = new ByteArrayOutputStream();
try {
RingStreams.writeToOutputStream(targetRing, baost);
} catch (IOException e) {
e.printStackTrace();
fail();
}
assertTrue("len:" + testIdx, Arrays.equals(Arrays.copyOfRange(testData, 0, datLen), baost.toByteArray()));
testIdx++;
}
}
use of com.ociweb.pronghorn.pipe.Pipe in project PronghornPipes by oci-pronghorn.
the class PipeSingleTemplateASCIITest method simpleBytesWriteRead.
@Test
public void simpleBytesWriteRead() {
// this ring is 2^7 eg 128
byte primaryRingSizeInBits = 7;
byte byteRingSizeInBits = 16;
Pipe<RawDataSchema> ring = new Pipe<RawDataSchema>(new PipeConfig(RawDataSchema.instance, 1 << primaryRingSizeInBits, 1 << byteRingSizeInBits));
ring.initBuffers();
int messageSize = RawDataSchema.FROM.fragDataSize[RawDataSchema.MSG_CHUNKEDSTREAM_1];
int varDataMax = (ring.blobMask / (ring.slabMask >> 1)) / messageSize;
int testSize = (1 << primaryRingSizeInBits) / messageSize;
populateRingBufferWithASCII(ring, varDataMax, testSize);
StringBuilder target = new StringBuilder();
char[] target2 = new char[varDataMax];
int k = testSize;
while (PipeReader.tryReadFragment(ring)) {
if (PipeReader.isNewMessage(ring)) {
target.setLength(0);
assertEquals(0, PipeReader.getMsgIdx(ring));
int expectedLength = (varDataMax * (--k)) / testSize;
String testString = buildTestString(expectedLength);
if (0 == (k & 1)) {
int actualLength = ((StringBuilder) PipeReader.readASCII(ring, RawDataSchema.MSG_CHUNKEDSTREAM_1_FIELD_BYTEARRAY_2, target)).length();
assertEquals(expectedLength, actualLength);
assertEquals(testString, target.toString());
} else {
int actualLength = PipeReader.readASCII(ring, RawDataSchema.MSG_CHUNKEDSTREAM_1_FIELD_BYTEARRAY_2, target2, 0);
assertEquals(expectedLength, actualLength);
assertTrue(testString + " vs " + new String(target2, 0, actualLength), Arrays.equals(testString.toCharArray(), Arrays.copyOfRange(target2, 0, actualLength)));
}
}
}
}
Aggregations