FOSSology Automation

Overview

Automation within the FOSSology project is driven by a core belief in continuous integration. Any time a developer makes changes to the code, the project's continous integration (CI) environment ensures that the new changes are integrated with the existing codebase and that all automated tests successfully run and packages get built. To make this work, there are some basic pieces available within a developer's sandbox as well as an external continuous integration environment managed by Jenkins.

The end-to-end process is the following:
  1. Code is checked out and built via ‘make’ within a sandbox – developer or Continuous Integration (CI) via Jenkins
  2. Unit tests are run within a sandbox – developer or CI
  3. Functional tests are run within a sandbox – developer or CI
  4. Source installs occur on all supported platforms and functional tests are run against the “working” system (note: unit tests are not run)
  5. Packages are built and installed on all supported platforms and functional tests are run against the “working” system (note: unit tests are not run)
  6. “Success” is communicated if there are no errors, otherwise “Failure” is communicated with a clear indication of where the failure occurred to be fixed

Jenkins

Jenkins is a continuous integration server application written in Java that is used to automate various tests and other team activities.

Types of Automation

Type Description Used in Developer Sandbox? Frequency
Build Makefiles used to compile the code, execute the tests, and package up the software and/or install it locally Yes All the Time
Unit Testing "Push-button" automation focused on testing the code unit (the atomic piece of code) in isolation, not the interactions with other code, with as few dependencies as possible Yes Every Commit
Functional Testing Automation focused on testing the interaction of several units together, not just one unit, and run both in and out of sandbox Yes Multiple times per day, not every commit
Packaging and Installation Automation focused on testing the packaging and installation processes for both package- and source-installs across all supported platforms No Daily

Build

Test Harnesses

FOSSology mostly uses the C and PHP languages to create the application. To facilitate the creation and execution of automated tests, test frameworks have been adopted by the team.

Integration Server

TBD describing fonightly.

Other Routine Tasks That Automation Provides

Code Documentation via Doxygen

The latest Fossology Code Documentation is generated daily from top of tree.

Database Schema Diagrams

The latest SchemaSpy database analysis is generated daily from the fonightly PostgreSQL database.

Test Statistics

CI Configuration in Subversion

TBD by Dan.

Test_Automation_Framework.jpg (32.5 kB) Paul Holland, 06/08/2012 08:55 pm

Continuous_Integration_Environment.jpg (42.3 kB) Paul Holland, 06/08/2012 10:21 pm