Java Code Examples for org.apache.flink.testutils.serialization.types.Util#randomRecords()
The following examples show how to use
org.apache.flink.testutils.serialization.types.Util#randomRecords() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RecordWriterTest.java From flink with Apache License 2.0 | 5 votes |
/** * Tests that records are broadcast via {@link RecordWriter#broadcastEmit(IOReadableWritable)}. */ @Test public void testBroadcastEmitRecord() throws Exception { final int numberOfChannels = 4; final int bufferSize = 32; final int numValues = 8; final int serializationLength = 4; @SuppressWarnings("unchecked") final Queue<BufferConsumer>[] queues = new Queue[numberOfChannels]; for (int i = 0; i < numberOfChannels; i++) { queues[i] = new ArrayDeque<>(); } final TestPooledBufferProvider bufferProvider = new TestPooledBufferProvider(Integer.MAX_VALUE, bufferSize); final ResultPartitionWriter partitionWriter = new CollectingPartitionWriter(queues, bufferProvider); final RecordWriter<SerializationTestType> writer = createRecordWriter(partitionWriter); final RecordDeserializer<SerializationTestType> deserializer = new SpillingAdaptiveSpanningRecordDeserializer<>( new String[]{ tempFolder.getRoot().getAbsolutePath() }); final ArrayDeque<SerializationTestType> serializedRecords = new ArrayDeque<>(); final Iterable<SerializationTestType> records = Util.randomRecords(numValues, SerializationTestTypeFactory.INT); for (SerializationTestType record : records) { serializedRecords.add(record); writer.broadcastEmit(record); } final int numRequiredBuffers = numValues / (bufferSize / (4 + serializationLength)); if (isBroadcastWriter) { assertEquals(numRequiredBuffers, bufferProvider.getNumberOfCreatedBuffers()); } else { assertEquals(numRequiredBuffers * numberOfChannels, bufferProvider.getNumberOfCreatedBuffers()); } for (int i = 0; i < numberOfChannels; i++) { assertEquals(numRequiredBuffers, queues[i].size()); verifyDeserializationResults(queues[i], deserializer, serializedRecords.clone(), numRequiredBuffers, numValues); } }
Example 2
Source File: RecordWriterTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
/** * The results of emitting records via BroadcastPartitioner or broadcasting records directly are the same, * that is all the target channels can receive the whole outputs. * * @param isBroadcastEmit whether using {@link RecordWriter#broadcastEmit(IOReadableWritable)} or not */ private void emitRecordWithBroadcastPartitionerOrBroadcastEmitRecord(boolean isBroadcastEmit) throws Exception { final int numberOfChannels = 4; final int bufferSize = 32; final int numValues = 8; final int serializationLength = 4; @SuppressWarnings("unchecked") final Queue<BufferConsumer>[] queues = new Queue[numberOfChannels]; for (int i = 0; i < numberOfChannels; i++) { queues[i] = new ArrayDeque<>(); } final TestPooledBufferProvider bufferProvider = new TestPooledBufferProvider(Integer.MAX_VALUE, bufferSize); final ResultPartitionWriter partitionWriter = new CollectingPartitionWriter(queues, bufferProvider); final ChannelSelector selector = new OutputEmitter(ShipStrategyType.BROADCAST, 0); final RecordWriter<SerializationTestType> writer = RecordWriter.createRecordWriter(partitionWriter, selector, 0, "test"); final RecordDeserializer<SerializationTestType> deserializer = new SpillingAdaptiveSpanningRecordDeserializer<>( new String[]{ tempFolder.getRoot().getAbsolutePath() }); final ArrayDeque<SerializationTestType> serializedRecords = new ArrayDeque<>(); final Iterable<SerializationTestType> records = Util.randomRecords(numValues, SerializationTestTypeFactory.INT); for (SerializationTestType record : records) { serializedRecords.add(record); if (isBroadcastEmit) { writer.broadcastEmit(record); } else { writer.emit(record); } } final int requiredBuffers = numValues / (bufferSize / (4 + serializationLength)); for (int i = 0; i < numberOfChannels; i++) { assertEquals(requiredBuffers, queues[i].size()); final ArrayDeque<SerializationTestType> expectedRecords = serializedRecords.clone(); int assertRecords = 0; for (int j = 0; j < requiredBuffers; j++) { Buffer buffer = buildSingleBuffer(queues[i].remove()); deserializer.setNextBuffer(buffer); assertRecords += DeserializationUtils.deserializeRecords(expectedRecords, deserializer); } Assert.assertEquals(numValues, assertRecords); } }
Example 3
Source File: RecordWriterTest.java From flink with Apache License 2.0 | 4 votes |
/** * The results of emitting records via BroadcastPartitioner or broadcasting records directly are the same, * that is all the target channels can receive the whole outputs. * * @param isBroadcastEmit whether using {@link RecordWriter#broadcastEmit(IOReadableWritable)} or not */ private void emitRecordWithBroadcastPartitionerOrBroadcastEmitRecord(boolean isBroadcastEmit) throws Exception { final int numberOfChannels = 4; final int bufferSize = 32; final int numValues = 8; final int serializationLength = 4; @SuppressWarnings("unchecked") final Queue<BufferConsumer>[] queues = new Queue[numberOfChannels]; for (int i = 0; i < numberOfChannels; i++) { queues[i] = new ArrayDeque<>(); } final TestPooledBufferProvider bufferProvider = new TestPooledBufferProvider(Integer.MAX_VALUE, bufferSize); final ResultPartitionWriter partitionWriter = new CollectingPartitionWriter(queues, bufferProvider); final ChannelSelector selector = new OutputEmitter(ShipStrategyType.BROADCAST, 0); final RecordWriter<SerializationTestType> writer = new RecordWriterBuilder() .setChannelSelector(selector) .setTimeout(0) .build(partitionWriter); final RecordDeserializer<SerializationTestType> deserializer = new SpillingAdaptiveSpanningRecordDeserializer<>( new String[]{ tempFolder.getRoot().getAbsolutePath() }); final ArrayDeque<SerializationTestType> serializedRecords = new ArrayDeque<>(); final Iterable<SerializationTestType> records = Util.randomRecords(numValues, SerializationTestTypeFactory.INT); for (SerializationTestType record : records) { serializedRecords.add(record); if (isBroadcastEmit) { writer.broadcastEmit(record); } else { writer.emit(record); } } final int requiredBuffers = numValues / (bufferSize / (4 + serializationLength)); for (int i = 0; i < numberOfChannels; i++) { assertEquals(requiredBuffers, queues[i].size()); final ArrayDeque<SerializationTestType> expectedRecords = serializedRecords.clone(); int assertRecords = 0; for (int j = 0; j < requiredBuffers; j++) { Buffer buffer = buildSingleBuffer(queues[i].remove()); deserializer.setNextBuffer(buffer); assertRecords += DeserializationUtils.deserializeRecords(expectedRecords, deserializer); } Assert.assertEquals(numValues, assertRecords); } }
Example 4
Source File: BroadcastRecordWriterTest.java From flink with Apache License 2.0 | 4 votes |
/** * Tests the number of requested buffers and results are correct in the case of switching * modes between {@link BroadcastRecordWriter#broadcastEmit(IOReadableWritable)} and * {@link BroadcastRecordWriter#randomEmit(IOReadableWritable)}. */ @Test public void testBroadcastMixedRandomEmitRecord() throws Exception { final int numberOfChannels = 4; final int numberOfRecords = 8; final int bufferSize = 32; @SuppressWarnings("unchecked") final Queue<BufferConsumer>[] queues = new Queue[numberOfChannels]; for (int i = 0; i < numberOfChannels; i++) { queues[i] = new ArrayDeque<>(); } final TestPooledBufferProvider bufferProvider = new TestPooledBufferProvider(Integer.MAX_VALUE, bufferSize); final ResultPartitionWriter partitionWriter = new CollectingPartitionWriter(queues, bufferProvider); final BroadcastRecordWriter<SerializationTestType> writer = new BroadcastRecordWriter<>(partitionWriter, 0, "test"); final RecordDeserializer<SerializationTestType> deserializer = new SpillingAdaptiveSpanningRecordDeserializer<>( new String[]{ tempFolder.getRoot().getAbsolutePath() }); // generate the configured number of int values as global record set final Iterable<SerializationTestType> records = Util.randomRecords(numberOfRecords, SerializationTestTypeFactory.INT); // restore the corresponding record set for every input channel final Map<Integer, ArrayDeque<SerializationTestType>> serializedRecords = new HashMap<>(); for (int i = 0; i < numberOfChannels; i++) { serializedRecords.put(i, new ArrayDeque<>()); } // every record in global set would both emit into one random channel and broadcast to all the channels int index = 0; for (SerializationTestType record : records) { int randomChannel = index++ % numberOfChannels; writer.randomEmit(record, randomChannel); serializedRecords.get(randomChannel).add(record); writer.broadcastEmit(record); for (int i = 0; i < numberOfChannels; i++) { serializedRecords.get(i).add(record); } } final int numberOfCreatedBuffers = bufferProvider.getNumberOfCreatedBuffers(); // verify the expected number of requested buffers, and it would always request a new buffer while random emitting assertEquals(numberOfRecords, numberOfCreatedBuffers); for (int i = 0; i < numberOfChannels; i++) { // every channel would queue the number of above crated buffers assertEquals(numberOfRecords, queues[i].size()); final int excessRandomRecords = i < numberOfRecords % numberOfChannels ? 1 : 0; final int numberOfRandomRecords = numberOfRecords / numberOfChannels + excessRandomRecords; final int numberOfTotalRecords = numberOfRecords + numberOfRandomRecords; // verify the data correctness in every channel queue verifyDeserializationResults( queues[i], deserializer, serializedRecords.get(i), numberOfCreatedBuffers, numberOfTotalRecords); } }