mirror of
https://github.com/ossrs/srs.git
synced 2025-02-14 12:21:55 +00:00
add gest framework for utest, build success.
This commit is contained in:
parent
338e129a29
commit
1ccddf4cfc
5 changed files with 134 additions and 28 deletions
|
@ -422,6 +422,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv
|
|||
* nginx v1.5.0: 139524 lines <br/>
|
||||
|
||||
### History
|
||||
* v1.0, 2014-03-04, add gest framework for utest, build success.
|
||||
* v1.0, 2014-03-02, add wiki [srs-librtmp](https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLibrtmp), [srs for arm](https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLinuxArm), [product](https://github.com/winlinvip/simple-rtmp-server/wiki/Product)
|
||||
* v1.0, 2014-03-02, srs-librtmp, client publish/play library like librtmp.
|
||||
* v1.0, 2014-03-01, modularity, extract core/kernel/rtmp/app/main module.
|
||||
|
|
|
@ -5,19 +5,22 @@
|
|||
# $SRS_MAKEFILE the makefile name. ie. Makefile
|
||||
#
|
||||
# $APP_NAME the app name to output. ie. srs_utest
|
||||
# $MODULE_DIR the src dir of utest code. ie. src/utest
|
||||
|
||||
UTEST_OBJS=${SRS_OBJS}/utest
|
||||
FILE=${UTEST_OBJS}/${SRS_MAKEFILE}
|
||||
FILE=${SRS_OBJS}/utest/${SRS_MAKEFILE}
|
||||
# create dir for Makefile
|
||||
mkdir -p ${SRS_OBJS}/utest
|
||||
|
||||
# dirs relative to objs/utest
|
||||
GTEST_DIR=../gtest
|
||||
UTEST_SRC=../../src/utest
|
||||
UTEST_APP=../${APP_NAME}
|
||||
|
||||
mkdir -p ${UTEST_OBJS}
|
||||
# the prefix to generate the objs/utest/Makefile
|
||||
# dirs relative to current dir(objs/utest), it's trunk/objs/utest
|
||||
# trunk of srs, which contains the src dir, relative to objs/utest, it's trunk
|
||||
SRS_TRUNK_PREFIX=../..
|
||||
# gest dir, relative to objs/utest, it's trunk/objs/gtest
|
||||
GTEST_DIR=${SRS_TRUNK_PREFIX}/${SRS_OBJS}/gtest
|
||||
|
||||
cat << END > ${FILE}
|
||||
# generate *.a, *.o at current dir.
|
||||
# user must run make the ${SRS_OBJS}/utest dir
|
||||
# at the same dir of Makefile.
|
||||
|
||||
# A sample Makefile for building Google Test and using it in user
|
||||
# tests. Please tweak it to suit your environment and project. You
|
||||
|
@ -48,7 +51,7 @@ CXXFLAGS += -g -Wall -Wextra -O0
|
|||
|
||||
# All tests produced by this Makefile. Remember to add new tests you
|
||||
# created to the list.
|
||||
TESTS = ${UTEST_APP}
|
||||
TESTS = ${SRS_TRUNK_PREFIX}/${SRS_OBJS}/${APP_NAME}
|
||||
|
||||
# All Google Test headers. Usually you shouldn't change this
|
||||
# definition.
|
||||
|
@ -90,14 +93,86 @@ gtest_main.a : gtest-all.o gtest_main.o
|
|||
# gtest_main.a, depending on whether it defines its own main()
|
||||
# function.
|
||||
|
||||
srs_utest.o : ${UTEST_SRC}/srs_utest.cpp
|
||||
\$(CXX) \$(CPPFLAGS) \$(CXXFLAGS) -I${UTEST_SRC} -c ${UTEST_SRC}/srs_utest.cpp -o \$@
|
||||
SRS_UTEST_OBJS = srs_utest.o
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
# SRS(Simple RTMP Server) utest section
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
|
||||
${UTEST_APP} : \$(SRS_UTEST_OBJS) gtest_main.a
|
||||
\$(CXX) \$(CPPFLAGS) \$(CXXFLAGS) -lpthread \$^ -o \$@
|
||||
END
|
||||
|
||||
#####################################################################################
|
||||
# Includes, the include dir.
|
||||
echo "# Includes, the include dir." >> ${FILE}
|
||||
#
|
||||
# current module header files
|
||||
echo -n "SRS_UTEST_INC = -I${SRS_TRUNK_PREFIX}/${MODULE_DIR} " >> ${FILE}
|
||||
#
|
||||
# depends module header files
|
||||
for item in ${MODULE_DEPENDS[*]}; do
|
||||
DEP_INCS_NAME="${item}_INCS"
|
||||
echo -n "-I${SRS_TRUNK_PREFIX}/${!DEP_INCS_NAME} " >> ${FILE}
|
||||
done
|
||||
#
|
||||
# depends library header files
|
||||
for item in ${ModuleLibIncs[*]}; do
|
||||
echo -n "-I${SRS_TRUNK_PREFIX}/${item} " >> ${FILE}
|
||||
done
|
||||
echo "" >> ${FILE}; echo "" >> ${FILE}
|
||||
|
||||
#####################################################################################
|
||||
# Depends, the depends objects
|
||||
echo "# Depends, the depends objects" >> ${FILE}
|
||||
#
|
||||
# current module header files
|
||||
echo -n "SRS_UTEST_DEPS = " >> ${FILE}
|
||||
for item in ${MODULE_OBJS[*]}; do
|
||||
FILE_NAME=${item%.*}
|
||||
echo -n "${SRS_TRUNK_PREFIX}/${SRS_OBJS}/${FILE_NAME}.o " >> ${FILE}
|
||||
done
|
||||
echo "" >> ${FILE}; echo "" >> ${FILE}
|
||||
#
|
||||
echo "# Depends, utest header files" >> ${FILE}
|
||||
DEPS_NAME="UTEST_DEPS"
|
||||
echo -n "${DEPS_NAME} = " >> ${FILE}
|
||||
for item in ${MODULE_FILES[*]}; do
|
||||
HEADER_FILE="${SRS_TRUNK_PREFIX}/${MODULE_DIR}/${item}.hpp"
|
||||
echo -n " ${HEADER_FILE}" >> ${FILE}
|
||||
done
|
||||
echo "" >> ${FILE}; echo "" >> ${FILE}
|
||||
|
||||
#####################################################################################
|
||||
# Objects, build each object of utest
|
||||
echo "# Objects, build each object of utest" >> ${FILE}
|
||||
#
|
||||
MODULE_OBJS=()
|
||||
for item in ${MODULE_FILES[*]}; do
|
||||
MODULE_OBJS="${MODULE_OBJS[@]} ${item}.o"
|
||||
cat << END >> ${FILE}
|
||||
${item}.o : \$(${DEPS_NAME}) ${SRS_TRUNK_PREFIX}/${MODULE_DIR}/${item}.cpp \$(SRS_UTEST_DEPS)
|
||||
\$(CXX) \$(CPPFLAGS) \$(CXXFLAGS) \$(SRS_UTEST_INC) -c ${SRS_TRUNK_PREFIX}/${MODULE_DIR}/${item}.cpp -o \$@
|
||||
END
|
||||
done
|
||||
echo "" >> ${FILE}
|
||||
|
||||
#####################################################################################
|
||||
# App for utest
|
||||
#
|
||||
# link all depends libraries
|
||||
echo "# link all depends libraries" >> ${FILE}
|
||||
echo -n "DEPS_LIBRARIES_FILES = " >> ${FILE}
|
||||
for item in ${ModuleLibFiles[*]}; do
|
||||
echo -n "${SRS_TRUNK_PREFIX}/${item} " >> ${FILE}
|
||||
done
|
||||
echo "" >> ${FILE}; echo "" >> ${FILE}
|
||||
#
|
||||
echo "# generate the utest binary" >> ${FILE}
|
||||
cat << END >> ${FILE}
|
||||
${SRS_TRUNK_PREFIX}/${SRS_OBJS}/${APP_NAME} : \$(SRS_UTEST_DEPS) ${MODULE_OBJS} gtest_main.a
|
||||
\$(CXX) -o \$@ \$(CPPFLAGS) \$(CXXFLAGS) \$^ \$(DEPS_LIBRARIES_FILES) -lpthread -ldl
|
||||
END
|
||||
|
||||
#####################################################################################
|
||||
# parent Makefile, to create module output dir before compile it.
|
||||
echo " mkdir -p ${SRS_OBJS}/utest" >> ${SRS_MAKEFILE}
|
||||
|
||||
|
|
29
trunk/configure
vendored
29
trunk/configure
vendored
|
@ -54,7 +54,7 @@ SrsLibrtmpSampleEntry="nossl"
|
|||
if [ $SRS_SSL = YES ]; then SrsLibrtmpSampleEntry="ssl";fi
|
||||
# utest make entry, (cd utest; make)
|
||||
SrsUtestMakeEntry="@echo -e \"ignore utest for it's disabled\""
|
||||
if [ $SRS_UTEST = YES ]; then SrsUtestMakeEntry="(cd $${SRS_OBJS}/utest; \$(MAKE) ${SRS_MAKEFILE})"; fi
|
||||
if [ $SRS_UTEST = YES ]; then SrsUtestMakeEntry="(cd ${SRS_OBJS}/utest; \$(MAKE))"; fi
|
||||
|
||||
#####################################################################################
|
||||
# colorful summary
|
||||
|
@ -187,7 +187,7 @@ MODULE_ID="CORE"
|
|||
MODULE_DEPENDS=()
|
||||
ModuleLibIncs=(${SRS_OBJS})
|
||||
MODULE_FILES=("srs_core" "srs_core_autofree")
|
||||
MODULE_DIR="src/core" . auto/modules.sh
|
||||
CORE_INCS="src/core"; MODULE_DIR=${CORE_INCS} . auto/modules.sh
|
||||
CORE_OBJS="${MODULE_OBJS[@]}"
|
||||
#
|
||||
#Kernel, depends on core, provides error/log/config, nothing about stream information.
|
||||
|
@ -195,7 +195,7 @@ MODULE_ID="KERNEL"
|
|||
MODULE_DEPENDS=("CORE")
|
||||
ModuleLibIncs=(${SRS_OBJS})
|
||||
MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_stream" "srs_kernel_buffer")
|
||||
MODULE_DIR="src/kernel" . auto/modules.sh
|
||||
KERNEL_INCS="src/kernel"; MODULE_DIR=${KERNEL_INCS} . auto/modules.sh
|
||||
KERNEL_OBJS="${MODULE_OBJS[@]}"
|
||||
#
|
||||
#RTMP Protocol, depends on core/kernel, provides rtmp/htttp protocol features.
|
||||
|
@ -204,7 +204,7 @@ MODULE_DEPENDS=("CORE" "KERNEL")
|
|||
ModuleLibIncs=(${SRS_OBJS} ${LibSSLRoot})
|
||||
MODULE_FILES=("srs_protocol_amf0" "srs_protocol_io" "srs_protocol_rtmp_stack" "srs_protocol_rtmp"
|
||||
"srs_protocol_handshake" "srs_protocol_utility")
|
||||
MODULE_DIR="src/rtmp" . auto/modules.sh
|
||||
RTMP_INCS="src/rtmp"; MODULE_DIR=${RTMP_INCS} . auto/modules.sh
|
||||
RTMP_OBJS="${MODULE_OBJS[@]}"
|
||||
#
|
||||
#App Module
|
||||
|
@ -215,7 +215,7 @@ MODULE_FILES=("srs_app_server" "srs_app_conn" "srs_app_client" "srs_app_socket"
|
|||
"srs_app_codec" "srs_app_refer" "srs_app_hls" "srs_app_forward" "srs_app_encoder"
|
||||
"srs_app_http" "srs_app_thread" "srs_app_bandwidth" "srs_app_st" "srs_app_log"
|
||||
"srs_app_config" "srs_app_pithy_print" "srs_app_reload")
|
||||
MODULE_DIR="src/app" . auto/modules.sh
|
||||
APP_INCS="src/app"; MODULE_DIR=${APP_INCS} . auto/modules.sh
|
||||
APP_OBJS="${MODULE_OBJS[@]}"
|
||||
#
|
||||
#LIBS Module, build libsrs.a for static link.
|
||||
|
@ -223,7 +223,7 @@ MODULE_ID="LIBS"
|
|||
MODULE_DEPENDS=("CORE" "KERNEL" "RTMP")
|
||||
ModuleLibIncs=(${SRS_OBJS})
|
||||
MODULE_FILES=("srs_librtmp" "srs_lib_simple_socket")
|
||||
MODULE_DIR="src/libs" . auto/modules.sh
|
||||
LIBS_INCS="src/libs"; MODULE_DIR=${LIBS_INCS} . auto/modules.sh
|
||||
LIBS_OBJS="${MODULE_OBJS[@]}"
|
||||
#
|
||||
#Main Module
|
||||
|
@ -231,13 +231,8 @@ MODULE_ID="MAIN"
|
|||
MODULE_DEPENDS=("CORE" "KERNEL" "RTMP" "APP")
|
||||
ModuleLibIncs=(${LibSTRoot} ${SRS_OBJS})
|
||||
MODULE_FILES=("srs_main_server" "srs_main_bandcheck")
|
||||
MODULE_DIR="src/main" . auto/modules.sh
|
||||
MAIN_OBJS="${MODULE_OBJS[@].o}"
|
||||
|
||||
#####################################################################################
|
||||
# utest, the unit-test cases of srs, base on gtest1.6
|
||||
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${APP_OBJS[@]} ${MAIN_OBJS[@]}"
|
||||
APP_NAME="srs_utest" . auto/utest.sh
|
||||
MAIN_INCS="src/main"; MODULE_DIR=${MAIN_INCS} . auto/modules.sh
|
||||
MAIN_OBJS="${MODULE_OBJS[@]}"
|
||||
|
||||
#####################################################################################
|
||||
# Binaries, main entrances, link the module and its depends modules,
|
||||
|
@ -263,6 +258,14 @@ BUILD_KEY="bandwidth" APP_MAIN="srs_main_bandcheck" APP_NAME="bandwidth" . auto/
|
|||
# srs librtmp
|
||||
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${LIBS_OBJS[@]}"
|
||||
BUILD_KEY="librtmp" LIB_NAME="lib/srs_librtmp" . auto/libs.sh
|
||||
#
|
||||
# utest, the unit-test cases of srs, base on gtest1.6
|
||||
MODULE_FILES=("srs_utest")
|
||||
ModuleLibIncs=(${SRS_OBJS} ${LibSTRoot})
|
||||
ModuleLibFiles=(${LibSTfile} ${LibHttpParserfile} ${LibSSLfile})
|
||||
MODULE_DEPENDS=("CORE" "KERNEL" "RTMP" "APP")
|
||||
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${APP_OBJS[@]}"
|
||||
MODULE_DIR="src/utest" APP_NAME="srs_utest" . auto/utest.sh
|
||||
|
||||
echo 'configure ok! '
|
||||
|
||||
|
|
|
@ -22,3 +22,24 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
*/
|
||||
|
||||
#include <srs_utest.hpp>
|
||||
|
||||
#include <srs_kernel_log.hpp>
|
||||
#include <srs_kernel_error.hpp>
|
||||
#include <srs_app_server.hpp>
|
||||
#include <srs_app_config.hpp>
|
||||
#include <srs_app_log.hpp>
|
||||
|
||||
// kernel module.
|
||||
ISrsLog* _srs_log = new ISrsLog();
|
||||
ISrsThreadContext* _srs_context = new ISrsThreadContext();
|
||||
// app module.
|
||||
SrsConfig* _srs_config = NULL;
|
||||
SrsServer* _srs_server = NULL;
|
||||
|
||||
// basic test and samples.
|
||||
VOID TEST(SampleTest, FastSampleInt64Test){
|
||||
EXPECT_EQ(1, (int)sizeof(int8_t));
|
||||
EXPECT_EQ(2, (int)sizeof(int16_t));
|
||||
EXPECT_EQ(4, (int)sizeof(int32_t));
|
||||
EXPECT_EQ(8, (int)sizeof(int64_t));
|
||||
}
|
||||
|
|
|
@ -27,5 +27,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
/*
|
||||
#include <srs_utest.hpp>
|
||||
*/
|
||||
#include <srs_core.hpp>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
// we add an empty macro for upp to show the smart tips.
|
||||
#define VOID
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue