All Downloads are FREE. Search and download functionalities are using the official Maven repository.

test.gov.nist.javax.sdp.parser.SdpParserTest Maven / Gradle / Ivy

There is a newer version: 1.3.0-91
Show newest version
package test.gov.nist.javax.sdp.parser;

import gov.nist.javax.sdp.SessionDescriptionImpl;
import gov.nist.javax.sdp.fields.AttributeField;
import gov.nist.javax.sdp.parser.AttributeFieldParser;
import gov.nist.javax.sdp.parser.SDPAnnounceParser;

import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;

import javax.sdp.Attribute;
import javax.sdp.Connection;
import javax.sdp.MediaDescription;

import junit.framework.TestCase;

public class SdpParserTest extends TestCase {

    String sdpData[] = {
        
          "\r\n " + "v=0\r\n" + "o=4855 13760799956958020 13760799956958020" + " IN IP4 129.6.55.78\r\n" + "s=mysession session\r\n"
          + "p=+46 8 52018010\r\n" + "c=IN IP4 129.6.55.78\r\n" + "t=0 0\r\n" + "m=audio 6022 RTP/AVP 0 4 18\r\n" 
          + "a=rtpmap:0 PCMU/8000\r\n" + "a=rtpmap:4 G723/8000\r\n" + "a=rtpmap:18 G729A/8000\r\n" +
          "a=ptime:20\r\n" + "u=http://www.example.com/seminars/sdp.pdf\r\n",
          
          "v=0\r\n" + "o=root 14539767 1208 IN IP4 66.237.65.67\r\n" + "s=session\r\n"
          + "t=0 0\r\n" + "m=audio 38658 RTP/AVP 3 110 97 0 8 101\r\n" + "c=IN IP4 66.237.65.67\r\n" +
          "a=rtpmap:3 GSM/8000\r\n" + "a=rtpmap:110 speex/8000\r\n" 
          + "a=rtpmap:97 iLBC/8000\r\n" +
          "a=rtpmap:0 PCMU/8000\r\n" + "a=rtpmap:8 PCMA/8000\r\n" 
          + "a=rtpmap:101 telephone-event/8000\r\n" + "a=fmtp:101 0-16\r\n" + "a=silenceSupp:off - - - -\r\n"
          + "u=http://www.example.com/seminars/sdp.pdf\r\n",
          
          "v=0\r\n" + "o=Cisco-SIPUA 10163 1 IN IP4 192.168.0.103\r\n" + "s=SIP Call\r\n" 
          + "t=0 0\r\n" + "m=audio 27866 RTP/AVP 0 8 18 101\r\n" + "c=IN IP4 192.168.0.103\r\n" +
          "a=rtpmap:0 PCMU/8000\r\n" + "a=rtpmap:8 PCMA/8000\r\n" + "a=rtpmap:18 G729/8000\r\n" +
          "a=fmtp:18 annexb=no\r\n" + "a=rtpmap:101 telephone-event/8000\r\n" 
          + "a=fmtp:101 0-15\r\n" + "a=sendonly\r\n" 
          + "u=http://www.example.com/seminars/sdp.pdf\r\n",
         
        "v=0\r\n" + "o=- 1167770389 1167770390 IN IP4 192.168.5.242\r\n"
                + "s=Polycom IP Phone\r\n" + "c=IN IP4 192.168.5.242\r\n" + "t=0 0\r\n"
                + "a=sendonly\r\n" + "m=audio 2222 RTP/AVP 0 101\r\n"
                + "a=rtpmap:0 PCMU/8000\r\n" + "a=rtpmap:101 telephone-event/8000\r\n"
                + "u=http://www.example.com/seminars/sdp.pdf\r\n"
    };
    
