use of com.ociweb.pronghorn.pipe.stream.StreamingVisitorReader in project PronghornPipes by oci-pronghorn.
the class StreamingConsumerTest method matchingTestPositive.
@Test
public void matchingTestPositive() {
Pipe<MessageSchemaDynamic> ring1 = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), 1 << primaryRingSizeInBits, 1 << byteRingSizeInBits));
Pipe<MessageSchemaDynamic> ring2 = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), 1 << primaryRingSizeInBits, 1 << byteRingSizeInBits));
ring1.initBuffers();
ring2.initBuffers();
int commonSeed = 100;
StreamingWriteVisitorGenerator swvg1 = new StreamingWriteVisitorGenerator(FROM, new Random(commonSeed), 30, 30);
StreamingVisitorWriter svw1 = new StreamingVisitorWriter(ring1, swvg1);
StreamingWriteVisitorGenerator swvg2 = new StreamingWriteVisitorGenerator(FROM, new Random(commonSeed), 30, 30);
StreamingVisitorWriter svw2 = new StreamingVisitorWriter(ring2, swvg2);
svw1.startup();
svw2.startup();
svw1.run();
svw2.run();
svw1.run();
svw2.run();
// confirm that both rings contain the exact same thing
assertTrue(Arrays.equals(Pipe.primaryBuffer(ring1), Pipe.primaryBuffer(ring2)));
assertTrue(Arrays.equals(Pipe.byteBuffer(ring1), Pipe.byteBuffer(ring2)));
// now use matcher to confirm the same.
StreamingReadVisitorMatcher srvm = new StreamingReadVisitorMatcher(ring1);
// new StreamingReadVisitorDebugDelegate(srvm) );
StreamingVisitorReader svr = new StreamingVisitorReader(ring2, srvm);
svr.startup();
try {
svr.run();
} catch (Throwable t) {
t.printStackTrace();
fail(t.getMessage());
}
svr.shutdown();
svw1.shutdown();
svw2.shutdown();
}
use of com.ociweb.pronghorn.pipe.stream.StreamingVisitorReader in project PronghornPipes by oci-pronghorn.
the class StreamingConsumerTest method sequenceFragmentWriteRead.
@Test
public void sequenceFragmentWriteRead() {
Pipe<MessageSchemaDynamic> ring = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), 1 << primaryRingSizeInBits, 1 << byteRingSizeInBits));
ring.initBuffers();
int testSize = 5;
// in this method we write two sequence members but only record the count after writing the members
populateRingBufferWithSequence(ring, testSize);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
StreamingReadVisitor visitor = new StreamingReadVisitorToJSON(ps);
// new StreamingReadVisitorDebugDelegate(visitor) );
StreamingVisitorReader reader = new StreamingVisitorReader(ring, visitor);
// ring is fully populated so we should not need to call this run again
while (Pipe.contentRemaining(ring) > 0) {
reader.run();
}
ps.close();
String results = new String(baos.toByteArray());
// spot check the produced JSON
assertTrue(results, results.indexOf("\"TruckId\":10") > 0);
assertTrue(results, results.indexOf("{\"AThing\":7}") > 0);
assertTrue(results, results.indexOf("{\"JustOneMoreQuestion\":42}") > 0);
}
use of com.ociweb.pronghorn.pipe.stream.StreamingVisitorReader in project PronghornPipes by oci-pronghorn.
the class StreamingConsumerTest method matchingTestNegative.
@Test
public void matchingTestNegative() {
Pipe<MessageSchemaDynamic> ring1 = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), 1 << primaryRingSizeInBits, 1 << byteRingSizeInBits));
Pipe<MessageSchemaDynamic> ring2 = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), primaryRingSizeInBits, byteRingSizeInBits));
ring1.initBuffers();
ring2.initBuffers();
int commonSeed = 300;
StreamingWriteVisitorGenerator swvg1 = new StreamingWriteVisitorGenerator(FROM, new Random(commonSeed), 30, 30);
StreamingVisitorWriter svw1 = new StreamingVisitorWriter(ring1, swvg1);
StreamingWriteVisitorGenerator swvg2 = new StreamingWriteVisitorGenerator(FROM, new Random(commonSeed + 1), 30, 30);
StreamingVisitorWriter svw2 = new StreamingVisitorWriter(ring2, swvg2);
svw1.startup();
svw2.startup();
svw1.run();
svw2.run();
svw1.run();
svw2.run();
StreamingReadVisitorMatcher srvm = new StreamingReadVisitorMatcher(ring1);
StreamingVisitorReader svr = new StreamingVisitorReader(ring2, srvm);
svr.startup();
try {
svr.run();
fail("expected exception");
} catch (Throwable t) {
// success
// t.printStackTrace();
}
svr.shutdown();
svw1.shutdown();
svw2.shutdown();
}
use of com.ociweb.pronghorn.pipe.stream.StreamingVisitorReader in project PronghornPipes by oci-pronghorn.
the class StreamingConsumerTest method generatorTest.
@Test
public void generatorTest() {
final int seed = 2;
// hard coded value that comes from this seed 2
final long aLongValue = 2945688134060370505l;
// hard coded value that comes from this seed 2
final int aNegIntValue = -29;
Pipe<MessageSchemaDynamic> ring = new Pipe<MessageSchemaDynamic>(new PipeConfig<MessageSchemaDynamic>(new MessageSchemaDynamic(FROM), 50, 30));
ring.initBuffers();
StreamingWriteVisitorGenerator swvg = new StreamingWriteVisitorGenerator(FROM, new Random(seed), 30, 30);
StreamingVisitorWriter svw = new StreamingVisitorWriter(ring, swvg);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// PrintStream ps = System.out;
StreamingReadVisitor visitor = new StreamingReadVisitorToJSON(ps);
// , new StreamingReadVisitorDebugDelegate(visitor) );
StreamingVisitorReader reader = new StreamingVisitorReader(ring, visitor);
svw.startup();
reader.startup();
do {
svw.run();
} while (!svw.isAtBreakPoint());
reader.run();
svw.shutdown();
reader.shutdown();
byte[] byteArray = baos.toByteArray();
assertTrue("No JSON was produced", byteArray.length > 0);
String results = new String(byteArray);
// spot check the produced JSON
assertTrue(results, results.indexOf("\"Trucks\":") > 0);
assertTrue(results, results.indexOf("{\"Squad\":") > 0);
assertTrue(results, results.indexOf(Long.toString(aLongValue)) > 0);
assertTrue(results, results.indexOf(Integer.toString(aNegIntValue)) > 0);
}
Aggregations