private TcpDeserializationExceptionEvent doDeserialize(AbstractByteArraySerializer deser, String expectedMessage, byte[] data, int mms) { final AtomicReference<TcpDeserializationExceptionEvent> event = new AtomicReference<TcpDeserializationExceptionEvent>(); class Publisher implements ApplicationEventPublisher { @Override public void publishEvent(ApplicationEvent anEvent) { event.set((TcpDeserializationExceptionEvent) anEvent); } @Override public void publishEvent(Object event) { } } Publisher publisher = new Publisher(); ByteArrayInputStream bais = new ByteArrayInputStream(data); deser.setApplicationEventPublisher(publisher); deser.setMaxMessageSize(mms); try { deser.deserialize(bais); fail("expected exception"); } catch (Exception e) { assertNotNull(event.get()); assertSame(e, event.get().getCause()); assertThat(e.getMessage(), containsString(expectedMessage)); } return event.get(); }
@Test public void testShort2() throws Exception { AbstractByteArraySerializer serializer = new ByteArrayLengthHeaderSerializer( ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_SHORT); serializer.setMaxMessageSize(0x10000); ByteArrayOutputStream bos = new ByteArrayOutputStream(); serializer.serialize(testFFFF.getBytes(), bos); byte[] bytes = bos.toByteArray(); assertEquals(0xff, bytes[0] & 0xff); assertEquals(0xff, bytes[1] & 0xff); ByteArrayInputStream bis = new ByteArrayInputStream(bytes); bytes = serializer.deserialize(bis); assertEquals(testFFFF, new String(bytes)); testFFFF += "x"; try { serializer.serialize(testFFFF.getBytes(), bos); fail("Expected overflow"); } catch (IllegalArgumentException e) { } }
codec.setMaxMessageSize(this.maxMessageSize);
codec.setMaxMessageSize(this.maxMessageSize);
codec.setMaxMessageSize(this.maxMessageSize);
codec.setMaxMessageSize(this.maxMessageSize);