Home | History | Annotate | Download | only in test
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include <stdio.h>
     12 #include <string>
     13 #include <vector>
     14 
     15 #include "testing/gtest/include/gtest/gtest.h"
     16 #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
     17 #include "webrtc/modules/audio_coding/main/test/APITest.h"
     18 #include "webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h"
     19 #include "webrtc/modules/audio_coding/main/test/iSACTest.h"
     20 #include "webrtc/modules/audio_coding/main/test/opus_test.h"
     21 #include "webrtc/modules/audio_coding/main/test/PacketLossTest.h"
     22 #include "webrtc/modules/audio_coding/main/test/TestAllCodecs.h"
     23 #include "webrtc/modules/audio_coding/main/test/TestRedFec.h"
     24 #include "webrtc/modules/audio_coding/main/test/TestStereo.h"
     25 #include "webrtc/modules/audio_coding/main/test/TestVADDTX.h"
     26 #include "webrtc/modules/audio_coding/main/test/TwoWayCommunication.h"
     27 #include "webrtc/system_wrappers/interface/trace.h"
     28 #include "webrtc/test/testsupport/fileutils.h"
     29 #include "webrtc/test/testsupport/gtest_disable.h"
     30 
     31 using webrtc::Trace;
     32 
     33 // This parameter is used to describe how to run the tests. It is normally
     34 // set to 0, and all tests are run in quite mode.
     35 #define ACM_TEST_MODE 0
     36 
     37 TEST(AudioCodingModuleTest, TestAllCodecs) {
     38   Trace::CreateTrace();
     39   Trace::SetTraceFile((webrtc::test::OutputPath() +
     40           "acm_allcodecs_trace.txt").c_str());
     41   webrtc::TestAllCodecs(ACM_TEST_MODE).Perform();
     42   Trace::ReturnTrace();
     43 }
     44 
     45 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestEncodeDecode)) {
     46   Trace::CreateTrace();
     47   Trace::SetTraceFile((webrtc::test::OutputPath() +
     48       "acm_encodedecode_trace.txt").c_str());
     49   webrtc::EncodeDecodeTest(ACM_TEST_MODE).Perform();
     50   Trace::ReturnTrace();
     51 }
     52 
     53 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestRedFec)) {
     54   Trace::CreateTrace();
     55   Trace::SetTraceFile((webrtc::test::OutputPath() +
     56       "acm_fec_trace.txt").c_str());
     57   webrtc::TestRedFec().Perform();
     58   Trace::ReturnTrace();
     59 }
     60 
     61 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestIsac)) {
     62   Trace::CreateTrace();
     63   Trace::SetTraceFile((webrtc::test::OutputPath() +
     64       "acm_isac_trace.txt").c_str());
     65   webrtc::ISACTest(ACM_TEST_MODE).Perform();
     66   Trace::ReturnTrace();
     67 }
     68 
     69 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TwoWayCommunication)) {
     70   Trace::CreateTrace();
     71   Trace::SetTraceFile((webrtc::test::OutputPath() +
     72       "acm_twowaycom_trace.txt").c_str());
     73   webrtc::TwoWayCommunication(ACM_TEST_MODE).Perform();
     74   Trace::ReturnTrace();
     75 }
     76 
     77 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestStereo)) {
     78   Trace::CreateTrace();
     79   Trace::SetTraceFile((webrtc::test::OutputPath() +
     80       "acm_stereo_trace.txt").c_str());
     81   webrtc::TestStereo(ACM_TEST_MODE).Perform();
     82   Trace::ReturnTrace();
     83 }
     84 
     85 TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestVADDTX)) {
     86   Trace::CreateTrace();
     87   Trace::SetTraceFile((webrtc::test::OutputPath() +
     88       "acm_vaddtx_trace.txt").c_str());
     89   webrtc::TestVADDTX().Perform();
     90   Trace::ReturnTrace();
     91 }
     92 
     93 TEST(AudioCodingModuleTest, TestOpus) {
     94   Trace::CreateTrace();
     95   Trace::SetTraceFile((webrtc::test::OutputPath() +
     96       "acm_opus_trace.txt").c_str());
     97   webrtc::OpusTest().Perform();
     98   Trace::ReturnTrace();
     99 }
    100 
    101 TEST(AudioCodingModuleTest, TestPacketLoss) {
    102   Trace::CreateTrace();
    103   Trace::SetTraceFile((webrtc::test::OutputPath() +
    104       "acm_packetloss_trace.txt").c_str());
    105   webrtc::PacketLossTest(1, 10, 10, 1).Perform();
    106   Trace::ReturnTrace();
    107 }
    108 
    109 TEST(AudioCodingModuleTest, TestPacketLossBurst) {
    110   Trace::CreateTrace();
    111   Trace::SetTraceFile((webrtc::test::OutputPath() +
    112       "acm_packetloss_burst_trace.txt").c_str());
    113   webrtc::PacketLossTest(1, 10, 10, 2).Perform();
    114   Trace::ReturnTrace();
    115 }
    116 
    117 TEST(AudioCodingModuleTest, TestPacketLossStereo) {
    118   Trace::CreateTrace();
    119   Trace::SetTraceFile((webrtc::test::OutputPath() +
    120       "acm_packetloss_trace.txt").c_str());
    121   webrtc::PacketLossTest(2, 10, 10, 1).Perform();
    122   Trace::ReturnTrace();
    123 }
    124 
    125 TEST(AudioCodingModuleTest, TestPacketLossStereoBurst) {
    126   Trace::CreateTrace();
    127   Trace::SetTraceFile((webrtc::test::OutputPath() +
    128       "acm_packetloss_burst_trace.txt").c_str());
    129   webrtc::PacketLossTest(2, 10, 10, 2).Perform();
    130   Trace::ReturnTrace();
    131 }
    132 
    133 // The full API test is too long to run automatically on bots, but can be used
    134 // for offline testing. User interaction is needed.
    135 #ifdef ACM_TEST_FULL_API
    136   TEST(AudioCodingModuleTest, TestAPI) {
    137     Trace::CreateTrace();
    138     Trace::SetTraceFile((webrtc::test::OutputPath() +
    139         "acm_apitest_trace.txt").c_str());
    140     webrtc::APITest().Perform();
    141     Trace::ReturnTrace();
    142   }
    143 #endif
    144