Discover the LUTI
LUTI is a TranquilIT internal tool that can automatically create, test, track and update WAPT packages for the WAPT Store.
Those WAPT packages are the core software deployment archives used by the great WAPT software solution of the French TranquilIT company.
More information is available at https://www.tranquil.it/en/luti-creation-testing-and-automatic-tracking-of-wapt-packages/
Our Rodent's Best Friend
Yes, of course, WAPT does use mORMot, so it did make perfect sense to integrate both projects.
In practice, we built and integrated the tests on several versions of Windows, several Linux distributions, and even Mac Intel and Mac M1 virtual machines.
The source code is cloned from our official GitHub repository, built using FPC, then distributed over the needed virtual machines.
The WAPT agent is in fact deployed on all VMs, and a dedicated package/script is installed and run via this Agent to trigger the actual tests.
A typical WAPT package script extract looks like the following:
def install(): if iswin64(): arch = 'x86_64-win64' else: arch = 'i386-win32' try: run(r'testmormot\%s\mormot2tests.exe /noenter' % arch) run(r'testmormot\%s\mormot2tests.exe /noenter --test TTestCoreProcess.JSONBenchmark' % arch) run(r'testmormot\%s\mormot2tests.exe /noenter --dns sambaad.lan --test TNetworkProtocols.DNSAndLDAP' % arch) run(r'testmormot\%s\mormot2tests.exe /noenter --dns msad.lan --test TNetworkProtocols.DNSAndLDAP' % arch) except: ...
Nothing complex here, just some python code executed on the target machine.
As you can see, the mormot2tests project has now optional command line options to trigger dedicated tests. For instance the JSON benchmark is run after a main default pass, because it uses some JSON content generated by the ORM, so a second pass is needed. Or we can validate two kinds of local DNS and LDAP servers.
Now, let's see the result of a typical test run. Note that one such run is triggered every night with the latest mORMot sources available, for continuous delivery.
Several versions of Windows are validated:
Then several Linux distributions: Note that the bullseye_arm64 is in fact a Mac M1 virtual machine running Debian, and buster_armhf is a good tiny Raspberry Pi running on our network.
And even Mac Intel and Mac M1 systems:
With a quick calculation, we can guess that 1.7 billion individual tests are done during each pass, throughout the 22 machines involved...
This is a good showcase of the FPC and mORMot abilities to work cross-platform and cross-architecture. It also includes OpenSSL validation, and LDAP/DNS testing on local Samba or MSAD server.
We discovered and fixed some corner-case issues during the integration of those tests. But this is what tests are about, isn't it? To show what is wrong.
Some issues were in fact very nasty, especially on Mac, where Apple can't do as everyone does.
We also were able to compare performance between targets, and in fact, we were pleased to see that aarch64 platforms should work fast enough, even if x86_64 are better supported by mORMot, especially thanks to a lot of manually-tuned assembly code using latest Intel/AMD SIMD instructions, and our dedicated memory manager. Even the Raspberry Pi can sustain all this JSON, cryptography, ORM, REST, HTTPS, network testing... at its own pace, of course. :)
You can discuss about this blog entry on our forum, as usual.