1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

CI: Cover all kernel aac

This commit is contained in:
winlin 2019-02-03 20:58:04 +08:00
parent 2ae3440128
commit 917cb4a299
4 changed files with 128 additions and 2 deletions

1
trunk/.gitignore vendored
View file

@ -35,4 +35,5 @@
.DS_Store
srs
*.dSYM/
*.gcov

View file

@ -36,6 +36,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// we add an empty macro for upp to show the smart tips.
#define VOID
// Public all private and protected members.
#define private public
#define protected public
// the asserts of gtest:
// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual
// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2

View file

@ -30,17 +30,21 @@ using namespace std;
#include <srs_kernel_utility.hpp>
#include <srs_protocol_utility.hpp>
#include <srs_kernel_buffer.hpp>
#include <srs_kernel_aac.hpp>
#define MAX_MOCK_DATA_SIZE 1024 * 1024
MockSrsFileWriter::MockSrsFileWriter()
{
data = new char[MAX_MOCK_DATA_SIZE];
offset = -1;
offset = 0;
err = srs_success;
error_offset = 0;
}
MockSrsFileWriter::~MockSrsFileWriter()
{
srs_freep(err);
srs_freep(data);
}
@ -48,6 +52,10 @@ srs_error_t MockSrsFileWriter::open(string /*file*/)
{
offset = 0;
if (err != srs_success) {
return srs_error_copy(err);
}
return srs_success;
}
@ -68,6 +76,10 @@ int64_t MockSrsFileWriter::tellg()
srs_error_t MockSrsFileWriter::write(void* buf, size_t count, ssize_t* pnwrite)
{
if (err != srs_success) {
return srs_error_copy(err);
}
int size = srs_min(MAX_MOCK_DATA_SIZE - offset, (int)count);
memcpy(data + offset, buf, size);
@ -78,6 +90,10 @@ srs_error_t MockSrsFileWriter::write(void* buf, size_t count, ssize_t* pnwrite)
offset += size;
if (error_offset > 0 && offset >= error_offset) {
return srs_error_new(-1, "exceed offset");
}
return srs_success;
}
@ -2165,7 +2181,7 @@ VOID TEST(KernelUtility, RTMPUtils2)
}
}
VOID TEST(KernelError, CoverAll)
VOID TEST(KernelErrorTest, CoverAll)
{
if (true) {
EXPECT_TRUE(srs_is_system_control_error(ERROR_CONTROL_RTMP_CLOSE));
@ -2215,3 +2231,106 @@ VOID TEST(KernelError, CoverAll)
}
}
VOID TEST(KernelAACTest, TransmaxRTMP2AAC)
{
if (true) {
SrsAacTransmuxer m;
MockSrsFileWriter f;
EXPECT_TRUE(srs_success == m.initialize(&f));
srs_error_t err = m.write_audio(0, (char*)"", 0);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
err = m.write_audio(0, (char*)"\x0f", 1);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
err = m.write_audio(0, (char*)"\xaf", 1);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
}
if (true) {
SrsAacTransmuxer m;
MockSrsFileWriter f;
EXPECT_TRUE(srs_success == m.initialize(&f));
srs_error_t err = m.write_audio(0, (char*)"\xaf\x01\x00", 3);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
EXPECT_TRUE(!m.got_sequence_header);
}
if (true) {
SrsAacTransmuxer m;
MockSrsFileWriter f;
EXPECT_TRUE(srs_success == m.initialize(&f));
srs_error_t err = m.write_audio(0, (char*)"\xaf\x00", 2);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
err = m.write_audio(0, (char*)"\xaf\x00\x12\x10", 4);
EXPECT_TRUE(srs_success == err);
srs_freep(err);
EXPECT_TRUE(m.got_sequence_header);
EXPECT_EQ(44100, srs_aac_srates[m.aac_sample_rate]);
EXPECT_EQ(2, m.aac_channels);
err = m.write_audio(0, (char*)"\xaf\x01\x00", 3);
EXPECT_TRUE(srs_success == err);
srs_freep(err);
}
if (true) {
SrsAacTransmuxer m;
MockSrsFileWriter f;
EXPECT_TRUE(srs_success == m.initialize(&f));
srs_error_t err = m.write_audio(0, (char*)"\xaf\x00", 2);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
err = m.write_audio(0, (char*)"\xaf\x00\x12\x10", 4);
EXPECT_TRUE(srs_success == err);
srs_freep(err);
EXPECT_TRUE(m.got_sequence_header);
EXPECT_EQ(44100, srs_aac_srates[m.aac_sample_rate]);
EXPECT_EQ(2, m.aac_channels);
f.error_offset = 7;
err = m.write_audio(0, (char*)"\xaf\x01\x00", 3);
EXPECT_TRUE(srs_success != err);
srs_freep(err);
}
if (true) {
SrsAacTransmuxer m;
MockSrsFileWriter f;
EXPECT_TRUE(srs_success == m.initialize(&f));
srs_error_t err = m.write_audio(0, (char*)"\xaf\x00", 2);
EXPECT_TRUE(ERROR_AAC_DECODE_ERROR == srs_error_code(err));
srs_freep(err);
err = m.write_audio(0, (char*)"\xaf\x00\x12\x10", 4);
EXPECT_TRUE(srs_success == err);
srs_freep(err);
EXPECT_TRUE(m.got_sequence_header);
EXPECT_EQ(44100, srs_aac_srates[m.aac_sample_rate]);
EXPECT_EQ(2, m.aac_channels);
f.error_offset = 8;
err = m.write_audio(0, (char*)"\xaf\x01\x00", 3);
EXPECT_TRUE(srs_success != err);
srs_freep(err);
}
}

View file

@ -50,6 +50,8 @@ class MockSrsFileWriter : public SrsFileWriter
public:
char* data;
int offset;
srs_error_t err;
int error_offset;
public:
MockSrsFileWriter();
virtual ~MockSrsFileWriter();