Test Status

Introduction

(please scroll to bottom for test results) ERP5 is used for many critical applications. Our customers depend on it to run their every day business, and they can not accept having regularly bugs coming again and again. Every software issue could have important consequences, especially if you think about banking, aerospace applications and many others. Therefore Nexedi considers the quality as one of its top priorities and runs automated testing since the early age of ERP5.

Unit / Functional / Deployment and Scalability Tests

While the code of ERP5 is evolving, more and more tests are added. When issues are reported, we write the test and fix the problem. Like this we make sure that the same issue is not going to happen again. Also, when new features are done, tests are added to make sure we will provide a well working experience. We have both unit tests and functional tests. Unit tests are used to test isolated software component, while functional tests are used to verify scenarios closer to user experience.

Development policy

We tried for years to keep the quantity of failures as low as possible. While the size of ERP5 was growing up, it started to be more and more time consuming to track regressions. In particular, it's quite common that a change in some part of the code generates a regression in another place that seems unrelated without detailed analysis. And then it happened that we had several errors, and it was difficult to see new ones.

Therefore, after our switch to git, we introduced the rule "contributions must not introduce ANY regression". So we started by fixing test failures, we checked all random issues, and we started to reject any code introducing failures. The idea is simply to check all unit tests before contributing changes to the central place. This can easily be done thanks to our Testing Infrastructure.

Thanks to this rule, about any revision of ERP5 could be considered as stable. This is a really great success. With a quantity of test growing, we have nearly 0 errors/failures all the time.

Testing Infrastructure

We are using what we call "ERP5 Test Nodes". They are processes installed on many different machines thanks to SlapOS cloud tools. We define several lists of tests to run, and ERP5 test nodes will look regularly to several code repositories to detect new commits, then they launch software constructions and finally tests are automatically run. Theses days we are using about 180 CPU cores to run tests for our various projects and for different versions.

Description of tests