    String rtcSdp = "v=0\n" + 
    		"o=- 3212632920 2 IN IP4 127.0.0.1\n" + 
    		"s=plivo\n" + 
    		"t=0 0\n" + 
    		"a=group:BUNDLE audio video\n" + 
    		"m=audio 49665 RTP/SAVPF 103 104 0 8 106 105 13 126\n" + 
    		"c=IN IP4 192.168.3.1\n" + 
    		"a=rtcp:49665 IN IP4 93.63.22.6\n" + 
    		"a=candidate:1668076467 1 udp 2113937151 192.168.1.4 54624 typ host generation 0\n" + 
    		"a=candidate:1668076467 2 udp 2113937151 192.168.1.4 54624 typ host generation 0\n" + 
    		"a=candidate:3794064647 1 udp 1677729535 93.63.22.6 49665 typ srflx generation 0\n" + 
    		"a=candidate:3794064647 2 udp 1677729535 93.63.22.6 49665 typ srflx generation 0\n" + 
    		"a=candidate:770649923 1 tcp 1509957375 192.168.1.4 64263 typ host generation 0\n" + 
    		"a=candidate:770649923 2 tcp 1509957375 192.168.1.4 64263 typ host generation 0\n" + 
    		"a=ice-ufrag:DWtY72g0C9JhcJtl\n" + 
    		"a=ice-pwd:GGGqAh3oxbFT3NfUYvAWcAH4\n" + 
    		"a=ice-options:google-ice\n" + 
    		"a=sendrecv\n" + 
    		"a=mid:audio\n" + 
    		"a=rtcp-mux\n" + 
    		"a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:i3ZhWGTXvX8vxKxtht+lCLsT/nhuyM2rgDQFInTx\n" + 
    		"a=rtpmap:103 ISAC/16000\n" + 
    		"a=rtpmap:104 ISAC/32000\n" + 
    		"a=rtpmap:0 PCMU/8000\n" + 
    		"a=rtpmap:8 PCMA/8000\n" + 
    		"a=rtpmap:106 CN/32000\n" + 
    		"a=rtpmap:105 CN/16000\n" + 
    		"a=rtpmap:13 CN/8000\n" + 
    		"a=rtpmap:126 telephone-event/8000\n" + 
    		"a=ssrc:2399224977 cname:Wq4cj1yaLwKIQPRA\n" + 
    		"a=ssrc:2399224977 mslabel:SeAfUDCzSeGWhdcVyHTVIt9HBI2acjoawxkI\n" + 
    		"a=ssrc:2399224977 label:SeAfUDCzSeGWhdcVyHTVIt9HBI2acjoawxkI00\n";
    
    public void testWebRtcSdpParser() throws Exception {
            SDPAnnounceParser parser = new SDPAnnounceParser(rtcSdp);
            SessionDescriptionImpl sessiondescription = parser.parse();
            sessiondescription.getAttribute("crypto:1");
            String nt = sessiondescription.getConnection()==null?null:sessiondescription.getConnection().getNetworkType();
            MediaDescription md = (MediaDescription) sessiondescription.getMediaDescriptions(false).get(0);
            nt = md.getConnection().getNetworkType();
            assertNotNull(nt);
            assertNotNull(md);

    }
    
    public void testAttribEquals() throws Exception {
        AttributeField f1 = new AttributeFieldParser("a=sendrecv").attributeField();
        AttributeField f2 = new AttributeFieldParser("a=sendrecv").attributeField();
        AttributeField f3 = new AttributeFieldParser("a=sendonly").attributeField();
        AttributeField f4 = new AttributeFieldParser("a=f:sendonly").attributeField();
        AttributeField f5 = new AttributeFieldParser("a=f:sendonly").attributeField();
        AttributeField f6 = new AttributeFieldParser("a=ff:sendonly").attributeField();
        f1.equals(f2); // NPE here Issue 25
        assertEquals(f1, f2);
        assertFalse(f2.equals(f3));
        assertFalse(f4.equals(f3));
        assertEquals(f5, f4);
        assertFalse(f5.equals(f6));
    }

    public void testSdpParser() throws Exception {
        for (String sdpdata : sdpData) {
            SDPAnnounceParser parser = new SDPAnnounceParser(sdpdata);
            SessionDescriptionImpl parsedDescription = parser.parse();
            SessionDescriptionImpl sessiondescription = new SessionDescriptionImpl(parsedDescription);
            Vector attrs = sessiondescription.getAttributes(false);

            if (attrs != null) {
                Attribute attrib = (Attribute) attrs.get(0);
                System.out.println("attrs = " + attrib.getName());
            }
            assertNotNull(sessiondescription.getURI().get());

            MediaDescription md = (MediaDescription) sessiondescription.getMediaDescriptions(
                    false).get(0);

            System.out.println("md attributes " + md.getAttributes(false));

            SessionDescriptionImpl sessiondescription1 = new SDPAnnounceParser(sessiondescription
                    .toString()).parse();

            System.out.println("sessionDescription1 " + sessiondescription1);

            assertNotNull(sessiondescription1);
            // Unfortunately equals is not yet implemented.
            // assertEquals("Equality check",
            // sessiondescription,sessiondescription1);
            
            // Check if SDP is serializable
            File outFile = File.createTempFile("sdpObj",".dat");
            outFile.deleteOnExit();
            ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(outFile, false));
            os.writeObject(sessiondescription1);
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy