Skip to content

Proposal - increase proportion of testing performed in docker containers #1809

@sxa

Description

@sxa

testdocker.tar.gz (NOTE: Needs hostname and which added to install list on Fedora33)

We are currently losing some of our capacity as a result of #1781. The biggest impact of this is on the Linux/x64 systems where we currently have 12 test systems (4 each of CentOS7, Debian8, and Ubuntu16.04). Losing this capacity will have a significant impact on our abnility to run testing.

In order to mitigate this, I am proposing running a subset (not all, since we need to test some using the real kernel for the operating system) in Docker containers. For prototyping purposes I am using one large system with static docker images of differnet OSs to give us a mix, but going forward we could probably spin them up on the fly in a comparable way to how we build the Linux/x64 and Linux/aarch64 builds using the dockerBuild nodes today.

I have configured a 24-core (48 thread) system docker-packet-ubuntu2004-x64-1 with six static docker containers (One each of Ubuntu 16,04, 18.04, 20.04, 20.10) and two Fedora 33) and these are in jenkins with the name of the host system and a suffix to indicate the OS in the container. While this doesn't quite match the 12-machine set at GoDaddy it will still be adequate to prevent xLinux capacity from being a limiting factor

The important thing about this is that we need to understand how many tests can be performed within docker containers as (external tests excepted) it is not something we have tried before. The containers on this host are restricted to 4 CPUs each and 6Gb of RAM. This limitation prevents the system test suites in particular consuming all the resources on the machine. Initial testing from last night shows that the load on the machine was around the 25-30 mark, which is likely OK.

Issues relating to running tests in docker specifically can be captured in adoptium/aqa-tests#2138

Dockerfiles used to create these images (not the full playbooks are in the attachment

If you have an concerns about this approach, feel free to add them into the comments :-)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions