Parallel Testing for Joomla  Flavius Andrei Isac

Hello all! Before I jump to the project, I would like to introduce myself.
My name is Isac Andrei, from Romania and I am currently finishing my studies in Computer Science at University Politehnica of Bucharest. During my last semester I have studied at the University of Groningen, Netherlands, this lead me to the taste of international study, therefore I will study my masters at ETH, in Zurich, Switzerland.

During my studies, I have worked for 1.5 years as a PHP Developer and done freelance work, having my own firm. My passion is web development, I enjoy building complex systems where multiple technologies and resources are combined, I look at each component as a block that will be the foundation of the final product.
Always interested in working in cool projects, I have developed a system that helps doctors monitor patients with depression by remotely estimating their current depression severity (wish me luck at the Microsoft Imagine Cup World Finals :) ).

Introduction of the project

The general purpose of the project is getting early feedback for every newly submitted code for Joomla! extensions. By creating a fully working environment to run tests for Joomla, so that they can run in a parallel (container-based) environment, increasing speed and coverage of PHP and Joomla! versions. The key requirement here is speed, it is crucial to get early feedback on new PRs. In order to achieve this, tests not dependent on each other will be run on different containers simultaneously.

The scope of the project is to integrate the Joomla! Weblinks Extension existing tests into the new testing environment. Therefore, pre-installed, Joomla! containers need to be used in order to be able to run the tests in a short time.

The expected results are to automate the testing environment from its creation (by running containers with Joomla/PHP combinations and testing selenium containers), to parallel test execution (by coordination test runs in parallel and taking into account their dependencies) and reporting (sending the errors back to GitHub).

Current status

So far, I have managed to use and improve the virtualisation repo in order to create the desired testing environment:

  • MySQL
  • PHP/Apache + Joomla! server containers with PHP 5.4, 5.5, 5.6, 7.0, 7.1, combined with Joomla! 3.7 (latest release), 3.8 (next version, currently in preparation) and staging.

We have decided that docker networks are the way to go, in order to establish the connections between the Selenium containers and testing containers.

gsoc joomla 1

Concerning the actual tests running, we need to make the tests run separately, in a dynamically changing environment (different servers). I have developed the command to run a single task and now I am working on making it also run on a specific server.

Personal Experience with GSoC

So far it has been great. I already had 5 meetings with my mentors. After a more rough start, when I was overwhelmed about the complexity of the project, I am starting to move at a faster pace. Things start to fall in place and I can actually see some progress. The mentors have been great and we had some good debates about some project decisions.

Next steps

Two main decisions have been discussed so far, that are critical to the project:

  1. Communication between containers
  2. Selenium containers: web service vs bash-based daemon.

The next step would be to decide the fate of the selenium containers.

In the meanwhile, I will continue with our usual schedule for the Virtualisation part of the project, making the Weblinks tests dynamically loading the server URL by using a robo command.

After this, an API will be developed for the Virtualisation Repo in order to create the testing environment remotely.