Skip to content
Merged
Show file tree
Hide file tree
Changes from 39 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
35c0813
Add workflow for integration tests.
quinntaylormitchell Jun 15, 2026
bb52e05
Run the integration tests inside the published dependencies image
quinntaylormitchell Jun 15, 2026
1605df7
Add integration-tests workflow to artifact-build instead of its own w…
quinntaylormitchell Jun 15, 2026
b33cd44
Merge branch 'main' into feature branch
quinntaylormitchell Jun 22, 2026
bb47ca8
Trying something
quinntaylormitchell Jun 22, 2026
cbc4ac3
Merge branch 'main' into feature branch
quinntaylormitchell Jul 6, 2026
d4ac376
idk
quinntaylormitchell Jul 6, 2026
de7a3d5
idk2
quinntaylormitchell Jul 6, 2026
397e4f1
idk3
quinntaylormitchell Jul 6, 2026
52338b0
Try a new approach
quinntaylormitchell Jul 7, 2026
14c8a77
Run the integration tests with a workflow.
quinntaylormitchell Jul 13, 2026
aa498c1
Continue
quinntaylormitchell Jul 13, 2026
4a4e700
Improvements
quinntaylormitchell Jul 14, 2026
8f6c8dc
Fix path error
quinntaylormitchell Jul 16, 2026
205f613
Separate core and package integration tests
quinntaylormitchell Jul 16, 2026
426adc6
Fix a few little things
quinntaylormitchell Jul 16, 2026
3da6391
Merge branch 'main' into integration-tests-gh-workflow
jackluo923 Jul 16, 2026
540da75
Fix double-quote pytest bug
quinntaylormitchell Jul 17, 2026
7c5fe43
Fix file path stuff
quinntaylormitchell Jul 18, 2026
0f861d3
Run core tests directly on runner
quinntaylormitchell Jul 18, 2026
864dcb2
Include clp-packge-image.id in tarball
quinntaylormitchell Jul 18, 2026
98ffe9e
Install uv before running tests
quinntaylormitchell Jul 18, 2026
0acc0b3
Run the pytest commands on the jammy image
quinntaylormitchell Jul 18, 2026
981e81f
Fix yet another path-related bug
quinntaylormitchell Jul 19, 2026
bd54f23
Try running package tests directly on the runner
quinntaylormitchell Jul 19, 2026
18c78bb
Install mariadb
quinntaylormitchell Jul 20, 2026
96d2b9d
Run core tests on bare runner
quinntaylormitchell Jul 20, 2026
247ebdb
Add all binaries to the clp-core-binaries build
quinntaylormitchell Jul 20, 2026
612e553
Merge branch 'main' into feature branch
quinntaylormitchell Jul 21, 2026
202ec31
Remove package test stuff from this PR (moved to 2407).
quinntaylormitchell Jul 21, 2026
0320b76
Fix long line
quinntaylormitchell Jul 21, 2026
87ac4ec
Fix command issue and add integration test directory to clp path filter.
quinntaylormitchell Jul 21, 2026
81a617c
Fix typos
quinntaylormitchell Jul 21, 2026
3481d92
Fix typos
quinntaylormitchell Jul 21, 2026
523ca73
Merge branch 'main' into feature branch
quinntaylormitchell Jul 27, 2026
913713f
Rabbit
quinntaylormitchell Jul 27, 2026
b302435
Get rid of unnecessary 'if:'
quinntaylormitchell Jul 30, 2026
a048c19
Update docs.
quinntaylormitchell Jul 30, 2026
12e48d4
Merge branch 'main' into integration-tests-gh-workflow
kirkrodrigues Aug 4, 2026
a65e988
Address Kirk's review.
quinntaylormitchell Aug 4, 2026
5afd24a
Further Kirk comments.
quinntaylormitchell Aug 4, 2026
454b9c9
Further Kirk comments.
quinntaylormitchell Aug 4, 2026
72e56a0
Address Kirk's comments.
quinntaylormitchell Aug 6, 2026
49c5c27
Address Kirk's comments.
quinntaylormitchell Aug 6, 2026
c3cd074
Merge branch 'main' into integration-tests-gh-workflow
quinntaylormitchell Aug 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 54 additions & 1 deletion .github/workflows/clp-artifact-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ jobs:
- "components/core/src/**"
- "components/core/tests/**"
- "components/core/tools/scripts/utils/build-and-run-unit-tests.py"
- "integration-tests/**"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we separate this into its own filter? Otherwise, all core binary jobs will get triggered anytime the integration tests change. I guess you want ubuntu-jammy-binaries to be triggered when the integration-tests change, so perhaps change that job to also be triggered when the new integration-tests filter is set.

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.