Please find below a short description of all tests currently running:

  • ERP5.UnitTest-Master
    A unit test suite which covers all ERP5 code base.
  • ERP5.CodingStyleTest-Master
    Static code and configuration analysis for every business templates.
  • ERP5.ScalabilityTest-Master
    Tests how scalable an ERP5 instance is by simulating heavy intensive operations against a set of cluster configurations
  • ERP5.PerformanceTest-Master
    Tests pure ERP5 performance like creating and storing an object which should happen without any regressions for a already predefined time set
  • ERP5.StandaloneDeploymentScriptTest-Debian.Stretch / ERP5.StandaloneDeploymentScriptTest-Debian.Buster / ERP5.StandaloneDeploymentScriptTest-Debian.Buster.Master / ERP5.StandaloneDeploymentScriptTest-Debian.Bullseye
    A deployment test which assures that we can install ERP5 into a Debian Stretch (9) / Buster (10) / Bullseye (11) OS. The "Master" variant tests additionally that we can install the latest software release (from master branch), instantiate the product and apply a default automatic configuration. The non "Master" variant uses latest "frozen" version without automatic configuration testing. The non "Master" variant is much faster as software release compilation is downloaded pre-compiled from shacache.
  • Pygolang.UnitTest-Master.Python2 / Pygolang.UnitTest-Master.Python3
    A unit test which covers Pygolang ( Go-like features for Python and Cython )
  • Wendelin.UnitTest-Master
    A unit test suite which covers Wendelin (Big Data Platform) code base
  • Wendelin.core.UnitTest-ZODB4-wc2 / Wendelin.core.UnitTest-ZODB5
    A unit test suite which covers wendelin.core, Out-of-Core processing module from Wendelin (Big Data Platform), for both ZODB4 and ZODB5.
  • Wendelin.StandaloneDeploymentScriptTest-Debian.Stretch / Wendelin.StandaloneDeploymentScriptTest-Debian.Buster /  Wendelin.StandaloneDeploymentScriptTest-Debian.Buster.Master / Wendelin.StandaloneDeploymentScriptTest-Debian.Bullseye
    Tests installing Wendelin inside Debian Stretch (9) / Buster (10) / Bullseye (11) OS.
  • NEO.UnitTest-Master / NEO.UnitTest-Master.ZODB3 / NEO.UnitTest-Master.ZODB5
    A unit test suite which covers the NEO (distributed, redundant and transactional storage DB)
  • Zodbtools.UnitTest-Master.ZODB4.Python2 / Zodbtools.UnitTest-Master.ZODB4.wc2.Python2 / Zodbtools.UnitTest-Master.ZODB5.Python2 / Zodbtools.UnitTest-Master.ZODB4.Python3 / Zodbtools.UnitTest-Master.ZODB4.wc2.Python3 / Zodbtools.UnitTest-Master.ZODB5.Python3
    A unit test suite for zodbtools , running for ZODB4, ZODB4 with wendelin.core2 support and ZODB5 on python 2 and python 3
  • JIO.UnitTest-Master
    A unit test suite (javascript) for our  JIO framework running on a web browser
  • JIO.UnitTest-Master.NodeJs
    A unit test suite (javascript) for our  JIO framework running on NodeJS
  • RenderJs.UnitTest-Master
    A unit test suite (javascript) for our RenderJS framework
  • OfficeJS.Appstore.UnitTest-Master
    A unit test which covers the OfficeJS Appstore code base
  • SlapOS.SlapRunner.ResilienceTest-Master
    Tests that the data produced by a simple Software Release inside a resilient webrunner is correctly backup-ed and restored in a backup webrunner, in order ensure a disaster recovery.
  • SlapOS.SlapRunner.ResilienceTest-Master.Gitlab
    Tests if Gitlab Software Release (from master branch) inside a webrunner resilient works (produce a clone and replace main instance with the clone).
  • SlapOS.Eggs.UnitTest-Master.Python2 / SlapOS.Eggs.UnitTest-Master.Python3
    Tests all eggs which are been developed under SlapOS Project, and it may include recipes (slapos.cookbook, slapos.recipe.build...) and also tools (slapos.toolbox). Tests for different Python versions.
  • SlapOS.Buildout.UnitTest-Master.Python2 / SlapOS.Buildout.UnitTest-Master.Python3
    A unit test suite for slapos.buildout, our fork of zc.buildout
  • SlapOS-Master.UnitTest-Master
  • SlapOS.KVM.ResilienceTest-Master
    Tests that the disk used by a KVM is correctly backuped and can be reused by a second KVM, in order to ensure a disaster recovery.
  • SlapOS.SoftwareReleases.IntegrationTest-Master
    On every change on master branch, it compiles several Software Releases, like ERP5, Wendelin, WebRunner, KVM .... (see the full list) on the testnodes (currently we have testnodes running on Debian 10 and Debian 11).
  • SlapOS.SoftwareReleases.IntegrationTest-1.0
    On every change on 1.0 branch  (a.k.a Release Candidate Branch), it compiles several Software Releases, like ERP5, Wendelin, WebRunner, KVM .... (see the full list) on the testnodes (currently we have testnodes running on Debian 10 and Debian 11).
  • SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Stretch / SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Buster / SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Bullseye
    Tests slapos' master installation on Debian Stretch (9) / Buster (10) / Bullseye (11) OS
  • SlapOS.Theia.ResilienceTest-Master
    Tests that the data produced by ERP5 Software Release inside a resilient Theia is correctly backup-ed and restored in a backup Theia, in order to ensure a disaster recovery
  • nxdtest.UnitTest-Master.Python2 / nxdtest.UnitTest-Master.Python3
    Tox-like tool to run tests for a project under Nexedi testing infrastructure
  • Cloudooo.UnitTest-Master
    A unit test suite which tests our conversion daemon called cloudooo
  • Beremiz.UnitTest-Master.Python2.wxPython4
    A unit test suite  and functional test suite  which covers Beremiz (Beremiz is an integrated development environment for machine automation) code base.
  • Beremiz.IntegrationTest-Master
    An integration test suite which simulates the proper running of a Beremiz runtime environment controlling a virtual coupler device.

Test Results

You can find below the result of automatic test of ERP5 code. Hopefully you are able to see many test results at 0 errors/failures for several thousands of tests. Since we are humans and not perfect, it might happen that a change introduces a regression. But in this case, you could be sure that we will quickly look and solve it.

