GNU Ring project with GNU organisation
Before getting into the thick of my project, let me present myself:
I am Olivier Grégoire (Gasuleg), and I study IT engineering at École de Technologie Supérieure in Montreal.
I am a technician in electronics, and I study now computing sciences.
I applied to GSoC because I love the concept of the project that I worked on and I really wanted to be part of it.
2. My Project
During this GSoC, I worked on the GNU Ring project.
What is ring?
- A telephone: a simple tool to connect, communicate and share.
- A teleconferencing tool: easily join calls to create conferences with multiple participants.
- A media sharing tool: Ring supports a variety of video input options, including mutliple cameras and image and video files, and the selection of audio inputs and outputs; all this is supported by multiple high quality audio and video codecs.
- A messenger: send text messeges during calls or out of calls (as long as your peer is connected).
- A building block for your IoT project: re-use the universal communications technology of Ring with its portable library on your system of choice.
What I need to do?
This project is, at the moment, unstable due to a lack of automated tests. Only a part of the code is tested. I need to improve this.
To do that, I need to:
- Research and test automation strategies that integrate the compilation system and Jenkins verification like the SIP tests
- Implement some unit tests to check the components
See more in my proposal!
3. The Code
Links to my work
Here are the links to the code I was working on all throughout the Google Summer of Code:
|Black box testing sip||Merged|
|New unit test: smartools||Merged|
|New unit test:account_factory||Merged|
|New unit test: util classes||On Review|
|New unit test: archiver, conference, preferences||On Review|
|New unit test: dring, threadloop||On Review|
|Refactoring + video_input unit test||Abandoned|
How to use the code?
Follow the instructions to build the daemon and instead of doing “make”, do “make check”. You will see something composed of:
- Test automation strategies
- Unit test
Some explanations of the code
The tests are based on CPPunit framework.
I created some Black box testing to do some calls using SIP protocol. To do that, I created scenarios using SIPp .
I also create a lot of unit tests.
My project was a little bit difficult to setup because I never touch autotools before that.
The sip tests were not really difficult to create. SIPp is really easy to use.
The unit test part was more tricky. It’s really easier to do the tests before coding like the Test-driven_development said. Here the code is already written and I need to test it. So, I needed to create tests based on the code and not what he needed to do. Also, I got some issues with classes who were really linked together so I couldn’t make unit test with it.
4. What’s next?
- Merge all the patchs
- Add gcov to know the code coverage
- Increase the code coverage
I would like to thank the following: