@Test
  public void testHalfDuplex() throws Exception {
    channel1.updateMode(ConnectionMode.RECV_ONLY);
    channel2.updateMode(ConnectionMode.SEND_ONLY);
    source1.activate();
    source2.activate();
    analyzer1.activate();
    audioMixer1.start();
    audioMixer2.start();

    Thread.sleep(5000);

    source1.deactivate();
    source2.deactivate();
    analyzer1.deactivate();
    audioMixer1.stop();
    audioMixer2.stop();

    int s1[] = analyzer1.getSpectra();
    int s2[] = analyzer2.getSpectra();

    System.out.println("rx-channel1: " + channel1.getPacketsReceived());
    System.out.println("tx-channel1: " + channel1.getPacketsTransmitted());

    System.out.println("rx-channel2: " + channel2.getPacketsReceived());
    System.out.println("tx-channel2: " + channel2.getPacketsTransmitted());

    if (s2.length != 0 || s1.length != 1) {
      fcount++;
    } else {
      System.out.println("Passed");
    }

    assertEquals(0, fcount);
    assertEquals(50, s1[0], 5);
  }
  @Test
  public void testTransmission() throws Exception {
    source1.activate();
    analyzer1.activate();
    audioMixer1.start();

    source2.start();
    analyzer2.activate();
    audioMixer2.start();

    Thread.sleep(5000);

    analyzer1.deactivate();
    analyzer2.deactivate();
    source1.deactivate();
    source2.deactivate();
    audioMixer1.stop();
    audioMixer2.stop();

    int s1[] = analyzer1.getSpectra();
    int s2[] = analyzer2.getSpectra();

    System.out.println("rx-channel1: " + channel1.getPacketsReceived());
    System.out.println("tx-channel1: " + channel1.getPacketsTransmitted());

    System.out.println("rx-channel2: " + channel2.getPacketsReceived());
    System.out.println("tx-channel2: " + channel2.getPacketsTransmitted());

    if (s1.length != 1 || s2.length != 1) {
      System.out.println("Failure ,s1:" + s1.length + ",s2:" + s2.length);
      fcount++;
    } else {
      System.out.println("Passed");
    }

    assertEquals(1, s1.length);
    assertEquals(1, s2.length);
    assertEquals(50, s1[0], 5);
    assertEquals(100, s2[0], 5);
  }
Beispiel #3
0
  /** Test of setOtherParty method, of class LocalConnectionImpl. */
  @Test
  public void testTransmission() throws Exception {
    sine1.activate();
    sine2.activate();
    sine3.activate();
    sine4.activate();

    analyzer1.activate();
    analyzer2.activate();
    analyzer3.activate();
    analyzer4.activate();

    Connection connection1 = endpoint1.createConnection(ConnectionType.RTP, false);
    Connection connection3 = endpoint3.createConnection(ConnectionType.RTP, false);

    connection1.generateOffer(false);
    connection1.setMode(ConnectionMode.SEND_ONLY);

    connection3.setOtherParty(new Text(connection1.getLocalDescriptor()));
    connection1.setOtherParty(new Text(connection3.getLocalDescriptor()));

    // make inactive first

    connection3.setMode(ConnectionMode.CONFERENCE);
    connection1.setMode(ConnectionMode.CONFERENCE);

    Connection connection12 = endpoint1.createConnection(ConnectionType.LOCAL, false);
    Connection connection2 = endpoint2.createConnection(ConnectionType.LOCAL, false);

    connection12.setOtherParty(connection2);

    // initial mode
    connection12.setMode(ConnectionMode.SEND_RECV);

    // working mode
    connection12.setMode(ConnectionMode.CONFERENCE);
    connection2.setMode(ConnectionMode.SEND_RECV);

    Connection connection34 = endpoint3.createConnection(ConnectionType.LOCAL, false);
    Connection connection4 = endpoint4.createConnection(ConnectionType.LOCAL, false);

    connection34.setOtherParty(connection4);
    connection34.setMode(ConnectionMode.CONFERENCE);

    connection4.setMode(ConnectionMode.SEND_RECV);
    Thread.sleep(100);
    connection4.setMode(ConnectionMode.SEND_RECV);

    Thread.sleep(5000);

    sine1.deactivate();
    sine2.deactivate();
    sine3.deactivate();
    sine4.deactivate();

    analyzer1.deactivate();
    analyzer2.deactivate();
    analyzer3.deactivate();
    analyzer4.deactivate();

    SpectraAnalyzer a1 = (SpectraAnalyzer) analyzer1;
    SpectraAnalyzer a2 = (SpectraAnalyzer) analyzer2;
    SpectraAnalyzer a3 = (SpectraAnalyzer) analyzer3;
    SpectraAnalyzer a4 = (SpectraAnalyzer) analyzer4;

    int[] s1 = a1.getSpectra();
    int[] s2 = a2.getSpectra();
    int[] s3 = a3.getSpectra();
    int[] s4 = a4.getSpectra();

    endpoint1.deleteConnection(connection1);
    endpoint1.deleteConnection(connection12);

    endpoint2.deleteConnection(connection2);

    endpoint3.deleteConnection(connection3);
    endpoint3.deleteConnection(connection34);

    endpoint4.deleteConnection(connection4);

    printSpectra("E1", s1);
    printSpectra("E2", s2);
    printSpectra("E3", s3);
    printSpectra("E4", s4);
    System.out.println("===============");

    assertEquals(3, s2.length);
    assertEquals(3, s4.length);
  }
  @Before
  public void setUp() throws Exception {
    AudioFormat pcma = FormatFactory.createAudioFormat("pcma", 8000, 8, 1);
    Formats fmts = new Formats();
    fmts.add(pcma);

    Formats dstFormats = new Formats();
    dstFormats.add(FormatFactory.createAudioFormat("LINEAR", 8000, 16, 1));

    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Encoder");
    dspFactory.addCodec("org.mobicents.media.server.impl.dsp.audio.g711.alaw.Decoder");

    dsp11 = dspFactory.newProcessor();
    dsp12 = dspFactory.newProcessor();

    dsp21 = dspFactory.newProcessor();
    dsp22 = dspFactory.newProcessor();

    // use default clock
    clock = new WallClock();
    rtpClock1 = new RtpClock(clock);
    rtpClock2 = new RtpClock(clock);
    oobClock1 = new RtpClock(clock);
    oobClock2 = new RtpClock(clock);

    // create single thread scheduler
    mediaScheduler = new PriorityQueueScheduler();
    mediaScheduler.setClock(clock);
    mediaScheduler.start();

    udpManager = new UdpManager(scheduler);
    scheduler.start();
    udpManager.start();

    channelsManager = new ChannelsManager(udpManager);
    channelsManager.setScheduler(mediaScheduler);

    source1 = new Sine(mediaScheduler);
    source1.setFrequency(100);

    source2 = new Sine(mediaScheduler);
    source2.setFrequency(50);

    analyzer1 = new SpectraAnalyzer("analyzer", mediaScheduler);
    analyzer2 = new SpectraAnalyzer("analyzer", mediaScheduler);

    this.statistics1 = new RtpStatistics(rtpClock1);
    this.statistics2 = new RtpStatistics(rtpClock2);

    channel1 = channelsManager.getRtpChannel(statistics1, rtpClock1, oobClock1);
    channel1.updateMode(ConnectionMode.SEND_RECV);
    channel1.setOutputDsp(dsp11);
    channel1.setOutputFormats(fmts);
    channel1.setInputDsp(dsp12);

    channel2 = channelsManager.getRtpChannel(statistics2, rtpClock2, oobClock2);
    channel2.updateMode(ConnectionMode.SEND_RECV);
    channel2.setOutputDsp(dsp21);
    channel2.setOutputFormats(fmts);
    channel2.setInputDsp(dsp22);

    channel1.bind(false);
    channel2.bind(false);

    channel1.setRemotePeer(new InetSocketAddress("127.0.0.1", channel2.getLocalPort()));
    channel2.setRemotePeer(new InetSocketAddress("127.0.0.1", channel1.getLocalPort()));

    channel1.setFormatMap(AVProfile.audio);
    channel2.setFormatMap(AVProfile.audio);

    audioMixer1 = new AudioMixer(mediaScheduler);
    audioMixer2 = new AudioMixer(mediaScheduler);

    component1 = new AudioComponent(1);
    component1.addInput(source1.getAudioInput());
    component1.addOutput(analyzer1.getAudioOutput());
    component1.updateMode(true, true);

    audioMixer1.addComponent(component1);
    audioMixer1.addComponent(channel1.getAudioComponent());

    component2 = new AudioComponent(2);
    component2.addInput(source2.getAudioInput());
    component2.addOutput(analyzer2.getAudioOutput());
    component2.updateMode(true, true);

    audioMixer2.addComponent(component2);
    audioMixer2.addComponent(channel2.getAudioComponent());
  }