• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 22581978007
64%

Build:
DEFAULT BRANCH: main
Ran 02 Mar 2026 03:16PM UTC
Jobs 1
Files 530
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Mar 2026 03:07PM UTC coverage: 63.093% (+0.003%) from 63.09%
22581978007

push

github

web-flow
Fix operator e2e CI failures and spurious deployment updates (#3961)

* Fix operator e2e CI failures and spurious deployment updates

The operator e2e chainsaw tests fail across all K8s versions because the
Kind cluster must pull the yardstick image from the remote registry at
runtime, which cannot complete within the 60s assert timeout.

Add two steps matching the pattern already used in test-e2e-lifecycle.yml:
- Disable containerd image store before creating the Kind cluster (Docker
  29+ workaround for kind load with multi-arch images), with a comment
  referencing the upstream KIND issue for context
- Pre-pull and load the yardstick-server image into the Kind cluster
  before running chainsaw tests

Replace reflect.DeepEqual with equality.Semantic.DeepEqual when comparing
Kubernetes resource types (Env vars and resource requirements) in the
MCPServer controller. reflect.DeepEqual treats nil and empty slices/maps
as different, causing unnecessary deployment updates that can contribute
to reconciliation loops and test flakiness.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix infinite deployment update loop caused by annotation fight

The deployment update path was replacing annotations entirely, which
stripped K8s-managed annotations like deployment.kubernetes.io/revision.
The K8s deployment controller would immediately re-add the annotation,
triggering another reconcile and creating a tight loop that prevented
deployments from ever becoming available.

Fix annotation comparison to use subset check instead of exact match,
so K8s-managed annotations do not trigger spurious updates. Fix the
update path to merge annotations instead of replacing them, preserving
K8s-managed annotations while applying controller-desired values.

Applied consistently across MCPServer, MCPRemoteProxy, and
VirtualMCPServer controllers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Move mapIsSubset to controllerutil for shared reuse

Move the m... (continued)

14 of 16 new or added lines in 4 files covered. (87.5%)

7 existing lines in 3 files now uncovered.

45452 of 72040 relevant lines covered (63.09%)

77.0 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
55.23
0.0% cmd/thv-operator/controllers/mcpserver_controller.go

Uncovered Existing Lines

Lines Coverage ∆ File
2
80.58
0.26% pkg/transport/proxy/httpsse/http_proxy.go
2
57.89
-3.51% pkg/transport/session/sse_session.go
3
53.86
-0.2% pkg/workloads/manager.go
Jobs
ID Job ID Ran Files Coverage
1 22581978007.1 02 Mar 2026 03:16PM UTC 530
63.09
GitHub Action Run
Source Files on build 22581978007
  • Tree
  • List 530
  • Changed 7
  • Source Changed 3
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #22581978007
  • a7ec95a3 on github
  • Prev Build on main (#22573435508)
  • Next Build on main (#22583772568)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc