jami-docs/developer/new-developers/improving-quality-of-jami.md

69 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

Improving the quality of Jami
=============================
2019-07-06 04:30:58 +08:00
## Unit-tests
* It is harder to make unit-test on Jami project because of the race conditions on multi-level dependance.
* We use lcov for the coverage, you can find the lcovs configuration in the daemons Makefile.am. Also, the coverage can be found at https://docs.jami.net/coverage/ and https://dl.jami.net/docs/dhtnet/coverage
2019-07-06 04:30:58 +08:00
* A system needs to be implemented to start convincing the team to make a unit-test for new code before merging
* You can launch them by doing make check in the daemon folder or separately in the unit-test folder with gdb: gdb ut_media_encoder
* The environment needs to be set with --disable-shared during the ./configure command
* Clients also have tests (cf `jami-client-qt/tests` for Desktop, `jami-client-android/jami-android/app/src/androidTest` for Android)
2019-07-06 04:30:58 +08:00
## Integration tests
2019-07-06 04:30:58 +08:00
* Each commit goes through integration tests in dockers on the build machines you can find the details at: jenkins.jami.net
2019-07-06 04:30:58 +08:00
* Code-review is made by a fellow developer, sometimes the code is reviewed by the same developer, this should be avoided to emphasize Linus law. The Jenkins verified label is sometimes discarded and replaced by +1 from a developer, this should also be avoided.
2019-07-06 04:30:58 +08:00
* Sonarqube lets Jenkins build Jami and verify linting. You can find filters and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a preprocessor linting compilator, you can find clangs filters in .clang-tidy file in the daemon folder.
* On SFLVault sonarqube can be found at service m#2637 and admin logins at service s#7169
2019-07-06 04:30:58 +08:00
## Doc and feedback:
* You can find all the documentation on docs.jami.net
2019-07-06 04:30:58 +08:00
* Issues are made by developers or users on git.jami.net
## Agent
Every night, hundred of calls are tested via 2 Agents and a message is posted every morning in the chat with the result (if all call succeeded or not)
2019-07-06 04:30:58 +08:00
## Smoke tests
2018-08-10 21:45:48 +08:00
Before each releases every clients MUST past a list of scenarios.
Scenarios are described here:
[Jami smoke tests](jami-smoke-tests.ods)
2018-08-10 21:45:48 +08:00
2019-07-06 04:30:58 +08:00
They are reviewed by QA dpt. before sending it to the developers if needed.
If a release contains a network commit that has been merged, the QA dept. Should be able to automate the different connectivity tests (as descibed below in Calls configurations)
2018-08-10 21:45:48 +08:00
2019-06-03 10:58:47 +08:00
### Calls configurations.
This is the list of network configurations that need to be tested:
2019-06-03 10:58:47 +08:00
(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both sides.
2019-06-03 10:58:47 +08:00
If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only local.
2018-08-10 21:45:48 +08:00
2019-07-06 04:30:58 +08:00
## What needs to be done
* Establish a system within the team to assure maintenance and creation of unit-tests.
* Each major functionality should be tested as whole by adding a test (i.e. making sure a message was received, the call was ended well on both side, etc...)
2019-07-06 04:30:58 +08:00
* Each new functionality should be tested on each platform before merging it to reduce regression
2019-07-06 04:30:58 +08:00
* Integrate sonarqube on each client
* Automate the testing of Jamis behavior on network compatibility