Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avocado LTS base #28

Merged
merged 8 commits into from
Jan 26, 2024
Merged

Avocado LTS base #28

merged 8 commits into from
Jan 26, 2024

Conversation

pevogam
Copy link
Member

@pevogam pevogam commented Jan 26, 2024

This branch lays the foundation for changes to come with an upcoming
LTS release by adapting the use of avocado dependencies to their LTS
version that contains all our patches and will make recent as well as
forthcoming plugin development valid.

This adapts to new behavior in avocado and our merged LXC spawner
that was introduced after 101 and before 102. In particular, out
custom scheduler must take care of the test output directory setup
and Avocado VT doesn't need this because it uses the default avocado
scheduler.

Take the opportunity to also imitate the full name URI setup for
each test like in Avocado VT and avoid cases of folder collision
due to identical shorter test names.
The job log namespace was now properly separated from that of avocado
tests and using for log messages will make them end up in the job.log
as well as a full.log file, something which is needed in order to
restore the previous logging setup for our plugin.
Among those are catching asyncio timeout errors with sufficient
details, summary update with further found test statuses, etc.
The main test task might need additional task dependencies (not to
be confused with test dependencies) like sysinfo data collection or
other plugins that set up or clean up test environments. Instead of
using Avocado's runtime task graph which restricts the possible ID-s
for tests, has a linear topological order progression, and involves
an undesirable composition of graph within a graph, we resort to
providing an alternative handling of avocado's notion of these pre-
and post- tasks per test without much scheduling effort.

Despite the sysinfo support one has to keep in mind that performing
such extra tasks before and after each test would inevitably slow
the run down and unfortunately to a large degree (by >50% from some
measurements).
Recent Avocado versions bring about more race conditions with the
previous asyncio sleep duration and the current one will also shorten
the overall isolation test run time.
These are the starting dependencies that have both full support for
LXC as well as remote spawners. The parallel traversal introduced in
the less stable 98.0 mid-LTS release was disabled by default as
optional experimental functionality and needed an LXC spawner patch
to the main avocado source to be enabled and thus properly used.

Follow up changes after the same intermediary release needed even
more patches on both the avocado (additional remote spawner) and
avocado-vt (enhanced QemuImg utility) and would make retrospective
checkouts at these commits very difficult. It is thus vital that
we get a working dependency version pointer as early as possible
before doing any further changes, let alone the large scale changes
before our own compatibility-synchronized 103.0 LTS release.

This commit now serves as a starting point for full compatibility
with each follow up commit possible to check out and re-validate
if needed. What this means is that any change to follow must be
applicable on top of the Avocado(-VT) 103.0 LTS dependencies which
contain all contributed and needed changes to make it complete.
@pevogam pevogam self-assigned this Jan 26, 2024
@pevogam pevogam added the enhancement New feature or request label Jan 26, 2024
@pevogam pevogam force-pushed the avocado-lts-base branch 2 times, most recently from 7ca3889 to 5c70dbe Compare January 26, 2024 07:42
The main reason not to use PyPI packages is that Avocado VT's
deployment pipeline there has been discontinued. Note that our
pip dependencies file is not wrong in specifying the version
for Avocado VT since if it is already installed the dependency
will be satisfied and we cannot control and don't specify the
way in which Avocado VT should be deployed to begin with.

This approach is also easier for testing with modified versions
of the avocado dependencies since it doesn't require the complete
package publishing process and additional stages.
@pevogam pevogam merged commit 112fb6d into intra2net:master Jan 26, 2024
4 checks passed
@pevogam pevogam deleted the avocado-lts-base branch January 26, 2024 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant