Skip to content

Feature/825 split up workflows unit tests and periodic runs#826

Draft
ArBridgeman wants to merge 11 commits intomainfrom
feature/825_split_up_workflows_unit_tests_and_periodic_runs
Draft

Feature/825 split up workflows unit tests and periodic runs#826
ArBridgeman wants to merge 11 commits intomainfrom
feature/825_split_up_workflows_unit_tests_and_periodic_runs

Conversation

@ArBridgeman
Copy link
Copy Markdown
Collaborator

@ArBridgeman ArBridgeman commented May 6, 2026

closes #825
relates to #337
relates to #730

Checklist

Note: If any of the items in the checklist are not relevant to your PR, just check the box.

For any Pull Request

Is the following correct:

  • the title of the Pull Request?
  • the title of the corresponding issue?
  • there are no other open Pull Requests for the same update/change?
  • that the issue which this Pull Request fixes ("Fixes...") is mentioned?

When Changes Were Made

Did you:

  • update the changelog?
  • update the cookiecutter-template?
  • update the implementation?
  • check coverage and add tests: unit tests and, if relevant, integration tests?
  • update the User Guide & other documentation?
  • resolve any failing CI criteria (incl. Sonar quality gate)?

When Preparing a Release

Have you:

  • thought about version number (major, minor, patch)?
  • checked Exasol packages for updates and resolved open vulnerabilities, if easily possible?

@ArBridgeman ArBridgeman marked this pull request as draft May 6, 2026 12:12
@ArBridgeman
Copy link
Copy Markdown
Collaborator Author

  • Modify docs
  • Should be able to modify the .gitattributes in the template to include all of these, but should discuss if that makes sense
  • Need to add code coverage for

@ArBridgeman ArBridgeman force-pushed the feature/825_split_up_workflows_unit_tests_and_periodic_runs branch from 83e2a12 to 6193139 Compare May 6, 2026 12:13
@@ -0,0 +1,26 @@
name: Fast-Tests-Extension
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there no template for this workflow by intention?
Why?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah! I think I understood:

  • default workflow (generated from template) is fast-tests.yml
  • The yaml renderer has been enhanced to allow (%if sections
  • Such a section includes a call to an individual workflow file if such exists.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a comment to this file?
Or user guide?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good suggestions. I was planning on adding the doc-related points in this PR, just wanted to get an initial response first. Think I'd do both the user guide and a comment in one of the workflow files, like fast-tests.yml

@@ -0,0 +1,37 @@
name: Periodic-Validation
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name is excellent! 💯

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I think it comes from you and/or @tkilias 😄
I took a look at #337 to see what had been discussed & with what I had in mind 😉


run-slow-checks:
name: Slow Checks
uses: ./.github/workflows/slow-checks.yml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we keep the name "slow-checks" or would "slow-tests" be better as pendant to "fast-tests"?

OK looking below, I think you already came to a conclusion here.

      - run-fast-checks
      - run-fast-tests
      - run-slow-checks

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either way works for me -> I'd like slow-tests a bit more.
Though, right now, it's not clear what we'll allow in the current slow-checks.
I like the comments from @tkilias:

If we allowed slow-checks to not be controlled by the PTB, this would reduce how much infrastructure we need to accommodate and would be easier for the downstream projects. It's a question then of what separates slow-checks from other slower tests or checks. Like @tkilias put in this comment:

We might want to make the distinction as to what file options are put into the periodic-validation.yml for the Sonar statistics.

Comment thread exasol/toolbox/config.py
class WorkflowExtension(BaseModel):
"""
Used to define which workflow extensions are active.
The corresponding `*-extension.yml` must be defined in the project.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The corresponding `*-extension.yml` must be defined in the project.
The corresponding files `*-extension.yml` are optional
but must be added in the individual projects.

Comment thread exasol/toolbox/config.py
The corresponding `*-extension.yml` must be defined in the project.
"""

fast_tests: bool = Field(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couldn't the renderer look for the files and include them if they exist?
In this case we wouldn't need an additional configuration in the noxconfig.

There could also be options when calling nox session workflow:generate, e.g. --fast-tests-extension and --slow-checks-extension to generate an initial empty skeleton.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like your point about having the BaseConfig detect the files (instead of providing a configuration). I think that's a better/simpler way to go.

I'll think about it some more. Initially, I'm not so sure about adding on to the CLI with empty skeletons. I like @tkilias's more general suggestion to include/link to examples. We would already have 2 cases covered in the python-toolbox too, so those could be linked.


- name: Run Integration Tests
id: run-integration-tests
run: poetry run -- nox -s test:integration -- --coverage --db-version ${{ matrix.exasol-version }}
Copy link
Copy Markdown
Collaborator

@tkilias tkilias May 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having this by default is a problem, because for most projects that would cause most slow tests to run sequentially. I think the good thing is that the slow-tests don't need to implement the merge-gate anymore. So, we could think about giving this as an example, but with the intention that this will be changed. And, for things like installing Python, creating matrix builds, or uploading coverage, we provide tools and jinja templates/macros.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like this idea and think it would simplify the potential work greatly.

@@ -45,3 +45,10 @@
name: coverage-python${{ matrix.python-version }}-exasol${{ matrix.exasol-version }}-slow
Copy link
Copy Markdown
Collaborator

@tkilias tkilias May 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could assume that slow-tests run coverage for a matrix or in sub-workflows, so we probably need a more robust way to define the name of the coverage file name. Maybe we should add the workflow name, if this is possible. And, if available, the matrix. This might need a jinja macro with parameters to achieve

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With Sonar, we only need the coverage file to look like coverage-python3.10-*. If we do the wild west variants, then I think we need only to communicate this clearly.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we decide we need more information and deliberation, I'm ok to move the slow-checks modifications out. I wanted to get the conversation started in pieces, as when we try the whole, sometimes it can lead to longer and harder discussions.

name: coverage-python${{ matrix.python-version }}-exasol${{ matrix.exasol-version }}-slow
path: .coverage
include-hidden-files: true
(% if workflow_extension.slow_checks %)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we assume the Wild West in this file, we probably don't need this

secrets: inherit
permissions:
contents: read

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably need here an extension workflow call for approval-protected tests that are independent of the slow tests. For example, GPU or SaaS, we might want long-term to split up from the slow tests because they are not always needed for integration tests and they are even more expensive. For GPU tests, we already do this in some repos. An equivalent we probably need in the periodic validation. The idea is that the project can duplicate the structure for slow tests for their own manual approvals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Split up workflows

3 participants