pjsip-pjproject/third_party
Benny Prijono 0408536ef7
Refactor test apps to use unit-test framework (#4014)
* Initial work on unittest framework, tested

* Finished reorganizing pjlib-test to use unit-test framework

* Fix big problem where performance improvement is not observed with the new framework (reason: because parallel flag is not set, doh!)

* Tidying up global vars in pjlib-test. Add test options: stop on error, skip essential tests, list tests

* Change the PJ_TEST_XX() signature to be more generic and does not force returning value

* Modifications to some existing tests to use unit-test test macros

* Updated VS projects with argparse.h and unittest.h

* Fix warnings on Windows

* Disable parallel unit-testing for ioqueue stress test on Windows because of errors when running on Windows virtual machine

* Non-parallel test case will now run exclusively (previously it did not wait the previous test to complete)

* Add pjlib-test/test_util.h for common utilities for parsing, configuring, and running unit test. This can be used by all test apps. pjlib-util-test has been ported to use this utilities

* Dirty hack to fix error message being displayed when user selected essential test because it does not exist in features test (in pjlib-test)

* Replace PJ_TEST_PARALLEL with PJ_TEST_EXCLUSIVE

* Ported pjnath-test to use unit-testing framework, with limited speed-up from 45m originally to 15m using 10 worker threads

* Large modifications in pjnath-test to speed-up test. It is fast now (4:30 minutes with 10 worker threads, from 45:42m originally)

* Ported pjmedia-test to use unit-test

* Porting of pjsip test to unit testing framework. Not much of speed improvements due to exclusive tests

* Modifications in pj_argparse API (changed get() to get_bool() and add automatic error reporting) hopefully make it easier to use

* Refactor tsx_uas_test() to allow parallel testing

* Parallelize tsx_uac_test()

* Further effort to parallize tests in pjsip-test. Discoverd major issue with unit-test logging (see unittest.md)

* Showing PJLIB config is optional with cmd line option

* Bug fixing failed pjsip tests when running in parallel mode

* Finished paralleizing all pjsip tests except one

* Continuing correcting errors

* Add test shuffle feature

* Modify CI workflows to use standard arguments: -w 3 --shuffle. These args are set in GitHub action variables

* Updated due to change in argparse API signature (swap arg order)

* Removed unittest.md (it was draft for the PR)

* Fix the use of GitHub repository vars

* Tidying up minor conflicting merge in VC projects and pjlib.h

* Attempt to fix assertion failure when tdata is being accessed after reference counter goes to zero in regc_test

* Fixing failure in transport_loop_test(), first in loop_resolve_error(), presumably because there are other loop transport around when the test is run. Solution are: 1) make the test exclusive for now, 2) fix the cleanup of loop transport in other tests. Then there is failure in transport_rt_test(), because it gets loop transport from other test that is being shutdown. Sneakily add pjsip_tpmgr_get_transport_count_by_type() that's useful for debugging.

* Attempt to fix unresolved winmm.lib API (e.g. timeKillEvent, timeGetTime) called from BaseClasses

* Split exclusive part of transport_loop_test

* CI mods: split steps, envs, shorten job names

* Fix failed tsx_basic_test

* Restore previously shortened job names

* Replace assertion with PJ_TEST_XX in resolver_test

* Add --stdout-buf and --stderr-buf options in test apps to control stdout/stderr buffering

* Fix missing sipp exe on Windows CI

* Fix wrong CI args on Mac. Use -j for faster make

* Replace pj_rand() with own rand in unittest because rand() yields different sequence on different platform even with the same srand, making it hard to reproduce test sequence

* Fix swig make error on Linux and runall.py error reading log file on Windows

* Attempt to fix test repeatability by 1) delete all calls to pj_srand() except in pj_test_suite_shuffle(), 2) unit test PRNG explicitly uses pj_uint32_t instead of int. Also disable windows python tests since it is unreliable

* Fixed inexistant function

* Relaxing the strictness of the test since sometimes it raises error

* Set regc_test() exclusive because it crashes sometimes, probably concurrency issue

* Modified thread counter to unsigned long (from pj_uint32_t) since the counter value is 2*1e9 and is overflow during diff calculation

* Fixed port double destruction in mips_test() and include benchmark tests in pj/config_site_test.h

* Use any port since sometimes test fails with address in use error

* Fix conflicted return value in udp_ioqueue_test() and let it immediately exit on error so that we can see correlated error log

* Restore sleep(0) in thread test since without it the test may occasionally fail on Linux

* Various attempt to fix fluke error in resolve_test.c: 1) servers use random port numbers, 2) increase delay waiting for various DNS timers, 3) reset global vars to zero because test may be repeated for IPv6

* More relaxed packet count tests in resolver_test

* Use any port instead of hardcoded one in udp ioqueue unregister_test since binding fails occasionally

* Rollback previous changes in resolver_test that relaxed packet count test

* Protect access to pool from worker thread with mutex in resolver_test

* Faster resolver_test time by reducing timeout

* Use high number port to make it less prone to bind error

* Remove hardcoded port number, replace with bind to any

* Fix SSL to continue decrypting data after renego completes

* Fixed race condition when registering SIP module in transport test

* Disable loading TLS cert in TURN sock test if SChannel is used

* Add (missing!) pjnath-test in Windows CI

* Fix syntax error in ci-win.yml and renamed lin->ubuntu in ci-linux

* Temporary workaround for MacOS rwmutex deadlock issue

* More jobs/tests in CI Mac, and changed names

* Fix silly typo in config_site_test.h

* Prettyfy CI job names, added more test steps

* Fix CI: ffmpeg lib path, faster git clone

* CI: simplify job names, add some audio checking

* CI: Disable SDL check because vid renderer is not available on CI machine

* Fixed missing ffmpeg shared lib when running pjmedia test

* CI Mac: install gnutls

* Lookup renderer in video codec test

* CI MacOS: attempt to fix failed OpenSSL test

* CI Mac: better test split to make duration more uniform across jobs

* Replace deprecated egrep with grep -E

---------

Co-authored-by: Nanang Izzuddin <nanang@teluu.com>
Co-authored-by: sauwming <ming@teluu.com>
2025-01-08 11:01:26 +07:00
..
BaseClasses Refactor test apps to use unit-test framework (#4014) 2025-01-08 11:01:26 +07:00
bdsound/include Re #1833: Support bdSound's bdiMad v2.0.0 2015-03-27 08:47:20 +00:00
build Miscellaneous fix (#3750) 2023-11-01 11:32:43 +07:00
g7221 Fix gcc sign-compare warnings 2023-03-29 13:30:36 +07:00
gsm Misc (re #1843): Fixed GCC compile warnings of unused variables in third-party libs. 2015-08-11 07:49:25 +00:00
ilbc Fix #2116: iLBC using memcpy instead of memmove for overlapping memory. 2018-05-29 09:02:51 +00:00
milenage Fixed milenage build on eVC etc. 2007-11-11 07:14:47 +00:00
mp3 Add close-on-exec flag (#3553) 2023-05-16 11:59:37 +08:00
resample Misc (re #1630): Fixing warnings about variable set but not used with recent gcc 2014-02-04 10:13:56 +00:00
speex Re #589: Suppresses warning of unused var 2020-01-29 04:29:14 +00:00
srtp Hide private symbols (#3756) 2023-11-03 12:14:36 +08:00
threademulation Re #1900: Initial implementation with pjsua cli/telnet sample app. 2015-12-10 01:58:38 +00:00
webrtc Fix build failure on RISC-V architecture (#4173) 2024-12-02 09:02:00 +08:00
webrtc_aec3 Add support to windows on ARM build (#2807) 2021-08-30 10:39:48 +07:00
yuv Misc (#2504): Fix compile warnings in libyuv on Mac introduced by 681b1f34a9 (reverted, put the warning suppression in Makefile so libyuv app won't be affected) 2021-03-08 16:44:06 +07:00
README.txt Support OpenSSL3 with "no-deprecated" build option (#3603) 2023-07-05 11:39:01 +08:00

README.txt

Third Party Software

This directory contains third party software that is
used by PJ project.

= Building the third party libraries =

Go to build directory, rather than building the library
using the project files/Makefiles provided by the software.


= Versions =

speex:		SVN -r12832
gsm:		gsm-1.0.12
ilbc:		from RFC
resample:	lib-resample, I think version 1.7
srtp		libsrtp-2.5.0