From 16050008172832d8dbe847940457e74e4f5669e4 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 14 May 2019 08:13:27 +0800 Subject: [PATCH 1/5] Covert Kernel File reader/writer. 3.0.52 --- README.md | 1 + trunk/src/core/srs_core.hpp | 2 +- trunk/src/kernel/srs_kernel_error.hpp | 2 +- trunk/src/kernel/srs_kernel_file.cpp | 21 ++++----- trunk/src/kernel/srs_kernel_file.hpp | 1 + trunk/src/utest/srs_utest_kernel.cpp | 67 +++++++++++++++++++++++++-- 6 files changed, 78 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 5e0242fe8..5113eb005 100755 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ Please select according to languages: ### V3 changes +* v3.0, 2019-05-14, Covert Kernel File reader/writer. 3.0.52 * v3.0, 2019-04-30, Refine typo in files. 3.0.51 * v3.0, 2019-04-25, Upgrade http-parser from 2.1 to 2.9.2 and cover it. 3.0.50 * v3.0, 2019-04-22, Refine in time unit. 3.0.49 diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index a59348f40..5f7e22218 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -27,7 +27,7 @@ // The version config. #define VERSION_MAJOR 3 #define VERSION_MINOR 0 -#define VERSION_REVISION 51 +#define VERSION_REVISION 52 // The macros generated by configure script. #include diff --git a/trunk/src/kernel/srs_kernel_error.hpp b/trunk/src/kernel/srs_kernel_error.hpp index 1875ed033..3427dc4a0 100644 --- a/trunk/src/kernel/srs_kernel_error.hpp +++ b/trunk/src/kernel/srs_kernel_error.hpp @@ -79,7 +79,7 @@ #define ERROR_SYSTEM_PID_SET_FILE_INFO 1040 #define ERROR_SYSTEM_FILE_ALREADY_OPENED 1041 #define ERROR_SYSTEM_FILE_OPENE 1042 -#define ERROR_SYSTEM_FILE_CLOSE 1043 +//#define ERROR_SYSTEM_FILE_CLOSE 1043 #define ERROR_SYSTEM_FILE_READ 1044 #define ERROR_SYSTEM_FILE_WRITE 1045 #define ERROR_SYSTEM_FILE_EOF 1046 diff --git a/trunk/src/kernel/srs_kernel_file.cpp b/trunk/src/kernel/srs_kernel_file.cpp index 0f7625bd9..7857c72ae 100644 --- a/trunk/src/kernel/srs_kernel_file.cpp +++ b/trunk/src/kernel/srs_kernel_file.cpp @@ -39,6 +39,7 @@ using namespace std; // For utest to mock it. _srs_open_t _srs_open_fn = ::open; _srs_write_t _srs_write_fn = ::write; +_srs_read_t _srs_read_fn = ::read; _srs_lseek_t _srs_lseek_fn = ::lseek; SrsFileWriter::SrsFileWriter() @@ -191,7 +192,7 @@ srs_error_t SrsFileReader::open(string p) return srs_error_new(ERROR_SYSTEM_FILE_ALREADY_OPENED, "file %s already opened", path.c_str()); } - if ((fd = ::open(p.c_str(), O_RDONLY)) < 0) { + if ((fd = _srs_open_fn(p.c_str(), O_RDONLY)) < 0) { return srs_error_new(ERROR_SYSTEM_FILE_OPENE, "open file %s failed", p.c_str()); } @@ -209,9 +210,7 @@ void SrsFileReader::close() } if (::close(fd) < 0) { - ret = ERROR_SYSTEM_FILE_CLOSE; - srs_error("close file %s failed. ret=%d", path.c_str(), ret); - return; + srs_warn("close file %s failed. ret=%d", path.c_str(), ret); } fd = -1; @@ -225,26 +224,26 @@ bool SrsFileReader::is_open() int64_t SrsFileReader::tellg() { - return (int64_t)::lseek(fd, 0, SEEK_CUR); + return (int64_t)_srs_lseek_fn(fd, 0, SEEK_CUR); } void SrsFileReader::skip(int64_t size) { - off_t r0 = ::lseek(fd, (off_t)size, SEEK_CUR); + off_t r0 = _srs_lseek_fn(fd, (off_t)size, SEEK_CUR); srs_assert(r0 != -1); } int64_t SrsFileReader::seek2(int64_t offset) { - return (int64_t)::lseek(fd, (off_t)offset, SEEK_SET); + return (int64_t)_srs_lseek_fn(fd, (off_t)offset, SEEK_SET); } int64_t SrsFileReader::filesize() { int64_t cur = tellg(); - int64_t size = (int64_t)::lseek(fd, 0, SEEK_END); + int64_t size = (int64_t)_srs_lseek_fn(fd, 0, SEEK_END); - off_t r0 = ::lseek(fd, (off_t)cur, SEEK_SET); + off_t r0 = _srs_lseek_fn(fd, (off_t)cur, SEEK_SET); srs_assert(r0 != -1); return size; @@ -256,7 +255,7 @@ srs_error_t SrsFileReader::read(void* buf, size_t count, ssize_t* pnread) ssize_t nread; // TODO: FIXME: use st_read. - if ((nread = ::read(fd, buf, count)) < 0) { + if ((nread = _srs_read_fn(fd, buf, count)) < 0) { return srs_error_new(ERROR_SYSTEM_FILE_READ, "read from file %s failed", path.c_str()); } @@ -273,7 +272,7 @@ srs_error_t SrsFileReader::read(void* buf, size_t count, ssize_t* pnread) srs_error_t SrsFileReader::lseek(off_t offset, int whence, off_t* seeked) { - off_t sk = ::lseek(fd, offset, whence); + off_t sk = _srs_lseek_fn(fd, offset, whence); if (sk < 0) { return srs_error_new(ERROR_SYSTEM_FILE_SEEK, "seek %v failed", (int)sk); } diff --git a/trunk/src/kernel/srs_kernel_file.hpp b/trunk/src/kernel/srs_kernel_file.hpp index acf2d5d0e..2a2d2842e 100644 --- a/trunk/src/kernel/srs_kernel_file.hpp +++ b/trunk/src/kernel/srs_kernel_file.hpp @@ -111,6 +111,7 @@ public: // For utest to mock it. typedef int (*_srs_open_t)(const char* path, int oflag, ...); typedef ssize_t (*_srs_write_t)(int fildes, const void* buf, size_t nbyte); +typedef ssize_t (*_srs_read_t)(int fildes, void* buf, size_t nbyte); typedef off_t (*_srs_lseek_t)(int fildes, off_t offset, int whence); #endif diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index 3c61e58c3..fbb2438dd 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -2974,6 +2974,7 @@ VOID TEST(KernelFileTest, FileWriteReader) // Mock the system call hooks. extern _srs_open_t _srs_open_fn; extern _srs_write_t _srs_write_fn; +extern _srs_read_t _srs_read_fn; extern _srs_lseek_t _srs_lseek_fn; int mock_open(const char* /*path*/, int /*oflag*/, ...) { @@ -2984,6 +2985,10 @@ ssize_t mock_write(int /*fildes*/, const void* /*buf*/, size_t /*nbyte*/) { return -1; } +ssize_t mock_read(int /*fildes*/, void* /*buf*/, size_t /*nbyte*/) { + return -1; +} + off_t mock_lseek(int /*fildes*/, off_t /*offset*/, int /*whence*/) { return -1; } @@ -2993,18 +2998,23 @@ class MockSystemIO private: _srs_open_t oo; _srs_write_t ow; + _srs_read_t _or; _srs_lseek_t os; public: - MockSystemIO(_srs_open_t o = NULL, _srs_write_t w = NULL, _srs_lseek_t s = NULL) { + MockSystemIO(_srs_open_t o = NULL, _srs_write_t w = NULL, _srs_read_t r = NULL, _srs_lseek_t s = NULL) { oo = _srs_open_fn; ow = _srs_write_fn; os = _srs_lseek_fn; + _or = _srs_read_fn; if (o) { _srs_open_fn = o; } if (w) { _srs_write_fn = w; } + if (r) { + _srs_read_fn = r; + } if (s) { _srs_lseek_fn = s; } @@ -3016,13 +3026,16 @@ public: if (ow) { _srs_write_fn = ow; } + if (_or) { + _srs_read_fn = _or; + } if (os) { _srs_lseek_fn = os; } } }; -VOID TEST(KernelFileTest, WriteSpecialCase) +VOID TEST(KernelFileWriterTest, WriteSpecialCase) { srs_error_t err; @@ -3098,7 +3111,7 @@ VOID TEST(KernelFileTest, WriteSpecialCase) HELPER_EXPECT_FAILED(f.writev(iovs, 3, NULL)); } if (true) { - MockSystemIO _mockio(NULL, NULL, mock_lseek); + MockSystemIO _mockio(NULL, NULL, NULL, mock_lseek); SrsFileWriter f; HELPER_EXPECT_SUCCESS(f.open("/dev/null")); @@ -3106,6 +3119,54 @@ VOID TEST(KernelFileTest, WriteSpecialCase) } } +VOID TEST(KernelFileReaderTest, WriteSpecialCase) +{ + srs_error_t err; + + // Should fail when open multiple times. + if (true) { + SrsFileReader f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + HELPER_EXPECT_FAILED(f.open("/dev/null")); + } + + // Always fail. + if (true) { + MockSystemIO _mockio(mock_open); + SrsFileReader f; + HELPER_EXPECT_FAILED(f.open("/dev/null")); + HELPER_EXPECT_FAILED(f.open("/dev/null")); + } + + // Should ok for lseek. + if (true) { + SrsFileWriter f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + + off_t seeked = 0; + HELPER_EXPECT_SUCCESS(f.lseek(0, SEEK_CUR, &seeked)); + EXPECT_EQ(0, seeked); + } + + // Always fail. + if (true) { + MockSystemIO _mockio(NULL, NULL, mock_read); + SrsFileReader f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + + ssize_t nn = 0; + char buf[16]; + HELPER_EXPECT_FAILED(f.read(buf, sizeof(buf), &nn)); + } + if (true) { + MockSystemIO _mockio(NULL, NULL, NULL, mock_lseek); + SrsFileReader f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + + HELPER_EXPECT_FAILED(f.lseek(0, 0, NULL)); + } +} + VOID TEST(KernelFLVTest, CoverAll) { if (true) { From 13c4498e1185502a3e52b96f25edb6da4acb5073 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 14 May 2019 08:17:39 +0800 Subject: [PATCH 2/5] Cover mp4 header. --- trunk/src/utest/srs_utest_kernel.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index fbb2438dd..571f5b3ff 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -3797,6 +3797,21 @@ VOID TEST(KernelTSTest, CoverTransmuxer) } } +VOID TEST(KernelMP4Test, CoverMP4All) +{ + if (true) { + SrsMp4ElstEntry e; + EXPECT_EQ(0, e.media_time); + EXPECT_EQ(0, e.segment_duration); + } + + if (true) { + SrsMp4CttsEntry e; + EXPECT_EQ(0, e.sample_count); + EXPECT_EQ(0, e.sample_offset); + } +} + VOID TEST(KernelMP4Test, CoverMP4Codec) { SrsMp4Encoder enc; From c10671cbb37ec4f4d9df9bca22f8b7422a7fe7d0 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 14 May 2019 08:24:43 +0800 Subject: [PATCH 3/5] Cover all kernel file. --- trunk/src/kernel/srs_kernel_file.cpp | 5 +++-- trunk/src/kernel/srs_kernel_file.hpp | 1 + trunk/src/utest/srs_utest_kernel.cpp | 29 ++++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/trunk/src/kernel/srs_kernel_file.cpp b/trunk/src/kernel/srs_kernel_file.cpp index 7857c72ae..88bee7e68 100644 --- a/trunk/src/kernel/srs_kernel_file.cpp +++ b/trunk/src/kernel/srs_kernel_file.cpp @@ -41,6 +41,7 @@ _srs_open_t _srs_open_fn = ::open; _srs_write_t _srs_write_fn = ::write; _srs_read_t _srs_read_fn = ::read; _srs_lseek_t _srs_lseek_fn = ::lseek; +_srs_close_t _srs_close_fn = ::close; SrsFileWriter::SrsFileWriter() { @@ -98,7 +99,7 @@ void SrsFileWriter::close() return; } - if (::close(fd) < 0) { + if (_srs_close_fn(fd) < 0) { srs_warn("close file %s failed", path.c_str()); } fd = -1; @@ -209,7 +210,7 @@ void SrsFileReader::close() return; } - if (::close(fd) < 0) { + if (_srs_close_fn(fd) < 0) { srs_warn("close file %s failed. ret=%d", path.c_str(), ret); } fd = -1; diff --git a/trunk/src/kernel/srs_kernel_file.hpp b/trunk/src/kernel/srs_kernel_file.hpp index 2a2d2842e..c38b72672 100644 --- a/trunk/src/kernel/srs_kernel_file.hpp +++ b/trunk/src/kernel/srs_kernel_file.hpp @@ -113,6 +113,7 @@ typedef int (*_srs_open_t)(const char* path, int oflag, ...); typedef ssize_t (*_srs_write_t)(int fildes, const void* buf, size_t nbyte); typedef ssize_t (*_srs_read_t)(int fildes, void* buf, size_t nbyte); typedef off_t (*_srs_lseek_t)(int fildes, off_t offset, int whence); +typedef int (*_srs_close_t)(int fildes); #endif diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index 571f5b3ff..c98c4cd44 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -2976,6 +2976,7 @@ extern _srs_open_t _srs_open_fn; extern _srs_write_t _srs_write_fn; extern _srs_read_t _srs_read_fn; extern _srs_lseek_t _srs_lseek_fn; +extern _srs_close_t _srs_close_fn; int mock_open(const char* /*path*/, int /*oflag*/, ...) { return -1; @@ -2993,6 +2994,10 @@ off_t mock_lseek(int /*fildes*/, off_t /*offset*/, int /*whence*/) { return -1; } +int mock_close(int /*fildes*/) { + return -1; +} + class MockSystemIO { private: @@ -3000,12 +3005,14 @@ private: _srs_write_t ow; _srs_read_t _or; _srs_lseek_t os; + _srs_close_t oc; public: - MockSystemIO(_srs_open_t o = NULL, _srs_write_t w = NULL, _srs_read_t r = NULL, _srs_lseek_t s = NULL) { + MockSystemIO(_srs_open_t o = NULL, _srs_write_t w = NULL, _srs_read_t r = NULL, _srs_lseek_t s = NULL, _srs_close_t c = NULL) { oo = _srs_open_fn; ow = _srs_write_fn; os = _srs_lseek_fn; _or = _srs_read_fn; + oc = _srs_close_fn; if (o) { _srs_open_fn = o; } @@ -3018,6 +3025,9 @@ public: if (s) { _srs_lseek_fn = s; } + if (c) { + _srs_close_fn = c; + } } virtual ~MockSystemIO() { if (oo) { @@ -3032,6 +3042,9 @@ public: if (os) { _srs_lseek_fn = os; } + if (oc) { + _srs_close_fn = oc; + } } }; @@ -3117,6 +3130,12 @@ VOID TEST(KernelFileWriterTest, WriteSpecialCase) HELPER_EXPECT_FAILED(f.lseek(0, 0, NULL)); } + if (true) { + MockSystemIO _mockio(NULL, NULL, NULL, NULL, mock_close); + SrsFileWriter f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + f.close(); + } } VOID TEST(KernelFileReaderTest, WriteSpecialCase) @@ -3140,7 +3159,7 @@ VOID TEST(KernelFileReaderTest, WriteSpecialCase) // Should ok for lseek. if (true) { - SrsFileWriter f; + SrsFileReader f; HELPER_EXPECT_SUCCESS(f.open("/dev/null")); off_t seeked = 0; @@ -3165,6 +3184,12 @@ VOID TEST(KernelFileReaderTest, WriteSpecialCase) HELPER_EXPECT_FAILED(f.lseek(0, 0, NULL)); } + if (true) { + MockSystemIO _mockio(NULL, NULL, NULL, NULL, mock_close); + SrsFileReader f; + HELPER_EXPECT_SUCCESS(f.open("/dev/null")); + f.close(); + } } VOID TEST(KernelFLVTest, CoverAll) From 58561b9f767f3b91fff265081df58f3f980f590f Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 14 May 2019 08:40:22 +0800 Subject: [PATCH 4/5] Refine utest --- trunk/src/kernel/srs_kernel_mp4.hpp | 17 +++++++---- trunk/src/utest/srs_utest.hpp | 8 +++++ trunk/src/utest/srs_utest_kernel.cpp | 39 +++++++++++++++++++++++++ trunk/src/utest/srs_utest_service.cpp | 42 ++++++++++++--------------- 4 files changed, 77 insertions(+), 29 deletions(-) diff --git a/trunk/src/kernel/srs_kernel_mp4.hpp b/trunk/src/kernel/srs_kernel_mp4.hpp index 593eb56b8..6a3e58966 100644 --- a/trunk/src/kernel/srs_kernel_mp4.hpp +++ b/trunk/src/kernel/srs_kernel_mp4.hpp @@ -151,8 +151,9 @@ enum SrsMp4BoxBrand }; // The context to dump. -struct SrsMp4DumpContext +class SrsMp4DumpContext { +public: int level; bool summary; @@ -467,8 +468,9 @@ enum SrsMp4TrunFlags // Entry for trun. // ISO_IEC_14496-12-base-format-2012.pdf, page 69 -struct SrsMp4TrunEntry +class SrsMp4TrunEntry { +public: SrsMp4FullBox* owner; uint32_t sample_duration; @@ -864,7 +866,7 @@ public: // 8.6.6 Edit List Box // ISO_IEC_14496-12-base-format-2012.pdf, page 55 -struct SrsMp4ElstEntry +class SrsMp4ElstEntry { public: // An integer that specifies the duration of this edit segment in units of the timescale @@ -1514,8 +1516,9 @@ public: // 8.6.1.2 Decoding Time to Sample Box (stts), for Audio/Video. // ISO_IEC_14496-12-base-format-2012.pdf, page 48 -struct SrsMp4SttsEntry +class SrsMp4SttsEntry { +public: // An integer that counts the number of consecutive samples that have the given // duration. uint32_t sample_count; @@ -1561,8 +1564,9 @@ public: // 8.6.1.3 Composition Time to Sample Box (ctts), for Video. // ISO_IEC_14496-12-base-format-2012.pdf, page 49 -struct SrsMp4CttsEntry +class SrsMp4CttsEntry { +public: // An integer that counts the number of consecutive samples that have the given offset. uint32_t sample_count; // uint32_t for version=0 @@ -1638,8 +1642,9 @@ public: // 8.7.4 Sample To Chunk Box (stsc), for Audio/Video. // ISO_IEC_14496-12-base-format-2012.pdf, page 58 -struct SrsMp4StscEntry +class SrsMp4StscEntry { +public: // An integer that gives the index of the first chunk in this run of chunks that share the // same samples-per-chunk and sample-description-index; the index of the first chunk in a track has the // value 1 (the first_chunk field in the first record of this box has the value 1, identifying that the first diff --git a/trunk/src/utest/srs_utest.hpp b/trunk/src/utest/srs_utest.hpp index fb96274e6..58e239046 100644 --- a/trunk/src/utest/srs_utest.hpp +++ b/trunk/src/utest/srs_utest.hpp @@ -34,12 +34,20 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include "gtest/gtest.h" +#include #include // we add an empty macro for upp to show the smart tips. #define VOID +// Temporary disk config. +std::string _srs_tmp_file_prefix = "/tmp/srs-utest-"; +// Temporary network config. +std::string _srs_tmp_host = "127.0.0.1"; +int _srs_tmp_port = 11935; +srs_utime_t _srs_tmp_timeout = (100 * SRS_UTIME_MILLISECONDS); + // For errors. #define HELPER_EXPECT_SUCCESS(x) EXPECT_TRUE(srs_success == (err = x)); srs_freep(err) #define HELPER_EXPECT_FAILED(x) EXPECT_TRUE(srs_success != (err = x)); srs_freep(err) diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index c98c4cd44..87a1a721e 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -3192,6 +3192,45 @@ VOID TEST(KernelFileReaderTest, WriteSpecialCase) } } +class MockFileRemover +{ +private: + string f; +public: + MockFileRemover(string p) { + f = p; + } + virtual ~MockFileRemover() { + if (f != "") { + ::unlink(f.c_str()); + } + } +}; + +VOID TEST(KernelFileTest, ReadWriteCase) +{ + srs_error_t err; + + string filepath = _srs_tmp_file_prefix + "kernel-file-read-write-case"; + MockFileRemover _mfr(filepath); + + SrsFileWriter w; + HELPER_EXPECT_SUCCESS(w.open(filepath.c_str())); + + SrsFileReader r; + HELPER_EXPECT_SUCCESS(r.open(filepath.c_str())); + + ssize_t nn = 0; + HELPER_EXPECT_SUCCESS(w.write((void*)"Hello", 5, &nn)); + EXPECT_EQ(5, nn); + + char buf[16] = {0}; + HELPER_EXPECT_SUCCESS(r.read(buf, sizeof(buf), &nn)); + EXPECT_EQ(5, nn); + + EXPECT_STREQ("Hello", buf); +} + VOID TEST(KernelFLVTest, CoverAll) { if (true) { diff --git a/trunk/src/utest/srs_utest_service.cpp b/trunk/src/utest/srs_utest_service.cpp index c113d17b1..ef47c5942 100644 --- a/trunk/src/utest/srs_utest_service.cpp +++ b/trunk/src/utest/srs_utest_service.cpp @@ -44,10 +44,6 @@ VOID TEST(ServiceTimeTest, TimeUnit) EXPECT_FALSE(srs_is_never_timeout(0)); } -#define MOCK_LISTEN_HOST "127.0.0.1" -#define MOCK_LISTEN_PORT 11935 -#define MOCK_TCP_TIMEOUT (100 * SRS_UTIME_MILLISECONDS) - class MockTcpHandler : public ISrsTcpHandler { private: @@ -80,7 +76,7 @@ VOID TEST(TCPServerTest, PingPong) srs_error_t err; if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); EXPECT_TRUE(l.fd() > 0); @@ -88,10 +84,10 @@ VOID TEST(TCPServerTest, PingPong) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); EXPECT_TRUE(h.fd != NULL); @@ -99,10 +95,10 @@ VOID TEST(TCPServerTest, PingPong) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -118,10 +114,10 @@ VOID TEST(TCPServerTest, PingPong) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -139,10 +135,10 @@ VOID TEST(TCPServerTest, PingPong) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -171,10 +167,10 @@ VOID TEST(TCPServerTest, PingPongWithTimeout) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -190,10 +186,10 @@ VOID TEST(TCPServerTest, PingPongWithTimeout) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -209,10 +205,10 @@ VOID TEST(TCPServerTest, PingPongWithTimeout) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -234,10 +230,10 @@ VOID TEST(TCPServerTest, WritevIOVC) srs_error_t err; if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; @@ -261,10 +257,10 @@ VOID TEST(TCPServerTest, WritevIOVC) if (true) { MockTcpHandler h; - SrsTcpListener l(&h, MOCK_LISTEN_HOST, MOCK_LISTEN_PORT); + SrsTcpListener l(&h, _srs_tmp_host, _srs_tmp_port); HELPER_EXPECT_SUCCESS(l.listen()); - SrsTcpClient c(MOCK_LISTEN_HOST, MOCK_LISTEN_PORT, MOCK_TCP_TIMEOUT); + SrsTcpClient c(_srs_tmp_host, _srs_tmp_port, _srs_tmp_timeout); HELPER_EXPECT_SUCCESS(c.connect()); SrsStSocket skt; From 77cc14860829f42cb7718aa60ad3ccf5a1ba1873 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 14 May 2019 08:42:46 +0800 Subject: [PATCH 5/5] Refine utest --- trunk/src/utest/srs_utest.cpp | 7 +++++++ trunk/src/utest/srs_utest.hpp | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/trunk/src/utest/srs_utest.cpp b/trunk/src/utest/srs_utest.cpp index 9b0a0200e..03ec996bc 100644 --- a/trunk/src/utest/srs_utest.cpp +++ b/trunk/src/utest/srs_utest.cpp @@ -29,6 +29,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include +// Temporary disk config. +std::string _srs_tmp_file_prefix = "/tmp/srs-utest-"; +// Temporary network config. +std::string _srs_tmp_host = "127.0.0.1"; +int _srs_tmp_port = 11935; +srs_utime_t _srs_tmp_timeout = (100 * SRS_UTIME_MILLISECONDS); + // kernel module. ISrsLog* _srs_log = new MockEmptyLog(SrsLogLevelDisabled); ISrsThreadContext* _srs_context = new ISrsThreadContext(); diff --git a/trunk/src/utest/srs_utest.hpp b/trunk/src/utest/srs_utest.hpp index 58e239046..c18f178ae 100644 --- a/trunk/src/utest/srs_utest.hpp +++ b/trunk/src/utest/srs_utest.hpp @@ -42,11 +42,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define VOID // Temporary disk config. -std::string _srs_tmp_file_prefix = "/tmp/srs-utest-"; +extern std::string _srs_tmp_file_prefix; // Temporary network config. -std::string _srs_tmp_host = "127.0.0.1"; -int _srs_tmp_port = 11935; -srs_utime_t _srs_tmp_timeout = (100 * SRS_UTIME_MILLISECONDS); +extern std::string _srs_tmp_host; +extern int _srs_tmp_port; +extern srs_utime_t _srs_tmp_timeout; // For errors. #define HELPER_EXPECT_SUCCESS(x) EXPECT_TRUE(srs_success == (err = x)); srs_freep(err)