Agreed

- "taskfile.yaml"
- "taskfiles/**"
- "tools/scripts/deps-download/**"
Expand Down Expand Up @@ -575,7 +576,8 @@ jobs:

mkdir -p "${output_dir}"
cd "$GITHUB_WORKSPACE/components/core/build"
tar cfvv "${output_dir}/clp.tar" clg clp clp-s glt make-dictionaries-readable
tar cfvv "${output_dir}/clp.tar" \
clg clo clp clp-s glt indexer log-converter make-dictionaries-readable reducer-server
shell: "bash"

- if: "matrix.upload_binaries == true"
Expand Down Expand Up @@ -724,6 +726,57 @@ jobs:
'build/lint-clang-tidy/**/*'
)}}

ubuntu-jammy-integration-tests-core:
name: "ubuntu-jammy-integration-tests-core"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do we need the name for anything?

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 don't think so; I was following suit from ubuntu-jammy-lint. Should I keep it for consistency or remove it?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think you can remove it. I think the one for ubuntu-jammy-lint was so that we could make ubuntu-jammy-lint a required workflow (for the PR to be merged); but there were issues with doing that and I guess we never removed the name.

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.

Gotcha, removed it

# Run if the ancestor jobs were successful/skipped and building clp was successful.
if: "!cancelled() && !failure() && needs.ubuntu-jammy-binaries.result == 'success'"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
# Run if the ancestor jobs were successful/skipped and building clp was successful.
if: "!cancelled() && !failure() && needs.ubuntu-jammy-binaries.result == 'success'"

I don't think this is necessary since needs: "ubuntu-jammy-binaries" implies the same.

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.

Agreed

needs: "ubuntu-jammy-binaries"
runs-on: *runner
env:
OS_NAME: "ubuntu-jammy"
BUILD_DIR: "build"
steps:
- uses: "actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd" # v6.0.2
with:
submodules: "recursive"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
persist-credentials: false

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
submodules: "recursive"
persist-credentials: false
persist-credentials: false
submodules: "recursive"

Nit: Alphbetize

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.

Agreed


- name: "Download the binaries artifact"
uses: "actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e"
with:
name: "${{env.BINARIES_ARTIFACT_NAME_PREFIX}}${{env.OS_NAME}}"
path: "${{env.BUILD_DIR}}/${{env.BINARIES_ARTIFACT_NAME_PREFIX}}${{env.OS_NAME}}"

- name: "Untar binaries"
working-directory: >-
${{env.BUILD_DIR}}/${{env.BINARIES_ARTIFACT_NAME_PREFIX}}${{env.OS_NAME}}
run: |-
tar xf clp.tar
rm clp.tar

- name: "Install uv"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Let's use install-uv from yscope-dev-utils instead.

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.

Agreed

uses: "astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990" # v8.3.2

- name: "Install MariaDB Connector/C"
run: "sudo apt-get update && sudo apt-get install -y libmariadb-dev"

- name: "Run core integration tests"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
- name: "Run core integration tests"
- name: "Run the integration tests for CLP's core"

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.

Agreed

working-directory: "integration-tests"
env:
CLP_BUILD_DIR: "../${{env.BUILD_DIR}}"
CLP_CORE_BINS_DIR: >-
../${{env.BUILD_DIR}}/${{env.BINARIES_ARTIFACT_NAME_PREFIX}}${{env.OS_NAME}}
HOME: "/tmp"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we add a comment for why this is necessary?

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.

