Skip to content

[AI] OSAC-3593: Move e2e test suite (tests/) from osac-test-infra into the osac mono-repo - #409

Closed
osac-jira-ai-issue-solver[bot] wants to merge 4 commits into
osac-project:mainfrom
amej:osac-jira-ai-issue-solver/OSAC-3593
Closed

[AI] OSAC-3593: Move e2e test suite (tests/) from osac-test-infra into the osac mono-repo#409
osac-jira-ai-issue-solver[bot] wants to merge 4 commits into
osac-project:mainfrom
amej:osac-jira-ai-issue-solver/OSAC-3593

Conversation

@osac-jira-ai-issue-solver

@osac-jira-ai-issue-solver osac-jira-ai-issue-solver Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Resolves OSAC-3593

Summary

Move the e2e test suite from osac-test-infra/tests/ into this mono-repo at tests/e2e/, so a PR that changes API behavior can update its own tests in the same PR.

  • Copied all 142 pytest tests (bmaas, vmaas, caas, catalog, storage, references) plus core helpers, conftest fixtures, and test infrastructure (pyproject.toml, uv.lock, Containerfile)
  • Updated AGENTS.md to list tests/e2e/ as a component and clarify osac-test-infra now holds only workflow orchestration
  • Updated e2e caller workflow comments to document the transition state and the companion test-infra change needed

Transition plan

The e2e workflows still reference osac-test-infra for the checkout (needed for orchestration actions/scripts). A companion PR in osac-test-infra will update the reusable workflows to source tests from the osac checkout instead, after which osac-test-infra's tests/ copy can be removed.

Test plan

  • All 142 tests collected by pytest (pytest --collect-only)
  • Python imports resolve correctly (from tests.core.grpc_client import GRPCClient)
  • ruff check and ruff format pass cleanly
  • uv lock --check passes (dependencies resolve)
  • Go workspace unaffected (go work sync)
  • Live e2e validation after companion osac-test-infra PR lands (requires deployed cluster)

… osac mono-repo

Co-authored-by: Ameya Sathe <asathe@redhat.com>
@openshift-ci-robot

openshift-ci-robot commented Aug 20, 2026

Copy link
Copy Markdown

@osac-jira-ai-issue-solver[bot]: This pull request references OSAC-3593 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "5.1.0" version, but no target version was set.

Details

In response to this:

Resolves OSAC-3593

Summary

Move the e2e test suite from osac-test-infra/tests/ into this mono-repo at tests/e2e/, so a PR that changes API behavior can update its own tests in the same PR.

  • Copied all 142 pytest tests (bmaas, vmaas, caas, catalog, storage, references) plus core helpers, conftest fixtures, and test infrastructure (pyproject.toml, uv.lock, Containerfile)
  • Updated AGENTS.md to list tests/e2e/ as a component and clarify osac-test-infra now holds only workflow orchestration
  • Updated e2e caller workflow comments to document the transition state and the companion test-infra change needed

Transition plan

The e2e workflows still reference osac-test-infra for the checkout (needed for orchestration actions/scripts). A companion PR in osac-test-infra will update the reusable workflows to source tests from the osac checkout instead, after which osac-test-infra's tests/ copy can be removed.

Test plan

  • All 142 tests collected by pytest (pytest --collect-only)
  • Python imports resolve correctly (from tests.core.grpc_client import GRPCClient)
  • ruff check and ruff format pass cleanly
  • uv lock --check passes (dependencies resolve)
  • Go workspace unaffected (go work sync)
  • Live e2e validation after companion osac-test-infra PR lands (requires deployed cluster)

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@osac-jira-ai-issue-solver

Copy link
Copy Markdown
Contributor Author

AI Session Costs

Session Cost
New ticket $6.87
Total $6.87

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 20, 2026

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure · Started 6:13 AM UTC · Completed 6:55 AM UTC

Commit: da2193e · View workflow run →

-Upgrade pygments transitive dependency from 2.19.2 to >= 2.20.0 via uv lock --upgrade-package pygments in tests/e2e/uv.lock.
-This resolves the low-severity ReDoS vulnerability (GHSA-5239-wwwm-4pmq) flagged during the e2e test suite migration from osac-test-infra.

Signed-off-by: Ameya Sathe <asathe@redhat.com>
Assisted-by: Chai Bot <ship-help-github@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 20, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 8:23 AM UTC · Ended 9:03 AM UTC

Commit: c7ae6a2 · View workflow run →

…dependabot at different runs [OSAC-3593]

Signed-off-by: Ameya Sathe <asathe@redhat.com>
Assisted-by: Chai Bot <ship-help-github@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 20, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:04 AM UTC · Completed 9:46 AM UTC

Commit: 3ebe391 · View workflow run →

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 20, 2026

Copy link
Copy Markdown

Review

Findings

Medium

  • [documentation-consistency] AGENTS.md:3 — Prose says "seven components, each with its own CLAUDE.md/AGENTS.md" but the Components table now has eight entries after adding tests/e2e/. The count is stale. Additionally, tests/e2e/ has no CLAUDE.md or AGENTS.md, making it the only listed component without component-level docs, violating the stated convention.
    Remediation: Update the count to "eight" or remove the specific count. Add a minimal tests/e2e/AGENTS.md covering test structure, fixtures, and local run instructions.

  • [logic-error] .github/workflows/e2e-bmaas-full-install.yml — Workflows still pass test-infra-repository: osac-project/osac-test-infra. CI e2e runs will continue executing tests from osac-test-infra (the old location), not the mono-repo's tests/e2e/. The PR acknowledges this as a phased transition but does not create or link a tracking issue for the companion update. If the companion PR stalls, the mono-repo carries duplicated test content with no mechanism to detect drift.
    Remediation: Create a follow-up issue tracking the companion osac-test-infra workflow update and link it in the PR body. Consider not closing OSAC-3593 until the companion update lands.

  • [supply-chain] tests/e2e/Containerfile:11 — OpenShift client (oc, kubectl) and grpcurl are downloaded via HTTPS without checksum verification. The OSAC CLI download in the same file uses SHA256 checksums, demonstrating the pattern but not applying it consistently.
    Remediation: Add SHA256 checksum verification for both downloads. Pin the OCP version rather than using "stable" to make checksums deterministic.

  • [protected-path] .github/workflows/e2e-bmaas-full-install.yml, .github/workflows/e2e-caas-full-install.yml, .github/workflows/e2e-vmaas-full-install.yml, AGENTS.md — This PR modifies files under protected governance paths (.github/, AGENTS.md). The changes are comment/description updates for the test migration and the PR links to OSAC-3593 with clear rationale. Human approval is always required for protected-path changes regardless of context.

Low

  • [suspicious-file] tests/e2e/tests/caas/contract — Extensionless file containing one line: REQUIRED_VARS="KUBECONFIG OSAC_NAMESPACE OSAC_PULL_SECRET_PATH". This shell-convention file appears to be used by osac-test-infra orchestration scripts and is not consumed by any mono-repo code.
    Remediation: Confirm whether this file is needed after the companion workflow update; remove if not consumed.

  • [supply-chain-image-pinning] tests/e2e/Containerfile:14 — Base image (ubi9/ubi:latest) and uv (ghcr.io/astral-sh/uv:latest) use mutable :latest tags without digest pins.
    Remediation: Pin both images by digest or specific version tag.

  • [shell-injection] tests/e2e/tests/conftest.py_make_jwt_token_script constructs a shell command via f-string interpolation with keycloak_url, username, and password. Risk is low since values come from CI env vars and hardcoded test strings.
    Remediation: Use shlex.quote() around interpolated values.

  • [config-divergence] tests/e2e/pyproject.toml — Ruff lint rule set (E,F,W,I,UP,ANN,B,SIM,RUF) is broader than fulfillment-service (E,W,F). Divergence should be intentional.

  • [edge-case] tests/e2e/tests/conftest.py — Session-scoped grpc/private_grpc fixtures use static 4-hour tokens. Long sessions running all suites sequentially could approach this limit. Pre-existing behavior from osac-test-infra.

Previous run

Review

Findings

High

  • [stale-doc] osac-operator/AGENTS.md:131 — States "E2E tests: pytest-based, live in the separate osac-test-infra repo" which is now factually incorrect. This PR moves e2e test content into tests/e2e/ in this mono-repo; the cited documentation would actively mislead contributors about where tests live.
    Remediation: Update the line to reference tests/e2e/ in this mono-repo.

  • [stale-doc] osac-csi-driver/AGENTS.md:120 — States "E2E tests live in osac-test-infra" which is now stale. Same issue as above — the parenthetical reference needs updating.
    Remediation: Update to: "None in this component (E2E tests live in tests/e2e/ in this mono-repo)."

