/* * JBoss, Home of Professional Open Source * Copyright 2011, Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.protocols.ss7.m3ua.impl.parameter; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; import javolution.xml.XMLObjectReader; import javolution.xml.XMLObjectWriter; import javolution.xml.stream.XMLStreamException; import org.mobicents.protocols.ss7.m3ua.parameter.CongestedIndication.CongestionLevel; import org.mobicents.protocols.ss7.m3ua.parameter.DeregistrationStatus; import org.mobicents.protocols.ss7.m3ua.parameter.DestinationPointCode; import org.mobicents.protocols.ss7.m3ua.parameter.LocalRKIdentifier; import org.mobicents.protocols.ss7.m3ua.parameter.NetworkAppearance; import org.mobicents.protocols.ss7.m3ua.parameter.OPCList; import org.mobicents.protocols.ss7.m3ua.parameter.Parameter; import org.mobicents.protocols.ss7.m3ua.parameter.RegistrationStatus; import org.mobicents.protocols.ss7.m3ua.parameter.RoutingContext; import org.mobicents.protocols.ss7.m3ua.parameter.ServiceIndicators; import org.mobicents.protocols.ss7.m3ua.parameter.Status; import org.mobicents.protocols.ss7.m3ua.parameter.TrafficModeType; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author amit bhayani * @author kulikov */ public class ParameterTest { private ParameterFactoryImpl factory = new ParameterFactoryImpl(); private ByteBuffer out = null; public ParameterTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @BeforeMethod public void setUp() { out = ByteBuffer.allocate(8192); } @AfterMethod public void tearDown() { } private short getTag(byte[] data) { return (short) ((data[0] & 0xff) << 8 | (data[1] & 0xff)); } private short getLen(byte[] data) { return (short) ((data[2] & 0xff) << 8 | (data[3] & 0xff)); } private byte[] getValue(byte[] data) { // reduce 4 for Tag + length bytes short length = (short) (getLen(data) - 4); byte[] value = new byte[length]; System.arraycopy(data, 4, value, 0, length); return value; } @Test public void testProtocolData() throws IOException { // Trace from wireshark byte[] userData = new byte[] { 0x09, (byte) 0x80, 0x03, 0x0c, 0x15, 0x09, 0x12, 0x05, 0x00, 0x12, 0x04, 0x55, 0x16, 0x09, (byte) 0x90, 0x09, 0x12, 0x07, 0x00, 0x12, 0x04, 0x55, 0x16, 0x09, 0x00, 0x5f, 0x62, 0x5d, 0x48, 0x04, 0x3a, (byte) 0x8c, 0x10, 0x04, 0x6b, 0x3f, 0x28, 0x3d, 0x06, 0x07, 0x00, 0x11, (byte) 0x86, 0x05, 0x01, 0x01, 0x01, (byte) 0xa0, 0x32, 0x60, 0x30, (byte) 0x80, 0x02, 0x07, (byte) 0x80, (byte) 0xa1, 0x09, 0x06, 0x07, 0x04, 0x00, 0x00, 0x01, 0x00, 0x13, 0x02, (byte) 0xbe, 0x1f, 0x28, 0x1d, 0x06, 0x07, 0x04, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, (byte) 0xa0, 0x12, (byte) 0xa0, 0x10, (byte) 0x80, 0x07, (byte) 0x91, 0x55, 0x16, 0x28, (byte) 0x81, 0x00, 0x70, (byte) 0x81, 0x05, (byte) 0x91, 0x55, 0x16, 0x09, 0x00, 0x6c, 0x14, (byte) 0xa1, 0x12, 0x02, 0x01, 0x00, 0x02, 0x01, 0x3b, 0x30, 0x0a, 0x04, 0x01, 0x0f, 0x04, 0x05, 0x2a, (byte) 0xd9, (byte) 0x8c, 0x36, 0x02 }; byte[] protocolData = new byte[userData.length + 12]; System.arraycopy(userData, 0, protocolData, 12, userData.length); protocolData[0] = 0x00; protocolData[1] = 0x00; protocolData[2] = 0x1e; protocolData[3] = (byte) 0xd4; protocolData[4] = 0x00; protocolData[5] = 0x00; protocolData[6] = 0x08; protocolData[7] = (byte) 0x98; protocolData[8] = 0x03; protocolData[9] = 0x03; protocolData[10] = 0x00; protocolData[11] = 0x0f; int si = 3; int mp = 0; int ni = 3; int dpc = 2200; int opc = 7892; int sls = 15; ProtocolDataImpl p1 = (ProtocolDataImpl) factory.createProtocolData(opc, dpc, si, ni, mp, sls, userData); assertTrue(Arrays.equals(protocolData, p1.getValue())); ProtocolDataImpl p2 = (ProtocolDataImpl) factory.createProtocolData(protocolData); assertEquals(p1.getTag(), p2.getTag()); assertEquals(p1.getOpc(), p2.getOpc()); assertEquals(p1.getDpc(), p2.getDpc()); assertEquals(p2.getSI(), p2.getSI()); assertEquals(p2.getNI(), p2.getNI()); assertEquals(p2.getMP(), p2.getMP()); assertEquals(p2.getSLS(), p2.getSLS()); boolean isDataCorrect = Arrays.equals(p2.getData(), p2.getData()); assertTrue(isDataCorrect, "Data mismatch"); } /** * Test of getOpc method, of class ProtocolDataImpl. */ @Test public void testProtocolData1() throws IOException { ProtocolDataImpl p1 = (ProtocolDataImpl) factory.createProtocolData(1408, 14150, 1, 1, 0, 1, new byte[] { 1, 2, 3, 4 }); p1.write(out); byte[] data = out.array(); ProtocolDataImpl p2 = (ProtocolDataImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(p1.getTag(), p2.getTag()); assertEquals(p1.getOpc(), p2.getOpc()); assertEquals(p1.getDpc(), p2.getDpc()); assertEquals(p1.getSI(), p2.getSI()); assertEquals(p1.getNI(), p2.getNI()); assertEquals(p1.getMP(), p2.getMP()); assertEquals(p1.getSLS(), p2.getSLS()); boolean isDataCorrect = Arrays.equals(p1.getData(), p2.getData()); assertTrue(isDataCorrect, "Data mismatch"); } @Test public void testNetworkAppearance() throws IOException, XMLStreamException { NetworkAppearanceImpl np = (NetworkAppearanceImpl) factory.createNetworkAppearance(123); np.write(out); byte[] data = out.array(); NetworkAppearanceImpl np2 = (NetworkAppearanceImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(123, (int) np2.getNetApp()); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(np, "NetworkAppearanceImpl", NetworkAppearanceImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); NetworkAppearanceImpl np3 = reader.read("NetworkAppearanceImpl", NetworkAppearanceImpl.class); assertEquals(123, (int) np3.getNetApp()); assertEquals(Parameter.Network_Appearance, np3.getTag()); } @Test public void testRoutingContext() throws IOException, XMLStreamException { RoutingContextImpl rc = (RoutingContextImpl) factory.createRoutingContext(new long[] { 4294967295l }); rc.write(out); byte[] data = out.array(); RoutingContextImpl rc2 = (RoutingContextImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new long[] { 4294967295l }, rc2.getRoutingContexts())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(rc, "RoutingContextImpl", RoutingContextImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); RoutingContextImpl rc3 = reader.read("RoutingContextImpl", RoutingContextImpl.class); assertTrue(Arrays.equals(new long[] { 4294967295l }, rc3.getRoutingContexts())); assertEquals(Parameter.Routing_Context, rc3.getTag()); } @Test public void testRoutingContexts() throws IOException, XMLStreamException { RoutingContextImpl rc = (RoutingContextImpl) factory.createRoutingContext(new long[] { 123l, 4294967295l }); rc.write(out); byte[] data = out.array(); RoutingContextImpl rc2 = (RoutingContextImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new long[] { 123l, 4294967295l }, rc2.getRoutingContexts())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(rc, "RoutingContextImpl", RoutingContextImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); RoutingContextImpl rc3 = reader.read("RoutingContextImpl", RoutingContextImpl.class); assertTrue(Arrays.equals(new long[] { 123l, 4294967295l }, rc3.getRoutingContexts())); assertEquals(Parameter.Routing_Context, rc3.getTag()); } @Test public void testCorrelationId() throws IOException { CorrelationIdImpl crrId = (CorrelationIdImpl) factory.createCorrelationId(4294967295l); crrId.write(out); byte[] data = out.array(); CorrelationIdImpl crrId2 = (CorrelationIdImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(4294967295l, crrId2.getCorrelationId()); } @Test public void testAffectedPointCode() throws IOException { AffectedPointCodeImpl affectedPc = (AffectedPointCodeImpl) factory.createAffectedPointCode(new int[] { 123 }, new short[] { 0 }); affectedPc.write(out); byte[] data = out.array(); AffectedPointCodeImpl affectedPc2 = (AffectedPointCodeImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new int[] { 123 }, affectedPc2.getPointCodes())); assertTrue(Arrays.equals(new short[] { 0 }, affectedPc2.getMasks())); } @Test public void testAffectedPointCodes() throws IOException { AffectedPointCodeImpl affectedPc = (AffectedPointCodeImpl) factory.createAffectedPointCode(new int[] { 123, 456 }, new short[] { 0, 1 }); affectedPc.write(out); byte[] data = out.array(); AffectedPointCodeImpl affectedPc2 = (AffectedPointCodeImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new int[] { 123, 456 }, affectedPc2.getPointCodes())); assertTrue(Arrays.equals(new short[] { 0, 1 }, affectedPc2.getMasks())); } @Test public void testInfoString() throws IOException { InfoStringImpl infoStr = (InfoStringImpl) factory.createInfoString("Hello World"); infoStr.write(out); byte[] data = out.array(); InfoStringImpl infoStr2 = (InfoStringImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals("Hello World", infoStr2.getString()); } @Test public void testConcernedDPC() throws IOException { ConcernedDPCImpl concernedDPC = (ConcernedDPCImpl) factory.createConcernedDPC(123); concernedDPC.write(out); byte[] data = out.array(); ConcernedDPCImpl concernedDPC2 = (ConcernedDPCImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(concernedDPC.getPointCode(), concernedDPC2.getPointCode()); } @Test public void testCongestedIndication() throws IOException { CongestedIndicationImpl congIndImpl = (CongestedIndicationImpl) factory .createCongestedIndication(CongestionLevel.LEVEL2); congIndImpl.write(out); byte[] data = out.array(); CongestedIndicationImpl congIndImpl2 = (CongestedIndicationImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(congIndImpl.getCongestionLevel(), congIndImpl2.getCongestionLevel()); } @Test public void testUserCause() throws IOException { UserCauseImpl usrCa = (UserCauseImpl) factory.createUserCause(5, 0); usrCa.write(out); byte[] data = out.array(); UserCauseImpl usrCa2 = (UserCauseImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(usrCa.getUser(), usrCa2.getUser()); assertEquals(usrCa.getCause(), usrCa2.getCause()); } @Test public void testASPIdentifier() throws IOException { ASPIdentifierImpl rc = (ASPIdentifierImpl) factory.createASPIdentifier(12234445); rc.write(out); byte[] data = out.array(); ASPIdentifierImpl rc2 = (ASPIdentifierImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(12234445l, rc2.getAspId()); } @Test public void testDestinationPointCode() throws IOException, XMLStreamException { DestinationPointCodeImpl affectedPc = (DestinationPointCodeImpl) factory.createDestinationPointCode(123, (short) 0); affectedPc.write(out); byte[] data = out.array(); DestinationPointCodeImpl affectedPc2 = (DestinationPointCodeImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(123, affectedPc2.getPointCode()); assertEquals((short) 0, affectedPc2.getMask()); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(affectedPc, "DestinationPointCodeImpl", DestinationPointCodeImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); DestinationPointCodeImpl affectedPc3 = reader.read("DestinationPointCodeImpl", DestinationPointCodeImpl.class); assertEquals(123, affectedPc3.getPointCode()); assertEquals((short) 0, affectedPc3.getMask()); assertEquals(Parameter.Destination_Point_Code, affectedPc3.getTag()); } @Test public void testLocalRKIdentifier() throws IOException, XMLStreamException { LocalRKIdentifierImpl crrId = (LocalRKIdentifierImpl) factory.createLocalRKIdentifier(4294967295l); crrId.write(out); byte[] data = out.array(); LocalRKIdentifierImpl crrId2 = (LocalRKIdentifierImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(4294967295l, crrId2.getId()); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(crrId, "LocalRKIdentifierImpl", LocalRKIdentifierImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); LocalRKIdentifierImpl crrId3 = reader.read("LocalRKIdentifierImpl", LocalRKIdentifierImpl.class); assertEquals(4294967295l, crrId3.getId()); assertEquals(Parameter.Local_Routing_Key_Identifier, crrId3.getTag()); } @Test public void testOPCList() throws IOException, XMLStreamException { OPCListImpl opcList = (OPCListImpl) factory.createOPCList(new int[] { 123, 456 }, new short[] { 0, 1 }); opcList.write(out); byte[] data = out.array(); OPCListImpl opcList1 = (OPCListImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new int[] { 123, 456 }, opcList1.getPointCodes())); assertTrue(Arrays.equals(new short[] { 0, 1 }, opcList1.getMasks())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(opcList, "OPCListImpl", OPCListImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); OPCListImpl opcList3 = reader.read("OPCListImpl", OPCListImpl.class); assertTrue(Arrays.equals(new int[] { 123, 456 }, opcList3.getPointCodes())); assertTrue(Arrays.equals(new short[] { 0, 1 }, opcList3.getMasks())); assertEquals(Parameter.Originating_Point_Code_List, opcList3.getTag()); } @Test public void testServiceIndicators() throws IOException, XMLStreamException { ServiceIndicatorsImpl siList = (ServiceIndicatorsImpl) factory.createServiceIndicators(new short[] { 1, 2, 3, 4 }); siList.write(out); byte[] data = out.array(); ServiceIndicatorsImpl siList1 = (ServiceIndicatorsImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays.equals(new short[] { 1, 2, 3, 4 }, siList1.getIndicators())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(siList, "ServiceIndicatorsImpl", ServiceIndicatorsImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); ServiceIndicatorsImpl siList3 = reader.read("ServiceIndicatorsImpl", ServiceIndicatorsImpl.class); assertTrue(Arrays.equals(new short[] { 1, 2, 3, 4 }, siList3.getIndicators())); assertEquals(Parameter.Service_Indicators, siList3.getTag()); } @Test public void testTrafficModeType() throws IOException, XMLStreamException { TrafficModeTypeImpl rc = (TrafficModeTypeImpl) factory.createTrafficModeType(1); rc.write(out); byte[] data = out.array(); TrafficModeTypeImpl rc2 = (TrafficModeTypeImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(1, rc2.getMode()); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(rc, "TrafficModeTypeImpl", TrafficModeTypeImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); TrafficModeTypeImpl crrId3 = reader.read("TrafficModeTypeImpl", TrafficModeTypeImpl.class); assertEquals(1, crrId3.getMode()); assertEquals(Parameter.Traffic_Mode_Type, crrId3.getTag()); } @Test public void testRoutingKey() throws IOException, XMLStreamException { LocalRKIdentifier localRkId = factory.createLocalRKIdentifier(12); RoutingContext rc = factory.createRoutingContext(new long[] { 1 }); TrafficModeType trafMdTy = factory.createTrafficModeType(1); NetworkAppearance netApp = factory.createNetworkAppearance(1); DestinationPointCode[] dpc = new DestinationPointCode[] { factory.createDestinationPointCode(123, (short) 0), factory.createDestinationPointCode(456, (short) 1) }; ServiceIndicators[] servInds = new ServiceIndicators[] { factory.createServiceIndicators(new short[] { 1, 2 }), factory.createServiceIndicators(new short[] { 1, 2 }) }; OPCList[] opcList = new OPCList[] { factory.createOPCList(new int[] { 1, 2, 3 }, new short[] { 0, 0, 0 }), factory.createOPCList(new int[] { 4, 5, 6 }, new short[] { 0, 0, 0 }) }; RoutingKeyImpl routKey = (RoutingKeyImpl) factory.createRoutingKey(localRkId, rc, trafMdTy, netApp, dpc, servInds, opcList); routKey.write(out); byte[] data = out.array(); RoutingKeyImpl routeKey2 = (RoutingKeyImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(localRkId.getId(), routeKey2.getLocalRKIdentifier().getId()); assertTrue(Arrays.equals(routKey.getRoutingContext().getRoutingContexts(), routeKey2.getRoutingContext() .getRoutingContexts())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(routKey, "RoutingKeyImpl", RoutingKeyImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); RoutingKeyImpl routeKey3 = reader.read("RoutingKeyImpl", RoutingKeyImpl.class); assertEquals(localRkId.getId(), routeKey3.getLocalRKIdentifier().getId()); assertTrue(Arrays.equals(routKey.getRoutingContext().getRoutingContexts(), routeKey3.getRoutingContext() .getRoutingContexts())); assertEquals(Parameter.Routing_Key, routeKey3.getTag()); } @Test public void testRoutingKeySerialization1() throws IOException, XMLStreamException { LocalRKIdentifier localRkId = factory.createLocalRKIdentifier(12); RoutingContext rc = factory.createRoutingContext(new long[] { 1 }); TrafficModeType trafMdTy = factory.createTrafficModeType(1); NetworkAppearance netApp = factory.createNetworkAppearance(1); DestinationPointCode[] dpc = new DestinationPointCode[] { factory.createDestinationPointCode(123, (short) 0), factory.createDestinationPointCode(456, (short) 1) }; ServiceIndicators[] servInds = new ServiceIndicators[] { factory.createServiceIndicators(new short[] { 1, 2 }), factory.createServiceIndicators(new short[] { 1, 2 }) }; OPCList[] opcList = new OPCList[] { factory.createOPCList(new int[] { 1, 2, 3 }, new short[] { 0, 0, 0 }), factory.createOPCList(new int[] { 4, 5, 6 }, new short[] { 0, 0, 0 }) }; RoutingKeyImpl routKey = (RoutingKeyImpl) factory.createRoutingKey(null, rc, trafMdTy, null, dpc, null, null); routKey.write(out); byte[] data = out.array(); RoutingKeyImpl routeKey2 = (RoutingKeyImpl) factory.createParameter(getTag(data), getValue(data)); assertNull(routeKey2.getLocalRKIdentifier()); assertTrue(Arrays.equals(routKey.getRoutingContext().getRoutingContexts(), routeKey2.getRoutingContext() .getRoutingContexts())); // Test Serialization ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLObjectWriter writer = XMLObjectWriter.newInstance(output); writer.setIndentation("\t"); writer.write(routKey, "RoutingKeyImpl", RoutingKeyImpl.class); writer.close(); System.out.println(output.toString()); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); XMLObjectReader reader = XMLObjectReader.newInstance(input); RoutingKeyImpl routeKey3 = reader.read("RoutingKeyImpl", RoutingKeyImpl.class); assertNull(routeKey3.getLocalRKIdentifier()); assertTrue(Arrays.equals(routKey.getRoutingContext().getRoutingContexts(), routeKey3.getRoutingContext() .getRoutingContexts())); assertEquals(Parameter.Routing_Key, routeKey3.getTag()); } @Test public void testRegistrationStatus() throws IOException { RegistrationStatusImpl crrId = (RegistrationStatusImpl) factory.createRegistrationStatus(11); crrId.write(out); byte[] data = out.array(); RegistrationStatusImpl crrId2 = (RegistrationStatusImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(11, crrId2.getStatus()); } @Test public void testRegistrationResult() throws IOException { LocalRKIdentifier localRkId = factory.createLocalRKIdentifier(12); RoutingContext rc = factory.createRoutingContext(new long[] { 1 }); RegistrationStatus status = factory.createRegistrationStatus(0); RegistrationResultImpl routKey = (RegistrationResultImpl) factory.createRegistrationResult(localRkId, status, rc); routKey.write(out); byte[] data = out.array(); RegistrationResultImpl rc2 = (RegistrationResultImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(localRkId.getId(), rc2.getLocalRKIdentifier().getId()); assertTrue(Arrays .equals(routKey.getRoutingContext().getRoutingContexts(), rc2.getRoutingContext().getRoutingContexts())); assertEquals(status.getStatus(), rc2.getRegistrationStatus().getStatus()); } @Test public void testDeregistrationStatus() throws IOException { DeregistrationStatusImpl crrId = (DeregistrationStatusImpl) factory.createDeregistrationStatus(5); crrId.write(out); byte[] data = out.array(); DeregistrationStatusImpl crrId2 = (DeregistrationStatusImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(5, crrId2.getStatus()); } @Test public void testDeregistrationResult() throws IOException { RoutingContext rc = factory.createRoutingContext(new long[] { 1 }); DeregistrationStatus status = factory.createDeregistrationStatus(0); DeregistrationResultImpl routKey = (DeregistrationResultImpl) factory.createDeregistrationResult(rc, status); routKey.write(out); byte[] data = out.array(); DeregistrationResultImpl rc2 = (DeregistrationResultImpl) factory.createParameter(getTag(data), getValue(data)); assertTrue(Arrays .equals(routKey.getRoutingContext().getRoutingContexts(), rc2.getRoutingContext().getRoutingContexts())); assertEquals(status.getStatus(), rc2.getDeregistrationStatus().getStatus()); } @Test public void testStatus() throws IOException { Status routKey = (Status) factory.createStatus(1, 4); ((StatusImpl) routKey).write(out); byte[] data = out.array(); StatusImpl rc2 = (StatusImpl) factory.createParameter(getTag(data), getValue(data)); assertEquals(routKey.getType(), rc2.getType()); assertEquals(routKey.getInfo(), rc2.getInfo()); } }