Agreed

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sorry, I still don't understand why we need to set HOME?

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.

Oops we don't, sorry. That's v old

run: "uv run pytest -m 'smoke or core'"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need to run the smoke tests for CLP-core?

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 had it there to provide an indication that pytest was working correctly, and that any other test failures in that run were due to some problem with how I had set up other aspects of the workflow. But we don't need it though, cause the core tests don't import anything from the CLP code. Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Gotcha. Yeah, we can add them in the package integration tests PR.


- name: "Upload the core integration test logs"
if: "always()"
uses: "actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f" # v6.0.0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Use the version used elsewhere in the workflow

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.

This file uses version ending with 789f once in this workflow (not counting this new usage), and uses version ending with fa02 once as well. Which one should I use?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Oh whoops, let's keep this and fix the other one in another PR.

with:
name: "clp-integration-test-core-logs"
path: "${{env.BUILD_DIR}}/integration_tests/test_logs"
retention-days: 3

package-image:
name: "package-image-${{matrix.arch}}"
# NOTE: The aarch64 job is skipped on PRs, so we accept both 'success' and 'skipped'.
Expand Down
5 changes: 4 additions & 1 deletion docs/src/dev-docs/tooling-gh-workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ builds, testing, and linting. We briefly describe each workflow below.
This workflow is responsible for:

1. building (Linux) container images containing CLP-core's dependencies,
2. building CLP-core and running its unit tests, and
2. building CLP-core and running its unit & integration tests, and

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
2. building CLP-core and running its unit & integration tests, and
2. building CLP-core and running its unit & integration tests, and

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.

agreed

3. building a container image containing CLP's package components.

To minimize build times, the jobs in the workflow are organized in the directed acyclic graph (DAG)
Expand Down Expand Up @@ -47,6 +47,7 @@ flowchart LR
ubuntu-jammy-deps-image --> ubuntu-jammy-binaries
ubuntu-jammy-deps-image --> package-image
ubuntu-jammy-binaries --> ubuntu-jammy-binaries-image
ubuntu-jammy-binaries --> ubuntu-jammy-integration-tests-core
:::

Arrows between jobs indicate a dependency. The jobs are as follows:
Expand Down Expand Up @@ -80,6 +81,8 @@ Arrows between jobs indicate a dependency. The jobs are as follows:
core's unit tests.
* `ubuntu-jammy-binaries-image`: Builds an Ubuntu Jammy container image containing CLP-core's
binaries built in the `ubuntu-jammy-binaries` job.
* `ubuntu-jammy-integration-tests-core`: Runs CLP-core's integration tests using the binaries built
in the `ubuntu-jammy-binaries` job. The test logs are uploaded at the end of the test run.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
in the `ubuntu-jammy-binaries` job. The test logs are uploaded at the end of the test run.
in the `ubuntu-jammy-binaries` job, and then uploads the logs from the tests.

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.

agreed


When the PR or commit doesn't change any of the files that affect CLP's dependencies (or the
dependency container images), then the dependency container images won't be rebuilt; instead the
Expand Down
1 change: 1 addition & 0 deletions integration-tests/.pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ markers =
core: mark tests that test the CLP core binaries
package: mark tests that use the CLP package
search: mark tests that test search
smoke: mark tests that are smoke tests

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ditto

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.

Agreed

startstop: mark tests that test start-stop
2 changes: 2 additions & 0 deletions integration-tests/tests/test_clp_native_py_project_imports.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"""Smoke tests to validate that CLP Python projects can be imported without errors."""

import pytest
from clp_mcp_server.constants import QueryJobType
from clp_package_utils.general import JobType
from clp_py_utils.clp_config import StorageEngine
from job_orchestration.scheduler.constants import CompressionJobStatus


@pytest.mark.smoke

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We can undo the changes in this file since it's no longer relevant to this PR, right?

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.

Agreed

def test_clp_native_py_project_enum_classes() -> None:
"""
Verifies that the following CLP Python projects can be imported successfully by testing
Expand Down
Loading