Medium

  • [CI coverage regression] .github/workflows/e2e-vmaas-full-install.yml:122 — The e2e workflows still delegate to osac-project/osac-test-infra reusable workflows that source test content (tests/, pyproject.toml, Containerfile) from the osac-test-infra checkout, not from tests/e2e/ in this repo. Until the companion osac-test-infra update ships, modifications to tests/e2e/ will NOT be picked up by CI. The PR body acknowledges this as a phased transition — the comment-only workflow changes document the gap — but any PR that changes both production code and its e2e test in tests/e2e/ will not actually validate the updated test until the wiring is complete.
    Remediation: Link the companion osac-test-infra PR explicitly (by URL) so reviewers can track the dependency. Consider filing a tracking issue.

  • [supply-chain] tests/e2e/Containerfile:10 — The oc/kubectl binaries (from mirror.openshift.com) and grpcurl (from GitHub Releases) are downloaded without checksum verification. The uv binary uses the :latest mutable tag (ghcr.io/astral-sh/uv:latest). In contrast, the osac CLI download path in the same Containerfile correctly fetches and verifies a SHA-256 checksum — proving the pattern is known but inconsistently applied.
    Remediation: Pin ghcr.io/astral-sh/uv to a digest (@sha256:...). Add SHA-256 checksum verification for the oc/kubectl tarball and grpcurl release.

  • [protected-path] AGENTS.md, .github/workflows/e2e-{bmaas,caas,vmaas}-full-install.yml — This PR modifies 4 files under protected governance paths (.github/ and AGENTS.md). The changes are comment/description updates and a component table addition. The PR links to Jira OSAC-3593 and explains the rationale. Human approval is always required for protected-path changes regardless of context.

