void ActiveMQObjectMessageMarshallerTest::testTightMarshal() { ActiveMQObjectMessageMarshaller marshaller; Properties props; OpenWireFormat openWireFormat( props ); // Configure for this test. openWireFormat.setVersion( 5 ); openWireFormat.setTightEncodingEnabled( true ); ActiveMQObjectMessage outCommand; ActiveMQObjectMessage inCommand; Pointer<ProducerId> producerId( new ProducerId() ); producerId->setConnectionId( "ConnectionId" ); producerId->setSessionId( 123 ); producerId->setValue( 42 ); Pointer<MessageId> messageId( new MessageId() ); messageId->setBrokerSequenceId( 1 ); messageId->setProducerSequenceId( 3 ); messageId->setProducerId( producerId ); outCommand.setMessageId( messageId ); try { // Marshal the dataStructure to a byte array. ByteArrayOutputStream baos; DataOutputStream dataOut( &baos ); // Phase 1 - count the size int size = 1; BooleanStream bs; size += marshaller.tightMarshal1( &openWireFormat, &outCommand, &bs ); size += bs.marshalledSize(); // Phase 2 - marshal dataOut.writeByte( outCommand.getDataStructureType() ); bs.marshal( &dataOut ); marshaller.tightMarshal2( &openWireFormat, &outCommand, &dataOut, &bs ); // Now read it back in and make sure it's all right. std::pair<const unsigned char*, int> array = baos.toByteArray(); ByteArrayInputStream bais( array.first, array.second, true ); DataInputStream dataIn( &bais ); unsigned char dataType = dataIn.readByte(); CPPUNIT_ASSERT( dataType == outCommand.getDataStructureType() ); bs.clear(); bs.unmarshal( &dataIn ); marshaller.tightUnmarshal( &openWireFormat, &inCommand, &dataIn, &bs ); CPPUNIT_ASSERT( inCommand.equals( &outCommand ) == true ); } catch( ActiveMQException& e ) { e.printStackTrace(); CPPUNIT_ASSERT( false ); } catch( ... ) { CPPUNIT_ASSERT( false ); } }
void BaseDataStreamMarshallerTest::testTightMarshal() { SimpleDataStructureMarshaller* simpleMarshaller = new SimpleDataStructureMarshaller(); ComplexDataStructureMarshaller* complexMarshaller = new ComplexDataStructureMarshaller(); Properties props; OpenWireFormat openWireFormat(props); openWireFormat.addMarshaller( simpleMarshaller ); openWireFormat.addMarshaller( complexMarshaller ); // Marshal the dataStructure to a byte array. ByteArrayOutputStream baos; DataOutputStream dataOut( &baos ); // Phase 1 - count the size int size = 1; BooleanStream bs; size += complexMarshaller->tightMarshal1( &openWireFormat, dataStructure, &bs ); size += bs.marshalledSize(); // Phase 2 - marshal dataOut.writeByte( dataStructure->getDataStructureType() ); bs.marshal( &dataOut ); complexMarshaller->tightMarshal2( &openWireFormat, dataStructure, &dataOut, &bs ); // Now read it back in and make sure it's all right. std::pair<const unsigned char*, int> array = baos.toByteArray(); ByteArrayInputStream bais( array.first, array.second ); DataInputStream dataIn( &bais ); unsigned char dataType = dataIn.readByte(); CPPUNIT_ASSERT( dataType == dataStructure->getDataStructureType() ); ComplexDataStructure ds; bs.clear(); bs.unmarshal( &dataIn ); complexMarshaller->tightUnmarshal( &openWireFormat, &ds, &dataIn, &bs ); CPPUNIT_ASSERT_EQUAL( dataStructure->boolValue, ds.boolValue ); CPPUNIT_ASSERT( ds.cachedChild != NULL ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->boolValue, ds.cachedChild->boolValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->charValue, ds.cachedChild->charValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->shortValue, ds.cachedChild->shortValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->intValue, ds.cachedChild->intValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->longValue1, ds.cachedChild->longValue1 ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->longValue2, ds.cachedChild->longValue2 ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->longValue3, ds.cachedChild->longValue3 ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->longValue4, ds.cachedChild->longValue4 ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->longValue5, ds.cachedChild->longValue5 ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->floatValue, ds.cachedChild->floatValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->doubleValue, ds.cachedChild->doubleValue ); CPPUNIT_ASSERT_EQUAL( dataStructure->cachedChild->stringValue, ds.cachedChild->stringValue ); delete [] array.first; }
void MessageIdMarshallerTest::testTightMarshal() { MessageIdMarshaller marshaller; Properties props; OpenWireFormat openWireFormat( props ); // Configure for this test. openWireFormat.setVersion( 9 ); openWireFormat.setTightEncodingEnabled( true ); MessageId outCommand; MessageId inCommand; try { // Marshal the dataStructure to a byte array. ByteArrayOutputStream baos; DataOutputStream dataOut( &baos ); // Phase 1 - count the size int size = 1; BooleanStream bs; size += marshaller.tightMarshal1( &openWireFormat, &outCommand, &bs ); size += bs.marshalledSize(); // Phase 2 - marshal dataOut.writeByte( outCommand.getDataStructureType() ); bs.marshal( &dataOut ); marshaller.tightMarshal2( &openWireFormat, &outCommand, &dataOut, &bs ); // Now read it back in and make sure it's all right. std::pair<const unsigned char*, int> array = baos.toByteArray(); ByteArrayInputStream bais( array.first, array.second, true ); DataInputStream dataIn( &bais ); unsigned char dataType = dataIn.readByte(); CPPUNIT_ASSERT( dataType == outCommand.getDataStructureType() ); bs.clear(); bs.unmarshal( &dataIn ); marshaller.tightUnmarshal( &openWireFormat, &inCommand, &dataIn, &bs ); CPPUNIT_ASSERT( inCommand.equals( (DataStructure*) &outCommand ) == true ); } catch( ActiveMQException& e ) { e.printStackTrace(); CPPUNIT_ASSERT( false ); } catch( ... ) { CPPUNIT_ASSERT( false ); } }