MDBF-1237 · dev deployment (ENVIRON=DEV)

Foundry test plan

0 / 0

Validates everything on branch MDBF-1237-rev: access control, force inputs, server sources, ci_only, builder naming, the dispatcher's source archive, per-plugin results, base-image install and test, MTR suite handling, the dispatcher waiting for its package builds, pull request status, the status report, and that nothing outside Foundry broke. Items marked new changed since the first version of this plan. Sections build on each other; run them in order. Ticks are saved in this browser only.

00Before you start

01Access control

02Force: mirrors, no commit

The main path. Press Force with every field left at its default.

03Force: pinned commit

04Force: server source choices

05ci_only targets

Temporarily add ci_only=["debian-13-deb-autobake"] to the 11.4 MariaDBVersion in settings.py (on CI, not on the 11.4 mirrors) and redeploy. Revert when done.

06Pull requests

On test pull requests in the repository FOUNDRY_REPO_URL points at: the fork RazvanLiviuVarzaru/foundry while testing (e.g. PR #1), MariaDB/foundry after.

07Several plugins: the test plugins

Force with the tip SHA of testing in the Foundry commit field (git rev-parse origin/testing), or open pull requests from it. It also has tidesql from main; see Known issues.

08Concurrency and cancelling

09Nothing else broken

10More MariaDB versions: 11.8 and 12.3

11.8 and 12.3 are enabled in MARIADB_VERSIONS, so every run builds them too. These check what differs from 11.4.

11Status report

Every run ends with a status page: each plugin's build, install and MTR result per MariaDB version and platform. Use the runs from the earlier sections.

—Known issues

  • TideSQL 5.0.0 fails to configure against the 11.4 mirrors: MariaDB-devel 11.4.13 doesn't ship the mariadb-plugin CMake package it asks for. Its earlier 5.0.0 packages were built from CI tarball 73276. Expect tidesql to fail at build on mirror runs.
  • Nothing prunes Foundry's sources/: one archive (about 40 KB) per dispatcher build, left to the artifacts server's retention.
  • Nothing prunes runs/ either: a few small files per package build, and the page.
  • The status page can't link to the buildbot builds: a shell step doesn't know a builder's numeric ID. Open them from the dispatcher's "Trigger Foundry Builders" step.
  • Rebuilding a package build rewrites its status files, but not the run's status.html.
  • On buildbot 4.x the Status, Logs and Packages links won't show until the shared ShellCommandWithURL moves from start() to run(); the files are still written.

—Already checked locally

  • buildbot checkconfig passes for master-migration and master-web in the dev master image; all 27 Foundry builders generate.
  • Moving the settings from foundry.yaml to settings.py changes nothing generated: all 27 builders' steps (names, commands, environment), the Triggerables and the Force and pull request schedulers are byte-identical before and after.
  • In settings.py, a misspelled target, a target in both targets and ci_only, a version with neither, an rpm/deb target without base_image and a misspelled field each fail at config load with a message saying what is wrong.
  • Every rendered Foundry script passes bash -n; the one-pass server bintar unpack and the suite discovery give the same results as before on test tarballs.
  • Status report: unit tests for every status, including a builder failing before each stage, every builder of a version failing early, and a ci_only builder that never reported.
  • Status report, end to end: the real rendered build, install, suite and MTR scripts, run with stubbed cmake, apt-get, dpkg and MTR, each wrote its status file and kept its exit code; the dispatcher's generated report command turned them into the right page.
  • On the 2.7 fork, a Force run with 11.4 from a CI tarball and 12.3 skipped: the dispatch step passes foundry_run to every build and records the two Triggerables it fired and each version's source (11.4=1234 11.8=mirror); with one build reporting, the page shows 17 of 11.4's 18 platforms and all 25 of 11.8's with no status, and 12.3 as not triggered; 11.4 links its CI tarball and 11.8 says mirrors.
  • Generated steps: image switch, RHEL mounts, x86 image and MTR user as intended.
  • Reporter filter: only pull request builds are reported.
  • Dispatch rules: mirror, CI and pull request runs trigger the right scheduler groups for ci_only, and pass on the commit and archive.
  • Build step verdicts and properties: unit tests, and buildbot's own step harness on the 2.x fork and on 4.3, including a cancel.
  • Source archive: published, served over HTTP, downloaded and unpacked byte for byte; a wrong checksum or missing file retries, then fails.
  • Saved packages' sha256sums.txt verifies, and a corrupted package fails it.
  • Plugin discovery gives the same results as before in 7 force and pull request cases.
  • Test plugins built with run.cmake in rpm, deb and bintar mode, with the expected results and suites.
  • Install and suite discovery with the test plugins in plain debian:12, centos:stream9 and opensuse/leap:16.0.
  • Plain debian:12, ubuntu:24.04, centos:stream9 with 11.4: prepare, repo, install and main.1st MTR pass.
  • All 27 Foundry builders on master-migration have collapseRequests=False; the other 97 keep the default.
  • MariaDB 12.3.3 from the mirrors on bci-base:15.7 (systemd 254) and opensuse/leap:16.0 (systemd 257): zypper install MariaDB-server MariaDB-test exits 107 without SYSTEMD_OFFLINE=1, and 0 with it, all packages installed.
  • SLES 15.7, SLES 16, Leap 16 (12.3.3): MariaDB-test only requires /usr/bin/perl, and perl-base has no Memoize.pm, so MTR couldn't start. With perl(Memoize) in test_packages (perl-Memoize on CentOS/UBI 8-10), main.1st and main.select pass. The rendered SLES 16 steps: MTR not starting saves nothing and says so; a failing test saves only var.tar.gz; passing saves nothing.