Low

  • [stale-doc] docs/CONVENTIONS.md:18 — Cross-repo dependency table references "osac-test-infra test helpers" as the downstream target when fulfillment-service CLI flags change. With tests now in tests/e2e/, this is an in-repo change, not cross-repo.

  • [component-conventions] tests/e2e/ — The AGENTS.md header says "seven components, each with its own CLAUDE.md/AGENTS.md" but the PR adds tests/e2e/ as an 8th entry without adding these files or updating the count.

  • [missing-authorization] The PR references Jira OSAC-3593 but has no linked GitHub issue. Authorization is verifiable through the jira/valid-reference label.

  • [cross-module import pattern] tests/e2e/tests/caas/test_cluster_create.pyunique_name is imported from tests.catalog.conftest (a sibling sub-package's conftest). All other shared utilities are correctly placed in tests/core/.

  • [naming-convention] tests/e2e/tests/core/k8s_client.py_base() method uses single-underscore prefix (private) but is accessed externally in helpers.py and test files.

  • [Type annotation error] tests/e2e/tests/vmaas/conftest.pydefault_networking fixture uses yield but return type is dict[str, str] instead of Generator[dict[str, str], None, None].

  • [Redundant arguments] tests/e2e/tests/core/helpers.py:633base_args appends --as system:admin but K8sClient._base() already includes it. Results in doubled flag (kubectl silently accepts).

  • [credential exposure] tests/e2e/tests/core/grpc_client.py:205 — Bearer token passed as CLI argument to grpcurl, visible in /proc/<pid>/cmdline. Mitigated by ephemeral container execution.

  • [stale-rule] tests/e2e/pyproject.toml:69per-file-ignores suppresses ANN101 which was removed from ruff in v0.1.0. Dead configuration.


Labels: PR adds Python e2e test suite with uv lock, modifies GitHub Actions workflows, and restructures repo infrastructure.


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot added python:uv Pull requests that update python:uv code github_actions Pull requests that update GitHub Actions code infrastructure Infrastructure issues not directly related to development documentation Improvements or additions to documentation labels Aug 20, 2026
@omer-vishlitzky
omer-vishlitzky dismissed fullsend-ai-review[bot]’s stale review August 20, 2026 09:46

Auto-dismissed: only Prow labels gate merging

Update references in docs/CONVENTIONS.md, osac-csi-driver/AGENTS.md, and
osac-operator/AGENTS.md to reflect that the e2e test suite has migrated from the external
osac-test-infra repository into tests/e2e/ within the mono-repo.

Signed-off-by: Ameya Sathe <asathe@redhat.com>
Assisted-by: Claude Code <noreply@anthropic.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 20, 2026

Copy link
Copy Markdown

🤖 Review · ❌ Terminated · Started 10:42 AM UTC · Ended 11:24 AM UTC

Commit: 8e48401 · View workflow run →

@amej

amej commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

/fs-fix Address all Low findings: update CONVENTIONS.md cross-repo reference, fix component count in AGENTS.md, move unique_name to tests/core/helpers.py, fix default_networking return type annotation, remove duplicate --as system:admin in helpers.py:633, and remove ANN101 from per-file-ignores in pyproject.toml.

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See the review comment for full details.


Note: The following inline comments could not be posted on the diff (GitHub returned 422) and are included here instead:

  • AGENTS.md (file-level): Line 3 · [medium] documentation-consistency

Prose says 'seven components, each with its own CLAUDE.md/AGENTS.md' but the Components table now has eight entries after adding tests/e2e/. The count is stale. Additionally, tests/e2e/ has no CLAUDE.md or AGENTS.md, making it the only listed component without component-level docs.

Suggested fix: Update the count to 'eight' or remove the specific count. Add a minimal tests/e2e/AGENTS.md covering test structure, fixtures, and local run instructions.

  • tests/e2e/Containerfile:11: [medium] supply-chain

OpenShift client (oc, kubectl) and grpcurl are downloaded via HTTPS without checksum verification. The OSAC CLI download in the same file uses SHA256 checksums, demonstrating the pattern but not applying it consistently.

Suggested fix: Add SHA256 checksum verification for both downloads. Pin the OCP version rather than using 'stable' to make checksums deterministic.

  • tests/e2e/Containerfile:14: [low] supply-chain-image-pinning

Base image (ubi9/ubi:latest) and uv (ghcr.io/astral-sh/uv:latest) use mutable :latest tags without digest pins.

Suggested fix: Pin both images by digest or specific version tag.

@fullsend-ai-review fullsend-ai-review Bot added the requires-manual-review Review requires human judgment label Aug 20, 2026
@fullsend-ai-review

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 10:42 AM UTC · Completed 11:24 AM UTC

Commit: 8e48401 · View workflow run →

@sk-ilya sk-ilya left a comment

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.

could we please preserve the original repos commit history when migrating to monorepo? 🙏

@amej

amej commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Block merge until the label is removed label Aug 21, 2026
@omer-vishlitzky
omer-vishlitzky dismissed sk-ilya’s stale review August 21, 2026 19:08

Auto-dismissed: only Prow labels gate merging

@openshift-ci

openshift-ci Bot commented Aug 21, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: osac-jira-ai-issue-solver[bot]
Once this PR has been reviewed and has the lgtm label, please ask for approval from sk-ilya. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci

openshift-ci Bot commented Aug 23, 2026

Copy link
Copy Markdown

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

Closing this PR based on review feedback from @sk-ilya — the migration should preserve the original osac-test-infra commit history rather than copying files without history.

A revised approach using git subtree or git filter-repo to graft the commit history into the mono-repo will be needed. See OSAC-3593 for the parent task.


AI-generated. Review for accuracy.

DakCrowder added a commit to DakCrowder/osac that referenced this pull request Aug 25, 2026
…est-infra (1/5) (osac-project#488)

## Summary

History-preserving migration of the **bmaas** e2e test suite from
[osac-test-infra](https://github.com/osac-project/osac-test-infra) into
this mono-repo. This is **PR 1 of 5** in a stacked series — one per test
suite (bmaas → vmaas → caas → catalog → storage).

Commit history from `osac-test-infra` is preserved via `git
filter-repo`, so `git log tests/bmaas/` shows the original authors and
messages.

### What this PR adds

- **`tests/bmaas/`** — BMaaS lifecycle, inventory-exhaustion, and
networking e2e tests with suite-level `conftest.py`
- **`tests/core/`** — shared test utilities used by all suites
(`grpc_client`, `k8s_client`, `keycloak`, `helpers`, `runner`, etc.)
- **`tests/conftest.py`** — session-scoped fixtures (gRPC client,
Keycloak setup, tenant provisioning) inherited by every suite
- **`pyproject.toml`** — pytest configuration (`testpaths`,
`pythonpath`, `pytest-xdist` parallelism, markers, logging) migrated
from `osac-test-infra`

### Placement decision

Tests live at repo-root `tests/` (not nested under components). This
preserves the existing import chain (`from tests.core.*`) and pytest
conftest hierarchy with zero refactoring.

### Stack overview

| PR | Suite | Base |
|----|-------|------|
| **1/5 ([this
PR](osac-project#488 (comment) |
**bmaas** + shared infra |
`([main](https://github.com/osac-project/osac/tree/main))` |
| [2/5](osac-project#489) | vmaas | this
branch |
| 3/5 | caas | vmaas branch |
| 4/5 | catalog | caas branch |
| 5/5 | storage | catalog branch |

> **Merge order matters** — this PR must land first since it contains
`pyproject.toml`, `tests/core/`, and the shared `conftest.py` that all
subsequent suites depend on.

## Context

- Jira: [OSAC-3593](https://redhat.atlassian.net/browse/OSAC-3593)
- Parent: [OSAC-4255](https://redhat.atlassian.net/browse/OSAC-4255)
- Supersedes: osac-project#409 (abandoned — did not preserve commit history per
reviewer @sk-ilya's
[feedback](osac-project#409 (review)))

## Test plan

- [ ] Verify `git log tests/bmaas/` shows original commit history from
`osac-test-infra`
- [ ] Verify `git log tests/core/` shows original commit history
- [ ] Confirm pytest discovers all bmaas tests: `python -m pytest
tests/bmaas/ --collect-only`
- [ ] Full e2e validation after all 5 PRs are merged (per
[OSAC-3593](https://redhat.atlassian.net/browse/OSAC-3593) acceptance
criteria)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added a comprehensive end-to-end testing foundation for compute,
networking, bare-metal, authentication, metering, and lifecycle
workflows.
- Added coverage for networking connectivity, tenant isolation, external
IP behavior, NAT, and resource cleanup.
- Added bare-metal lifecycle, restart, inventory exhaustion,
provisioning, and recovery scenarios.
- Added reusable command-line, API, Kubernetes, authentication, polling,
and metering test utilities.
- **Chores**
- Added project configuration for testing, formatting, linting, and type
checking.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Will Gordon <wgordon@redhat.com>
Signed-off-by: Elad Tabak <etabak@redhat.com>
Signed-off-by: akshaynadkarni <25892229+akshaynadkarni@users.noreply.github.com>
Signed-off-by: Juan Hernandez <juan.hernandez@redhat.com>
Signed-off-by: Alberto Losada <alosadag@redhat.com>
Signed-off-by: Zoltan Szabo <zszabo@redhat.com>
Signed-off-by: Dakota Crowder <dcrowder@redhat.com>
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
Signed-off-by: Haim Tayrie <htayrie@htayrie-thinkpadt14gen5.raanaii.csb>
Signed-off-by: Nick Carboni <ncarboni@redhat.com>
Signed-off-by: Vladik Romanovsky <vromanso@redhat.com>
Signed-off-by: Tzif <tmorgens@redhat.com>
Signed-off-by: MENNY ABOUSH <maboush@maboush-thinkpadt14gen5.raanaii.csb>
Signed-off-by: omer-vishlitzky <omer.vishlitzky@gmail.com>
Signed-off-by: Marc Sluiter <msluiter@redhat.com>
Signed-off-by: Dan Manor <dmanor@redhat.com>
Co-authored-by: omer-vishlitzky <omer.vishlitzky@gmail.com>
Co-authored-by: openshift-merge-bot[bot] <148852131+openshift-merge-bot[bot]@users.noreply.github.com>
Co-authored-by: Will Gordon <wgordon@redhat.com>
Co-authored-by: Elad Tabak <etabak@redhat.com>
Co-authored-by: Omer Vishlitzky <ovishlit@redhat.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: akshaynadkarni <25892229+akshaynadkarni@users.noreply.github.com>
Co-authored-by: Juan Hernandez <juan.hernandez@redhat.com>
Co-authored-by: Omer Vishlitzky <22615781+omer-vishlitzky@users.noreply.github.com>
Co-authored-by: Ori Amizur <60868946+ori-amizur@users.noreply.github.com>
Co-authored-by: Dakota Crowder <dcrowder@redhat.com>
Co-authored-by: Alberto Losada <alosadag@redhat.com>
Co-authored-by: Ilya Skornyakov <iskornya@redhat.com>
Co-authored-by: Zoltan Szabo <zszabo@redhat.com>
Co-authored-by: CrystalChun <cchun@redhat.com>
Co-authored-by: Elior Erez <eerez@redhat.com>
Co-authored-by: Crystal <CrystalChun@users.noreply.github.com>
Co-authored-by: Ygal Blum <ygal.blum@gmail.com>
Co-authored-by: Haim Tayrie <htayrie@htayrie-thinkpadt14gen5.raanaii.csb>
Co-authored-by: Ori Amizur <oamizur@redhat.com>
Co-authored-by: Nick Carboni <ncarboni@redhat.com>
Co-authored-by: Vladik Romanovsky <vromanso@redhat.com>
Co-authored-by: Tzif <tmorgens@redhat.com>
Co-authored-by: htayrie-rh <htayrie@redhat.com>
Co-authored-by: Menny Aboush <mennyaboush@gmail.com>
Co-authored-by: MENNY ABOUSH <maboush@maboush-thinkpadt14gen5.raanaii.csb>
Co-authored-by: Daniel Erez <danielerez@gmail.com>
Co-authored-by: Marc Sluiter <msluiter@redhat.com>
Co-authored-by: Siddarth R <sroyapal@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Adrien Gentil <agentil@redhat.com>
Co-authored-by: Deivanai Murugappan Rani <dmurugap@redhat.com>
Co-authored-by: Dan Manor <dmanor@redhat.com>
Co-authored-by: Chai Bot <ship-help-github@redhat.com>
CrystalChun added a commit to CrystalChun/osac that referenced this pull request Aug 25, 2026
…est-infra (1/5) (osac-project#488)

## Summary

History-preserving migration of the **bmaas** e2e test suite from
[osac-test-infra](https://github.com/osac-project/osac-test-infra) into
this mono-repo. This is **PR 1 of 5** in a stacked series — one per test
suite (bmaas → vmaas → caas → catalog → storage).

Commit history from `osac-test-infra` is preserved via `git
filter-repo`, so `git log tests/bmaas/` shows the original authors and
messages.

### What this PR adds

- **`tests/bmaas/`** — BMaaS lifecycle, inventory-exhaustion, and
networking e2e tests with suite-level `conftest.py`
- **`tests/core/`** — shared test utilities used by all suites
(`grpc_client`, `k8s_client`, `keycloak`, `helpers`, `runner`, etc.)
- **`tests/conftest.py`** — session-scoped fixtures (gRPC client,
Keycloak setup, tenant provisioning) inherited by every suite
- **`pyproject.toml`** — pytest configuration (`testpaths`,
`pythonpath`, `pytest-xdist` parallelism, markers, logging) migrated
from `osac-test-infra`

### Placement decision

Tests live at repo-root `tests/` (not nested under components). This
preserves the existing import chain (`from tests.core.*`) and pytest
conftest hierarchy with zero refactoring.

### Stack overview

| PR | Suite | Base |
|----|-------|------|
| **1/5 ([this
PR](osac-project#488 (comment) |
**bmaas** + shared infra |
`([main](https://github.com/osac-project/osac/tree/main))` |
| [2/5](osac-project#489) | vmaas | this
branch |
| 3/5 | caas | vmaas branch |
| 4/5 | catalog | caas branch |
| 5/5 | storage | catalog branch |

> **Merge order matters** — this PR must land first since it contains
`pyproject.toml`, `tests/core/`, and the shared `conftest.py` that all
subsequent suites depend on.

## Context

- Jira: [OSAC-3593](https://redhat.atlassian.net/browse/OSAC-3593)
- Parent: [OSAC-4255](https://redhat.atlassian.net/browse/OSAC-4255)
- Supersedes: osac-project#409 (abandoned — did not preserve commit history per
reviewer @sk-ilya's
[feedback](osac-project#409 (review)))

## Test plan

- [ ] Verify `git log tests/bmaas/` shows original commit history from
`osac-test-infra`
- [ ] Verify `git log tests/core/` shows original commit history
- [ ] Confirm pytest discovers all bmaas tests: `python -m pytest
tests/bmaas/ --collect-only`
- [ ] Full e2e validation after all 5 PRs are merged (per
[OSAC-3593](https://redhat.atlassian.net/browse/OSAC-3593) acceptance
criteria)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added a comprehensive end-to-end testing foundation for compute,
networking, bare-metal, authentication, metering, and lifecycle
workflows.
- Added coverage for networking connectivity, tenant isolation, external
IP behavior, NAT, and resource cleanup.
- Added bare-metal lifecycle, restart, inventory exhaustion,
provisioning, and recovery scenarios.
- Added reusable command-line, API, Kubernetes, authentication, polling,
and metering test utilities.
- **Chores**
- Added project configuration for testing, formatting, linting, and type
checking.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Will Gordon <wgordon@redhat.com>
Signed-off-by: Elad Tabak <etabak@redhat.com>
Signed-off-by: akshaynadkarni <25892229+akshaynadkarni@users.noreply.github.com>
Signed-off-by: Juan Hernandez <juan.hernandez@redhat.com>
Signed-off-by: Alberto Losada <alosadag@redhat.com>
Signed-off-by: Zoltan Szabo <zszabo@redhat.com>
Signed-off-by: Dakota Crowder <dcrowder@redhat.com>
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
Signed-off-by: Haim Tayrie <htayrie@htayrie-thinkpadt14gen5.raanaii.csb>
Signed-off-by: Nick Carboni <ncarboni@redhat.com>
Signed-off-by: Vladik Romanovsky <vromanso@redhat.com>
Signed-off-by: Tzif <tmorgens@redhat.com>
Signed-off-by: MENNY ABOUSH <maboush@maboush-thinkpadt14gen5.raanaii.csb>
Signed-off-by: omer-vishlitzky <omer.vishlitzky@gmail.com>
Signed-off-by: Marc Sluiter <msluiter@redhat.com>
Signed-off-by: Dan Manor <dmanor@redhat.com>
Co-authored-by: omer-vishlitzky <omer.vishlitzky@gmail.com>
Co-authored-by: openshift-merge-bot[bot] <148852131+openshift-merge-bot[bot]@users.noreply.github.com>
Co-authored-by: Will Gordon <wgordon@redhat.com>
Co-authored-by: Elad Tabak <etabak@redhat.com>
Co-authored-by: Omer Vishlitzky <ovishlit@redhat.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: akshaynadkarni <25892229+akshaynadkarni@users.noreply.github.com>
Co-authored-by: Juan Hernandez <juan.hernandez@redhat.com>
Co-authored-by: Omer Vishlitzky <22615781+omer-vishlitzky@users.noreply.github.com>
Co-authored-by: Ori Amizur <60868946+ori-amizur@users.noreply.github.com>
Co-authored-by: Dakota Crowder <dcrowder@redhat.com>
Co-authored-by: Alberto Losada <alosadag@redhat.com>
Co-authored-by: Ilya Skornyakov <iskornya@redhat.com>
Co-authored-by: Zoltan Szabo <zszabo@redhat.com>
Co-authored-by: CrystalChun <cchun@redhat.com>
Co-authored-by: Elior Erez <eerez@redhat.com>
Co-authored-by: Crystal <CrystalChun@users.noreply.github.com>
Co-authored-by: Ygal Blum <ygal.blum@gmail.com>
Co-authored-by: Haim Tayrie <htayrie@htayrie-thinkpadt14gen5.raanaii.csb>
Co-authored-by: Ori Amizur <oamizur@redhat.com>
Co-authored-by: Nick Carboni <ncarboni@redhat.com>
Co-authored-by: Vladik Romanovsky <vromanso@redhat.com>
Co-authored-by: Tzif <tmorgens@redhat.com>
Co-authored-by: htayrie-rh <htayrie@redhat.com>
Co-authored-by: Menny Aboush <mennyaboush@gmail.com>
Co-authored-by: MENNY ABOUSH <maboush@maboush-thinkpadt14gen5.raanaii.csb>
Co-authored-by: Daniel Erez <danielerez@gmail.com>
Co-authored-by: Marc Sluiter <msluiter@redhat.com>
Co-authored-by: Siddarth R <sroyapal@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Adrien Gentil <agentil@redhat.com>
Co-authored-by: Deivanai Murugappan Rani <dmurugap@redhat.com>
Co-authored-by: Dan Manor <dmanor@redhat.com>
Co-authored-by: Chai Bot <ship-help-github@redhat.com>
@amej amej closed this Sep 2, 2026
@amej

amej commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Abandoned this approach in favour of history preserving migration.

osac-project/osac — 10 PRs merged:

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

Labels

ai-pr do-not-merge/hold Block merge until the label is removed documentation Improvements or additions to documentation github_actions Pull requests that update GitHub Actions code infrastructure Infrastructure issues not directly related to development jira/valid-reference needs-rebase python:uv Pull requests that update python:uv code requires-manual-review Review requires human judgment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants