Skip to content

CORENET-7206: Multus OTE: add OpenShift Tests Extension framework infrastructure#303

Open
anuragthehatter wants to merge 7 commits into
openshift:mainfrom
anuragthehatter:ote-framework-setup
Open

CORENET-7206: Multus OTE: add OpenShift Tests Extension framework infrastructure#303
anuragthehatter wants to merge 7 commits into
openshift:mainfrom
anuragthehatter:ote-framework-setup

Conversation

@anuragthehatter

@anuragthehatter anuragthehatter commented May 28, 2026

Copy link
Copy Markdown

Summary

  • Add OTE (OpenShift Tests Extension) framework infrastructure for multus-cni
  • No test cases migrated yet — this is the scaffolding commit only
  • Adds test binary entry point (test/cmd/main.go), build Makefile (test/Makefile), and Dockerfile integration
  • All tests will come in as LifecycleInforming

Test plan

  • Verify CI builds the multus-cni-tests-ext binary successfully
  • Verify the binary is included in the payload image at /usr/bin/multus-cni-tests-ext.gz
  • Register the binary in openshift/origin (companion PR)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added support for building and running extension-based end-to-end tests via a dedicated test entrypoint and command.
    • Introduced a new OTP Multus E2E test suite validating multiple NAD scenarios, including dual-stack address behavior, network-status assertions, and connectivity/ICMP packet validation.
  • Chores

    • Added build targets to compile the E2E binary and inject build/version metadata.
    • Updated the container build to produce and include a compressed E2E test artifact.
    • Updated Go module dependencies to support the extension-based test framework.

@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

This PR adds a multus-cni e2e extension, new build targets, OTP test coverage, and Docker packaging for the compressed test binary.

Changes

Multus e2e extension

Layer / File(s) Summary
Dependencies and test build wiring
go.mod, Makefile, test/Makefile
Adds the extension dependency and module updates, defines build-e2e-tests, and adds local and Linux build targets for the test binary.
Extension CLI entrypoint
test/cmd/main.go
Creates the extension registry, builds OpenShift suite specs, registers the multus-cni extension, and runs the Cobra command.
Suite setup and single-pod NAD checks
test/otp/multus.go
Initializes kubeconfig-backed clients and adds the namespace, bridge NAD, and dummy IPAM tests that validate network-status after pod creation.
Dual-stack connectivity and neighbor capture
test/otp/multus.go
Adds the dual-stack connectivity test and the macvlan tcpdump test that verifies captured Neighbor Advertisements and unsolicited ff02::1 traffic.
Port isolation tests and helpers
test/otp/multus.go
Adds the port-isolation and mixed-isolation tests, plus the NAD and pointer helpers.
Compressed test binary packaging
Dockerfile.openshift
Builds the e2e test binary in the rhel9 stage, gzips it, and copies the compressed artifact into the final image.

Sequence Diagram(s)

sequenceDiagram
  participant Makefile
  participant TestMakefile
  participant Main
  participant OpenShiftTestsExtension
  participant Cobra
  participant Dockerfile

  Makefile->>TestMakefile: build-e2e-tests
  TestMakefile->>Main: build multus-cni-tests-ext
  Main->>OpenShiftTestsExtension: create and register extension specs
  Main->>Cobra: execute root command
  Dockerfile->>TestMakefile: run build-e2e-tests in rhel9 stage
  Dockerfile->>Dockerfile: gzip multus-cni-tests-ext and copy artifact
Loading

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 12 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Structure And Quality ⚠️ Warning FAIL: test/otp/multus.go has 45 bare Expect(err).NotTo(HaveOccurred()) assertions and no AfterEach lifecycle; failures will be hard to diagnose. Add descriptive messages to error assertions and move per-test resource setup/teardown into BeforeEach/AfterEach or helper cleanup hooks.
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning New Ginkgo tests hardcode IPv4 CIDRs/addresses and build an IPv4 URL with fmt.Sprintf, plus they pull images from public registries. Replace hardcoded IPv4 assumptions with IP-family detection/JoinHostPort, and use mirrored/internal images or skip in disconnected jobs.
✅ Passed checks (12 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding OpenShift Tests Extension framework infrastructure for Multus.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed All new Ginkgo titles are static string literals; no titles are built from pod/node/namespace/IPs, timestamps, UUIDs, or fmt.Sprintf.
Microshift Test Compatibility ✅ Passed PASS: The new tests use core K8s APIs and Multus/NAD, which MicroShift supports; I found no MicroShift skip or unsupported OpenShift API use.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The new OTP tests use same-node affinity or a single selected worker; none require multiple nodes or HA, and no SNO-skip guard is needed.
Topology-Aware Scheduling Compatibility ✅ Passed Only test scaffolding/Dockerfile/Makefile changed; no operator/manifests/controllers or topology-sensitive scheduling constraints were added.
Ote Binary Stdout Contract ✅ Passed main() only writes errors to os.Stderr, and no fmt.Print/klog/log.SetOutput/stdout calls or init/TestMain hooks appear in process-level code.
No-Weak-Crypto ✅ Passed No weak crypto primitives or secret/token comparisons appear in the touched files; the new Go code imports no crypto packages.
Container-Privileges ✅ Passed No manifest sets privileged/hostNetwork/hostPID/hostIPC/allowPrivilegeEscalation/SYS_ADMIN; only NET_RAW/NET_ADMIN is added for the tcpdump sniffer.
No-Sensitive-Data-In-Logs ✅ Passed No secrets/PII/internal hostnames were logged; outputs are generic test diagnostics and synthetic namespace/pod names.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@anuragthehatter anuragthehatter changed the title OTE: add OpenShift Tests Extension framework infrastructure [multus-cni] OTE: add OpenShift Tests Extension framework infrastructure May 28, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/cmd/main.go`:
- Around line 31-33: The main() function currently uses
panic(fmt.Sprintf("couldn't build extension test specs from ginkgo: %+v",
err.Error())) on a recoverable setup error; replace this panic with a controlled
exit: write a clear error message including err (use err or err.Error()) to
stderr via fmt.Fprintln(os.Stderr, ...) and call os.Exit(nonZeroCode) to
terminate deterministically. Update imports to include "os" if missing and
remove the panic call in test/cmd/main.go so the code path uses the controlled
stderr+os.Exit behavior when the err variable is non-nil.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6d4d4554-adef-4a1b-b1ba-b8e2f8a3eb43

📥 Commits

Reviewing files that changed from the base of the PR and between b4ec7d8 and 1713ca4.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (5)
  • Dockerfile.openshift
  • Makefile
  • go.mod
  • test/Makefile
  • test/cmd/main.go

Comment thread test/cmd/main.go
@anuragthehatter anuragthehatter changed the title [multus-cni] OTE: add OpenShift Tests Extension framework infrastructure CORENET-7206: OTE: add OpenShift Tests Extension framework infrastructure May 28, 2026
@anuragthehatter anuragthehatter changed the title CORENET-7206: OTE: add OpenShift Tests Extension framework infrastructure CORENET-7206: Multus OTE: add OpenShift Tests Extension framework infrastructure Jun 12, 2026
@openshift-ci

openshift-ci Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: anuragthehatter
Once this PR has been reviewed and has the lgtm label, please assign dougbtv for approval. 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-robot

openshift-ci-robot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: This pull request references CORENET-7206 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 story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add OTE (OpenShift Tests Extension) framework infrastructure for multus-cni
  • No test cases migrated yet — this is the scaffolding commit only
  • Adds test binary entry point (test/cmd/main.go), build Makefile (test/Makefile), and Dockerfile integration
  • All tests will come in as LifecycleInforming

Test plan

  • Verify CI builds the multus-cni-tests-ext binary successfully
  • Verify the binary is included in the payload image at /usr/bin/multus-cni-tests-ext.gz
  • Register the binary in openshift/origin (companion PR)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
  • Added end-to-end test build support with OpenShift extension test execution.
  • Chores
  • Introduced new build targets for compiling e2e test binaries.
  • Added dedicated test build metadata and version injection during compilation.
  • Updated container build to generate, compress, and include the e2e test artifact in runtime images.
  • Updated Go module dependencies to support the new extension-based tests.

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.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 16, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/otp/multus.go`:
- Around line 68-70: The cleanup paths in the test helpers are ignoring errors,
which can leave stale namespaces or active tcpdump processes; update the
deferred cleanup and exec handling in the relevant test functions (including the
namespace delete and pkill tcpdump calls) to check returned errors instead of
discarding them. Only suppress expected cleanup cases like NotFound, and make
sure the same fix is applied across the referenced cleanup blocks in the test
file so no Go error return is ignored.
- Around line 599-637: The macvlan test pods created in the
ReplicationController are not guaranteed to land on the same node as the
sniffer, which can make the observation flaky on multi-node clusters. Update the
test setup around the `rc`/`ReplicationController` template to label the
`sniff-pod` and add pod affinity or node affinity on the six test pods so they
are scheduled onto the same `kubernetes.io/hostname` as `sniff-pod`. Keep the
fix localized to the `Creating 6 test pods with macvlan secondary network` block
and the pod template used by `Create`.
- Around line 720-721: The tcpdump count assertions are comparing the trimmed
stdout as a string, so unexpected non-numeric output can still pass; update the
Neighbor Advertisement and the other affected count checks to parse the result
numerically after strings.TrimSpace using strconv.Atoi, then assert the parsed
count is greater than zero. Keep the fix localized around the existing
stdout.String() handling and the o.Expect checks so the logic validates actual
packet counts instead of string content.
- Line 27: The Ginkgo suite name for the OTP Multus specs is missing the suite
qualifier token used by test/cmd/main.go selection. Update the g.Describe
declaration for OTP Multus to include the “[Suite:openshift/multus-cni]”
qualifier in the name so these specs are picked up by the new extension suite
selector.
- Around line 34-35: The test setup is using context.Background() for
Kubernetes-related API and exec calls, which prevents cancellation and can let a
stuck request outlive the surrounding Eventually timeout. Update the test
helpers in multus setup to use a bounded context instead of a background
context, and thread that context through the Kubernetes call sites so
cancellations/timeouts are respected; focus on the ctx initialization and any
functions in this flow that consume it.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 889abbbd-989e-44df-8adb-08b3f83f47c0

📥 Commits

Reviewing files that changed from the base of the PR and between 31bd7e6 and eb7c336.

📒 Files selected for processing (2)
  • test/cmd/main.go
  • test/otp/multus.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/cmd/main.go

Comment thread test/otp/multus.go Outdated
Comment thread test/otp/multus.go Outdated
Comment thread test/otp/multus.go Outdated
Comment thread test/otp/multus.go
Comment thread test/otp/multus.go Outdated

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/otp/multus.go`:
- Line 927: The ping command construction in the multus test helpers uses
/bin/sh -c with pod-derived input, which should be removed. Update the ping
command setup at the referenced pingCmd assignments in multus.go to pass ping
and its flags as direct argv entries with the target IP as a separate argument,
and apply the same fix to the other matching call sites so no shell
interpolation is used for pod annotation values.
- Line 758: The new Ginkgo specs in multus test suite are missing the standard
OTP informing metadata in their It names. Update the affected It declarations to
include the same [OTP][informing] prefix used by the rest of this suite so these
LifecycleInforming tests are tagged consistently; use the existing test names in
the multus spec block to locate the two new cases.
- Around line 811-817: The node selection logic in the Multus OTP tests is too
restrictive because it assumes a worker-labeled node exists. Update the node
lookup in the affected test helpers (for example the block that uses
clientset.CoreV1().Nodes().List in multus.go and the related spots noted in the
review) to select any Ready, schedulable node instead of filtering on
node-role.kubernetes.io/worker, then continue using that chosen node for
pinning/affinity. Keep the existing assertions, but base them on readiness and
schedulability so the tests still validate bridge isolation on SNO and other
non-HA topologies.
- Line 895: The json.Unmarshal calls in multus.go cannot typecheck because
encoding/json is not imported. Add the encoding/json import alongside the other
imports in test/otp/multus.go, making sure the import is present for all four
unmarshaling sites that use json.Unmarshal.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 88083e4a-8848-4dc7-bea8-a7720bc96ed4

📥 Commits

Reviewing files that changed from the base of the PR and between eb7c336 and 346506b.

📒 Files selected for processing (1)
  • test/otp/multus.go

Comment thread test/otp/multus.go Outdated
Comment thread test/otp/multus.go Outdated
Comment thread test/otp/multus.go
Comment thread test/otp/multus.go Outdated
SachinNinganure pushed a commit to SachinNinganure/ovn-kubernetes that referenced this pull request Jun 24, 2026
…IPv6 exclude ranges

  - [76652]: Dummy CNI plugin support
  - [66876]: Whereabouts dual-stack IPAM
  - [69947]: Macvlan Unsolicited Neighbor Advertisements
  - [80524]: Basic port isolation with bridge CNI
  - [80525]: Mixed port isolation networks
  These tests were moved as they are pure Multus CNI tests without ovn-kubernetes dependencies.
  Total OTP tests now: 9 (2 security + 5 networking tools + 2 port isolation)

  Related: openshift/multus-cni#303
@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: it appears that you have attempted to use some version of the payload command, but your comment was incorrectly formatted and cannot be acted upon. See the docs for usage info.

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 0 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

@anuragthehatter

Copy link
Copy Markdown
Author

/test-with openshift/origin#31231

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/da8e4da0-7036-11f1-8f14-4a9942044fcb-0

@anuragthehatter

Copy link
Copy Markdown
Author

@SachinNinganure lets check above /payload-job-with-prs job results and debug if you see any failures in any of your cases going in via this PR

@SachinNinganure

Copy link
Copy Markdown

@anuragthehatter The payload job build failures look like a CI infrastructure issue, similar to the recent tests-private:4.22 build failures that was fixed (Go version mismatch in builder images).
The Docker builds for multus-cni-openshift and multus-cni-microshift failed before any tests could run.

@SachinNinganure

Copy link
Copy Markdown

/payload-job-with-prs periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@SachinNinganure: it appears that you have attempted to use some version of the payload command, but your comment was incorrectly formatted and cannot be acted upon. See the docs for usage info.

@SachinNinganure

Copy link
Copy Markdown

/retest

1 similar comment
@SachinNinganure

Copy link
Copy Markdown

/retest

Comment thread test/otp/multus.go Outdated
"k8s.io/client-go/tools/remotecommand"
)

var _ = g.Describe("[JIRA:Networking][OTP][sig-network] OTP Multus", func() {

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

done!

@anuragthehatter

Copy link
Copy Markdown
Author

@SachinNinganure Your tests are not being running in any jobs IIUC. /payload-job-with-prs also not showing your tests running. Also filed increased to 399. We need to remove vendor files they should generate on fly durign test run.

Your tests are not picked up due to
#303 (comment)

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/80ca6000-7168-11f1-82a5-8d7cb46534a1-0

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/b4e33550-7169-11f1-83d2-00e1e58b39d1-0

@anuragthehatter anuragthehatter force-pushed the ote-framework-setup branch 2 times, most recently from 33fb1ed to 020dce3 Compare June 26, 2026 14:24
Comment thread Dockerfile.openshift Outdated
RUN ./hack/build-go.sh && \
cd /usr/src/multus-cni/bin
ENV GO111MODULE=on
RUN go mod vendor && make build-e2e-tests && gzip -9 test/bin/multus-cni-tests-ext

@anuragthehatter anuragthehatter Jun 26, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@SachinNinganure Just FYI, we need go mod vendor and GO1111MODULE=on undr dockerfile of any component OTE frameowkr code to enavle vendoring ot be generated dynamically duting tests. It prevents us to commit 100/1000's of vendoring files in a PR.

I juts did on this PR for now.

@anuragthehatter anuragthehatter left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Done

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/839e6030-716b-11f1-8dbf-011d1ed04792-0

Comment thread test/otp/multus.go Outdated
"k8s.io/client-go/tools/remotecommand"
)

var _ = g.Describe("[OTP] Multus CNI [Suite:openshift/conformance/parallel]", func() {

@anuragthehatter anuragthehatter Jun 26, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

missing [sig-network]
Refer: https://github.com/openshift/cluster-network-operator/pull/3015/changes#diff-276ffa16a5e942d512e1b6a73da42da1bddd81f4fdf080f5be2e30eabff71046

Should be
[sig-network][OTP][Suite:openshift/conformance/parallel] Multus CNI

@anuragthehatter anuragthehatter Jun 26, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

tests are not running in CI due to this. Also fetch latest changes from this PR on your staging branch regarding go mode vendor change else that will be overritten

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Fixed

Comment thread test/otp/multus.go Outdated
})

// High-57589: Whereabouts CNI Timeout with Large Exclude Range
g.It("57589-should handle large IPv6 exclude ranges without timeout", func() {

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Fixed

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/4f91c970-7176-11f1-96f7-87fcc13aecee-0

anuragthehatter and others added 5 commits June 26, 2026 13:53
Set up the OTE framework for multus-cni with no test cases yet.
This adds the test binary entry point, build infrastructure,
and Dockerfile integration for the multus-cni-tests-ext binary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
   Add Multus-specific OTP tests:
     - [57589]: Whereabouts IPv6 exclude ranges
     - [76652]: Dummy CNI plugin
     - [66876]: Whereabouts dual-stack IPAM
     - [69947]: Macvlan Unsolicited NAs
  Add 2 bridge CNI port isolation tests from ovn-kubernetes:

  Test 80524: Basic port isolation
  - Creates NAD with portIsolation:true on bridge CNI
  - Verifies 2 pods with isolated ports cannot communicate
  - Tests dual-stack (IPv4 + IPv6) isolation

  Test 80525: Mixed isolation networks
  - Creates 2 NADs: one isolated, one non-isolated
  - Verifies pods can communicate via non-isolated network
  - Verifies pods CANNOT communicate via isolated network
  - Demonstrates selective port isolation behavior
moving all pure Multus tests here.
  Fix 5 issues identified by CodeRabbit review:

  1. Suite qualifier
     - Add [Suite:openshift/multus-cni] to Describe block
     - Ensures tests are selected by extension suite filter

  2. Bounded context
     - Replace context.Background() with context.WithTimeout(10min)
     - Prevent hung API/exec calls from blocking test indefinitely
     - Add proper cleanup with g.DeferCleanup(cancel)

  3. Error handling
     - Add apierrors import for proper error checking
     - Check all namespace deletion errors, log non-NotFound failures
     - Check pkill tcpdump errors and log with stdout/stderr
     - Prevents stale resources from silent cleanup failures

  4. Pod affinity
     - Add 'app: sniffer' label to sniff-pod
     - Add required pod affinity to RC template
     - Schedule all 6 test pods on same node as sniffer
     - Fixes flaky failures on multi-node clusters

  5. Numeric validation
     - Add strconv import
     - Parse packet counts with strconv.Atoi()
     - Use BeNumerically(">", 0) instead of string comparison
     - Prevents false positives from empty/error output
  Four fixes addressing CodeRabbit review feedback:

  1. Test naming consistency (lines 55, 148, 244, 519, 793, 995):
     - Remove [OTP][informing] labels from all 6 test names
     - Format: g.It("57589-should...") matches ovn-k PR #3213
     - Lifecycle controlled by test/cmd/main.go per @asood-rh

  2. SNO compatibility (lines 848-869, 1090-1111):
     - Replace worker node selector with Ready+schedulable check
     - Works on SNO, TNF, TNA, HyperShift clusters
     - Tests 80524, 80525 no longer require worker label

  3. Missing import (line 6):
     - Add encoding/json import for json.Unmarshal() calls
     - Used in 4 places to parse network-status annotations

  4. Security: Direct argv for ping (lines 980, 1235, 1266):
     - Replace: []string{"/bin/sh", "-c", fmt.Sprintf("ping... %s")}
     - With: []string{"ping", "-c", "3", "-W", "2", ip}
     - Avoid shell interpolation of IPs from annotations
@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3ce35b60-7188-11f1-8222-77be40ca4c89-0

@anuragthehatter

Copy link
Copy Markdown
Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips openshift/origin#31231

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/f90521a0-71ad-11f1-9d8e-e5a6357abb31-0

@anuragthehatter

anuragthehatter commented Jun 26, 2026

Copy link
Copy Markdown
Author

Seems all tests passing on above job except 77102 which needed PSA fix. Squashed that fix and re-trigerred payload job

Add security.openshift.io/scc.podSecurityLabelSync: false label to
test namespace to allow privileged pod creation for CNI file permission checks.

Test 77102 requires hostNetwork, hostPID, and privileged container to
access host filesystem and check CNI config file permissions (CIS compliance).

Without this label, pod creation fails with PodSecurity restricted policy violation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@SachinNinganure

Copy link
Copy Markdown

/retest

@openshift-ci

openshift-ci Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

@anuragthehatter: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/okd-scos-images d32267c link true /test okd-scos-images
ci/prow/security d32267c link false /test security
ci/prow/e2e-aws-upgrade d32267c link true /test e2e-aws-upgrade

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

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

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants