Search in sources :

Example 41 with Pipe

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++;
    }
}
Also used : PipeConfig(com.ociweb.pronghorn.pipe.PipeConfig) RingOutputStream(com.ociweb.pronghorn.pipe.stream.RingOutputStream) Pipe(com.ociweb.pronghorn.pipe.Pipe) IOException(java.io.IOException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Ignore(org.junit.Ignore)

Example 42 with Pipe

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)));
            }
        }
    }
}
Also used : PipeConfig(com.ociweb.pronghorn.pipe.PipeConfig) Pipe(com.ociweb.pronghorn.pipe.Pipe) Test(org.junit.Test)

Aggregations

Pipe (com.ociweb.pronghorn.pipe.Pipe)42 PipeConfig (com.ociweb.pronghorn.pipe.PipeConfig)19 Test (org.junit.Test)18 ByteArrayOutputStream (java.io.ByteArrayOutputStream)8 Ignore (org.junit.Ignore)7 MessageSchemaDynamic (com.ociweb.pronghorn.pipe.MessageSchemaDynamic)5 IOException (java.io.IOException)5 StreamingVisitorReader (com.ociweb.pronghorn.pipe.stream.StreamingVisitorReader)4 StreamingVisitorWriter (com.ociweb.pronghorn.pipe.stream.StreamingVisitorWriter)4 StreamingWriteVisitorGenerator (com.ociweb.pronghorn.pipe.stream.StreamingWriteVisitorGenerator)4 Random (java.util.Random)4 RingInputStream (com.ociweb.pronghorn.pipe.stream.RingInputStream)3 JSONVisitor (com.ociweb.pronghorn.util.parse.JSONVisitor)3 JSONVisitorCapture (com.ociweb.pronghorn.util.parse.JSONVisitorCapture)3 NetPayloadSchema (com.ociweb.pronghorn.network.schema.NetPayloadSchema)2 DataOutputBlobWriter (com.ociweb.pronghorn.pipe.DataOutputBlobWriter)2 RawDataSchema (com.ociweb.pronghorn.pipe.RawDataSchema)2 RingOutputStream (com.ociweb.pronghorn.pipe.stream.RingOutputStream)2 StreamingReadVisitor (com.ociweb.pronghorn.pipe.stream.StreamingReadVisitor)2 StreamingReadVisitorMatcher (com.ociweb.pronghorn.pipe.stream.StreamingReadVisitorMatcher)2