1 - 45 of 49 records
Date Test title All tests Skips Failures Errors Test Result Build Result
29/09/2022   19:50 ERP5.UnitTest-Master 7803 191 4 0
FAIL
Completed
29/09/2022   16:37 ERP5.CodingStyleTest-Master 6520 3 1 0
FAIL
Completed
13/06/2022   21:21 ERP5.ScalabilityTest-Master 40 0 0 0
PASS
Completed
29/09/2022   15:33 ERP5.PerformanceTest-Master 14 0 0 0
PASS
Completed
29/09/2022   16:12 ERP5.StandaloneDeploymentScriptTest-Debian.Stretch 8 1 0 0
PASS
Completed
29/09/2022   09:49 ERP5.StandaloneDeploymentScriptTest-Debian.Buster 8 1 0 0
PASS
Completed
29/09/2022   23:51 ERP5.StandaloneDeploymentScriptTest-Debian.Buster.Master 8 1 0 0
PASS
Completed
30/09/2022   00:18 ERP5.StandaloneDeploymentScriptTest-Debian.Bullseye 8 1 2 5
FAIL
Completed
29/09/2022   16:54 Pygolang.UnitTest-Master.Python2 254 15 0 0
PASS
Completed
29/09/2022   16:18 Pygolang.UnitTest-Master.Python3 254 15 0 0
PASS
Completed
29/09/2022   14:57 Zodbtools.UnitTest-Master.ZODB4.Python2 48 0 0 0
PASS
Completed
29/09/2022   18:03 Zodbtools.UnitTest-Master.ZODB4.wc2.Python2 48 0 0 0
PASS
Completed
29/09/2022   14:59 Zodbtools.UnitTest-Master.ZODB5.Python2 48 0 0 0
PASS
Completed
29/09/2022   15:50 Zodbtools.UnitTest-Master.ZODB4.Python3 48 0 4 1
FAIL
Completed
29/09/2022   15:27 Zodbtools.UnitTest-Master.ZODB4.wc2.Python3 48 0 4 4
FAIL
Completed
29/09/2022   15:47 Zodbtools.UnitTest-Master.ZODB5.Python3 48 0 6 1
FAIL
Completed
29/09/2022   15:34 Wendelin.UnitTest-Master 41 0 0 0
PASS
Completed
29/09/2022   15:29 Wendelin.core.UnitTest-ZODB4-wc2 1025 4 0 0
PASS
Completed
29/09/2022   15:40 Wendelin.core.UnitTest-ZODB5 1025 4 0 0
PASS
Completed
29/09/2022   16:33 Wendelin.StandaloneDeploymentScriptTest-Debian.Stretch 8 1 0 0
PASS
Completed
29/09/2022   15:57 Wendelin.StandaloneDeploymentScriptTest-Debian.Buster 8 1 0 0
PASS
Completed
29/09/2022   20:39 Wendelin.StandaloneDeploymentScriptTest-Debian.Buster.Master 8 1 1 0
FAIL
Completed
30/09/2022   00:19 Wendelin.StandaloneDeploymentScriptTest-Debian.Bullseye 8 1 2 5
FAIL
Completed
29/09/2022   20:26 NEO.UnitTest-Master 873 21 28 0
PASS
Completed
02/03/2021   07:59 NEO.UnitTest-Master.ZODB3 841 2 26 1
FAIL
Completed
29/09/2022   15:05 NEO.UnitTest-Master.ZODB5 873 21 30 2
FAIL
Completed
29/09/2022   15:42 JIO.UnitTest-Master 4341 0 0 0
PASS
Completed
29/09/2022   15:05 JIO.UnitTest-Master.NodeJs 3315 0 0 0
PASS
Completed
29/09/2022   15:02 RenderJs.UnitTest-Master 669 0 0 0
PASS
Completed
24/08/2022   17:32 OfficeJS.Appstore.UnitTest-Master 19 0 0 0
PASS
Completed
29/09/2022   16:21 SlapOS.SlapRunner.ResilienceTest-Master 1 0 0 0
PASS
Completed
29/09/2022   15:53 SlapOS.SlapRunner.ResilienceTest-Master.Gitlab 1 0 0 1
FAIL
Completed
29/09/2022   15:12 SlapOS.Eggs.UnitTest-Master.Python2 1514 54 0 1
FAIL
Completed
29/09/2022   15:15 SlapOS.Eggs.UnitTest-Master.Python3 1514 54 2 0
FAIL
Completed
29/09/2022   15:56 SlapOS.Buildout.UnitTest-Master.Python2 380 0 0 0
PASS
Completed
29/09/2022   16:02 SlapOS.Buildout.UnitTest-Master.Python3 380 0 1 0
FAIL
Completed
29/09/2022   17:48 SlapOS-Master.UnitTest-Master 1934 12 0 4
FAIL
Completed
29/09/2022   16:18 SlapOS.KVM.ResilienceTest-Master 1 0 0 0
PASS
Completed
28/09/2022   01:04 SlapOS.SoftwareReleases.IntegrationTest-Master 1039 18 0 2
FAIL
Completed
22/09/2022   17:05 SlapOS.SoftwareReleases.IntegrationTest-1.0 1038 18 0 1
FAIL
Completed
29/09/2022   10:47 SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Stretch 8 1 0 0
PASS
Completed
29/09/2022   16:12 SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Buster 8 1 0 0
PASS
Completed
30/09/2022   00:19 SlapOS-Master.StandaloneDeploymentScriptTest-Debian.Bullseye 8 1 2 5
FAIL
Completed
08/09/2022   03:07 SlapOS.Theia.ResilienceTest-Master 2 0 0 0
PASS
Completed
29/09/2022   14:58 nxdtest.UnitTest-Master.Python2 46 3 0 0
PASS
Completed