Skip to content

test: add the multi-controller suite, with the three fixes it proves - #679

Open
graveland wants to merge 7 commits into
mainfrom
graveland/multi-controller-suite
Open

graveland wants to merge 7 commits into
mainfrom
graveland/multi-controller-suite

Conversation

@graveland

@graveland graveland commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

What

A scenario-test tier under test/suite, built on
github.com/multigres/testkit (v0.2.1).
It boots all five reconcilers against one envtest API server and tests the
joints between controllers, which the per-controller tests cannot reach: the
deletion protocol from shard to tablegroup to multigrescluster, cluster fan-out
as a sequence, two reconcilers writing one object, shard lifecycle, selector
impostors, transitions and thrash.

Commits, in order:

  1. fix(shard): stop the status hot loop on a healthy shard. A healthy Shard
    rewrote its status about ten times a second, forever, because two
    server-side-apply field managers claimed the same status fields.
  2. test(suite): add the scenario tests
  3. ci: add an advisory job for the multi-controller suite
  4. test: add a race-detector target for the multi-controller suite
  5. fix(shard): give every status write an explicit field owner. Four Shard
    status writes had no field owner, so a second, unnamed manager co-owned
    fields updateStatus also claims.
  6. chore: build with Go 1.27.1. testkit needs Go 1.27 (its assertions are
    generic methods), so this raises the module's Go floor and the builder
    image with it, bumps golangci-lint to v2.13.2 (v2.12.2 panics on Go 1.27
    syntax), and fixes a CI cache trap the bump exposed.
  7. fix(shard): requeue while a shard has not converged. Required by
    commit 1
    , see below. A shard requeues while any pool pod is not yet
    posture-ready or a posture observation is unsettled, backing off by
    elapsed time from 5s to about 72s; a converged shard still requests
    nothing.

Linear

  • Fixes MUL-509: a healthy Shard reported orchReady=false / poolsReady=false. That is commit 1's defect: the StorageClass guard's server-side apply sent a full typed ShardStatus, so its zero values took both fields away from updateStatus.
  • Part of MUL-1655: commit 7 keeps requeueing until posture converges, so a recovered pod no longer stays unready when only Multigres state changes. Not covered here: the topology-unavailable path still returns before refreshing readiness, so a pod can stay Ready after observation is lost.
  • Part of MUL-295: commits 1 and 5 give every Shard status write a single explicit field owner.

Why these fixes ride along

The suite cannot land before fix 1. Without it no namespace containing a Shard
ever quiesces (about 570 state changes per 30s), so every convergence test
fails on its quiescence wait. With it, TestShardStatusQuiesces settles in
about 10s.

Fix 7 is required by fix 1, and commit 1 alone breaks cluster bring-up.
The status hot loop was, by accident, re-running every shard several times a
second. Bring-up depended on that: while multiorch is still electing a
primary nothing in Kubernetes changes, and the shard requested no requeue, so
once the loop was gone the shard went quiet, pool pods never went Ready, and
e2e timed out. Bisected with the minimal e2e package, one package per fresh
kind cluster:

code minimal e2e
main ok, 100s
main + commit 1 FAIL, 547s
commits 1-6 FAIL, 554s
commits 1-7 ok, 117s

Anyone bisecting onto commit 1 alone will see e2e fail; that is expected, and
commit 7's message says so.

Fixes 5 and 7 are here to show how the suite proves a fix. Commit 2 pins each defect
with KnownDefect; commits 5 and 7 each fix one and turn its pin into a
positive assertion (commit 7's is a pooler's role never landing after a
scale-up, which also bites a brand-new shard). The scenario reproduces the
defect on main and does not with the fix.

Pins

Seven live operator defects are pinned on main (five after commits 5 and
7). A pin
passes while its defect is present and fails the day it is fixed, with a
message saying to replace it with a positive assertion, so a fix cannot land
without updating its pin. Both pins added here were checked in both
directions: "still present" without the fix, "appears fixed" with it.

Notable details / risks

  • This raises the operator's Go floor from 1.26.6 to 1.27.1 (commit 6),
    for go.mod and the Dockerfile builder image. Driven by a test
    dependency, so worth an explicit yes from maintainers. tools/observer is a
    separate module and stays on 1.26.6.
  • golangci-lint v2.12.2 to v2.13.2. The newer staticcheck prints deprecated
    symbols with their full package path, so four existing controller-runtime
    deprecation exclusions in .golangci.toml were widened to match both forms.
    No new exclusions.
  • The golangci-lint binary under bin/ is now named for the Go version that
    built it (golangci-lint-v2.13.2-go1.27.1). CI restores bin/ from older
    caches, and without this the lint job ran a go1.26-built linter against the
    go1.27 module and refused to load.
  • Production code is in commits 1, 5 and 7: shard_controller.go,
    storage_class_guard.go, reconcile_*.go, reconcile_data_plane.go and
    pkg/data-handler/posture. Everything else is test code, CI and the
    Makefile.
  • Commit 7 runs on every shard in the fleet. It also scopes the posture,
    pod-roles, drain and prune pod lists to pool pods
    (app.kubernetes.io/component=shard-pool, which every pool pod has always
    carried); without it a shard's own multiorch pod counts as a pod that never
    becomes ready. Prune is the one worth a look: its list decides which
    topology poolers get marked shut down.
  • Fix 1's visible changes: StorageClassValid condition messages change,
    pool StorageClass lookups move ahead of multiorch, pools are visited in
    sorted order, and the missing-class event moves into Reconcile. Details in
    the commit message.
  • The suite's CI job is advisory, not required, because it pins live
    defects.
  • Soak, 20 serial full-suite runs plus one -race run, locally on the
    final test code: 19/20 serial green, -race green with zero data
    races
    , median 192s per run. All six remaining pins reported "still
    present" in all 21 runs, no false expiries. The one failure was
    TestSuiteCompressesRequeues (30s against a usual 0.3s): the shard in that
    namespace went quiet after creating its pool pods and never made the
    requeue the test waits for. Root cause: the pinned
    MGO-POOL-SCALEUP-ROLE-STALE defect on a fresh shard, when the first pooler
    registers before the shard's first data-plane pass. The two requeue tests
    now hold pooler registration so they always see the empty topology they
    assert about.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@graveland
graveland force-pushed the graveland/multi-controller-suite branch 2 times, most recently from f05ee6e to 1b474ad Compare September 25, 2026 15:56
- name: Run tests
run: go test ./... -coverprofile=./cover.out -covermode=atomic -coverpkg=./...
run: |
go test $(go list ./... | grep -v /test/suite) \

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is to avoid an extra full test suite test run here adding a few minutes, keeping the suite run to its own step

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@graveland
graveland force-pushed the graveland/multi-controller-suite branch from 1b474ad to a8545cd Compare September 25, 2026 17:30
@github-actions

This comment has been minimized.

@graveland
graveland marked this pull request as ready for review September 25, 2026 19:06
@graveland
graveland requested a review from a team as a code owner September 25, 2026 19:06
@graveland graveland changed the title test: add the multi-controller suite, with the two fixes it proves test: add the multi-controller suite, with the three fixes it proves Sep 26, 2026
A healthy Shard rewrote its status about ten times a second, forever.
Two server-side-apply field managers wrote the same status fields:
setStorageClassCondition's guard apply and updateStatus each behaved
correctly alone, but together they flipped status.orchReady and
status.poolsReady false/true and alternated the StorageClassValid
condition's message between two strings, with no terminal state.

The guard built its apply payload from a typed ShardStatus literal
that only set Conditions, but an SSA payload is a complete statement
of ownership: the zero values of every other field on that literal
(orchReady:false, poolsReady:false) got serialised too, and with
ForceOwnership the guard seized both from updateStatus on every
reconcile, which made updateStatus reclaim them right back next time.
The guard now applies an unstructured payload that carries only
status.conditions, so StorageClassValid has exactly one writer.

Other visible changes along the way:
  - the StorageClassValid condition's messages changed: one verdict
    now covers both the backup and pool StorageClass checks instead
    of each reporting its own;
  - pool StorageClass lookups now happen before the Multiorch
    reconcile block (where the backup lookup already ran), instead of
    after it;
  - pools are checked in sorted name order instead of Go's randomised
    map order, which was a second, independent source of the
    condition message flapping;
  - the missing-StorageClass warning event is now recorded in
    Reconcile itself rather than inside the validation helpers, and
    the FailedApply event wording for a validation error changed
    accordingly.

Coverage said nothing, because both halves were executed by existing
tests and each was right in isolation: the defect only existed when
both writers hit one API server. Added coverage now pins the guard's
single-field payload and skip-if-unchanged behaviour, plus that
Reconcile itself never makes more than one guard apply per pass.

Signed-off-by: Brent Graveland <graveland@supabase.io>
@graveland
graveland force-pushed the graveland/multi-controller-suite branch from 059612b to 225dddd Compare September 26, 2026 23:09
@github-actions

This comment has been minimized.

@graveland

Copy link
Copy Markdown
Contributor Author

/e2e

@github-actions

Copy link
Copy Markdown

✅ E2E tests success — View run

@graveland
graveland added this pull request to stack #685 September 27, 2026 02:03
The operator half of the multi-controller suite: the fakes, the cluster
fixture, shard identity helpers, and the scenario tests themselves, written
as a consumer of github.com/multigres/testkit/ctrltest.

A scenario test exercises a joint between controllers, which is what the
existing tier cannot reach. The deletion protocol runs shard to tablegroup
to multigrescluster; the fan-out is asserted as a sequence rather than an
end state; the race test pins two reconcilers writing one object. Others
cover shard lifecycle, selector impostors, transitions and round-trip
equality, and thrash.

Seven live operator defects are pinned with KnownDefect, so each one
reproduces its own evidence on every run rather than only in a document.
A pin passes while its defect is present and fails the day it is fixed,
so the fix has to replace the pin with a positive assertion in the same
change.

The pool scale-up pin constructs its race rather than sampling it. The
defect needs the new pooler to register after the shard has converged,
which happens naturally about a third of the time. poolerSim can hold
new registrations for one namespace, so the test holds, scales up, waits
for two pool pods and one entry in status.podRoles to stay stable, then
releases. The pooler then appears in etcd with no Kubernetes event to
announce it. That precondition is deliberately a stability window rather
than RequireQuiescent: once the defect is fixed, the shard requeues
while the pooler is held and the namespace never goes quiet.

Tests open with newCase(t), which allocates the namespace, registers it at
the reconcile gate and attaches the failure dump, and everything hangs off
that receiver: the assertions, the harness, the client verbs, and this
package's own vocabulary. Sub(t) is the subtest form, keeping the namespace
while binding the subtest T. Bare(t) is for the pure-logic tests that never
touch the cluster.

Tests scope their work to the case namespace throughout. envtest never
really deletes a namespace, so an unscoped List would see everything every
earlier test in the run created.

Signed-off-by: Brent Graveland <graveland@supabase.io>
make test-suite runs it, and the other test targets exclude test/suite by path
filter: the tier has no build tag, deliberately, so nothing can be hidden behind
one.

The job is advisory rather than required, because the suite pins live operator
defects and a required check would block every PR on defects nobody is fixing in
that PR. It runs verbosely, which is what makes a passing run readable: a pin
that is doing its job logs and passes, and Go discards that output without -v,
so a suite with seven live pins would otherwise print the same thing as a suite
with none.

Signed-off-by: Brent Graveland <graveland@supabase.io>
Nothing in this repo ran -race, which is an odd gap for the one suite where
five controllers share a manager.

Measured on the first run: 183s against a 166s baseline and zero data races.
The 10% is cheaper than expected because this suite spends most of its wall
clock waiting for controllers to converge, and the race detector does not
slow down waiting.

Separate from test-suite anyway. Certificate generation is the one CPU-bound
step and has been measured swinging between 14 and 75 seconds under -race,
which is enough to turn a wait sized against the normal run into a flake, so
the timeout here is deliberately loose.

The operator holds exactly one piece of state across reconcile goroutines,
ShardReconciler.postureStrikes, and it is mutex-guarded with controller-
runtime already serialising per object key. So this is a standing check that
the answer has not changed rather than a hunt for a known race.

Signed-off-by: Brent Graveland <graveland@supabase.io>
A patch without client.FieldOwner does not opt out of field management. The API
server derives one from the client's User-Agent, so the write gets an owner
nobody named and nobody can see, and that owner then co-owns whatever fields the
patch touched. Four Shard status writes did this, and the fields they claimed
are also claimed by updateStatus on every reconcile, so two managers held them
jointly.

That is the same structure as the status hot loop: two managers, one object,
overlapping fields. It was not looping, because these are merge patches that
agree on values rather than applies that disagree, but it is one changed value
away from the same outcome.

The Pod status write in reconcile_readiness.go takes a distinct manager rather
than the Shard's. It claims one condition on a Pod whose status otherwise
belongs to kubelet, and a manager name is the only record of which concern took
a field.

The multi-controller suite pinned this with a KnownDefect on the
field-ownership check in TestTwoControllersWriteOneShard. The pin becomes
the positive assertion it was waiting to be: no field on the Shard is
claimed by more than one manager.

Signed-off-by: Brent Graveland <graveland@supabase.io>
testkit's assertions are generic methods, which need Go 1.27, so adding
it as a test dependency raised this module's go directive from 1.26.6.
Pin it to the exact release and move the builder image with it: official
Go images set GOTOOLCHAIN=local, so a 1.26.6 builder refuses a module
that asks for 1.27.

golangci-lint goes to v2.13.2. v2.12.2's bundled staticcheck IR builder
cannot parse Go 1.27 syntax and panics on the standard library
(buildir: package "poll": unexpected expr: *ast.KeyValueExpr), which
fails every lint run on Linux. Go 1.27 support landed in v2.13.0.

The newer staticcheck names deprecated symbols by full package path, so
four of the existing controller-runtime deprecation exclusions stopped
matching. Their patterns now accept either form rather than adding new
exclusions; the deprecations and the follow-up migration are unchanged.

The golangci-lint binary's name now also carries the Go version it was
built with. CI restores bin/ from older caches, and a name keyed only on
the linter's version reused a binary built by go1.26 after the bump,
which refused to load a go1.27 module. Any future Go bump would repeat
that.

tools/observer is a separate module that does not use testkit and stays
on 1.26.6.

Signed-off-by: Brent Graveland <graveland@supabase.io>
The commit that stopped the shard controller's status hot loop ("stop the
status hot loop on a healthy shard") removed a driver that used to rerun
every shard several times a second regardless of what reconcile asked for.
That accidentally covered for a gap: once a posture observation settles
(nothing inconsistent, nothing incomplete, or an unsettled observation
accepted after its debounce), the shard requests no further reconcile at
all, even when a managed pod has never reached posture readiness, or a
shard mid-bootstrap has every pooler registered but no primary elected yet.
Nothing in Kubernetes watches the topology store, so nothing else wakes the
shard either: an accepted RPC blip or role mismatch leaves a pod NotReady or
a shard Degraded until controller-runtime's 10h resync, and a fresh cluster's
pool pods never go Ready at all.

reconcilePosture now requests a requeue for any not-converged state,
unsettled or merely not-ready, once the existing debounce for unsettled
observations ends. The delay is clamped elapsed time since the shard was
first observed not converged, five seconds to one minute, with up to 20%
upward jitter (so five seconds to about seventy-two seconds including
jitter), and resets the moment the shard converges. Elapsed time rather than
a per-reconcile count, because pod status transitions, drain requeues and
the operator's own status patches are each their own reconcile with no
predicate filtering them, and a burst of those must not by itself run the
backoff up to its ceiling.

Scopes the posture pod list to pool pods: a shard's multiorch pod carries the
same four identity labels and would otherwise count as a pod that never
becomes ready. The pod-roles, drain, and pooler-prune lists are scoped the
same way for consistency; pooler-prune's filter is the one that matters
operationally, since it decides which topology poolers this reconcile marks
LIFECYCLE_SHUTDOWN, and every pool pod has carried the component label since
the pool controller was introduced, so this is not a behaviour change for
existing clusters.

test/suite's pool-scale-up pin is now a positive assertion: the role
landing in status.podRoles after a scale-up whose pooler registers late
used to be a coin flip, and is deterministic with this fix in place.

Signed-off-by: Brent Graveland <graveland@supabase.io>
@graveland
graveland force-pushed the graveland/multi-controller-suite branch from 225dddd to 7d062a1 Compare September 27, 2026 15:13
@github-actions

Copy link
Copy Markdown

🔬 Go Test Coverage Report

Summary

Coverage Type Result
Threshold 70%
Previous Test Coverage 77.3%
New Test Coverage 79.9%

Status

✅ PASS

Detail

Show New Coverage
github.com/multigres/multigres-operator/api/v1alpha1/cell_types.go:273:								init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/celltemplate_types.go:67:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:158:							IsEnabled					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:192:							IsEnabled					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:382:							ComponentCertSecretName				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:389:							ComponentCertCommonName				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:398:							TopoServerCertName				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:408:							TopoServerCertSecretName			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:414:							TopoClientCertName				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:425:							TopoClientCertSecretName			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:579:							MergePVCDeletionPolicy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:610:							MergeDurabilityPolicy				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/common_types.go:619:							MergeBackupConfig				82.6%
github.com/multigres/multigres-operator/api/v1alpha1/coretemplate_types.go:72:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/etcd_maintenance.go:11:							EffectiveCompaction				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/etcd_maintenance.go:43:							EffectiveQuotaBackendBytes			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/etcd_maintenance.go:51:							DefragmentationIsEnabled			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/multigrescluster_types.go:351:						EffectiveCellTemplate				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/multigrescluster_types.go:873:						init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:37:						BuildOTELEnvVars				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:43:						BuildOTELEnvVarsWithResourceAttributes		91.1%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:132:						buildOTELResourceAttributes			94.1%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:161:						filterOTELResourceAttributes			85.7%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:183:						splitOTELResourceAttributes			100.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:206:						BuildOTELSamplingVolume				0.0%
github.com/multigres/multigres-operator/api/v1alpha1/observability_helpers.go:231:						envOrCRD					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/shard_types.go:371:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/shardtemplate_types.go:91:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/tablegroup_types.go:218:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/topo_client_tls_helpers.go:48:						TopoClientTLSConfigured				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/topo_client_tls_helpers.go:57:						BuildTopoClientTLSVolume			100.0%
github.com/multigres/multigres-operator/api/v1alpha1/topo_client_tls_helpers.go:95:						TopoClientTLSVolumeMount			0.0%
github.com/multigres/multigres-operator/api/v1alpha1/topo_client_tls_helpers.go:107:						TopoClientTLSArgs				100.0%
github.com/multigres/multigres-operator/api/v1alpha1/toposerver_types.go:329:							init						100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:14:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:19:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:29:						DeepCopyInto					64.7%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:54:						DeepCopy					80.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:64:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:69:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:79:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:88:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:98:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:106:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:121:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:131:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:141:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:151:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:167:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:177:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:191:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:201:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:209:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:224:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:234:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:269:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:279:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:291:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:301:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:306:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:316:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:324:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:334:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:342:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:356:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:366:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:374:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:394:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:404:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:414:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:424:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:429:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:439:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:444:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:454:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:470:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:480:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:488:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:498:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:506:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:520:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:530:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:538:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:563:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:573:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:590:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:600:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:605:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:615:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:630:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:640:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:646:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:656:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:678:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:688:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:705:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:715:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:732:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:742:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:752:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:762:						DeepCopyInto					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:768:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:778:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:813:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:823:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:828:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:838:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:843:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:853:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:878:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:888:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:893:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:903:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:911:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:921:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:931:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:941:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:956:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:966:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:981:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:991:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1001:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1011:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1022:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1032:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1041:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1051:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1059:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1073:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1083:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1091:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1184:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1194:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1244:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1254:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1270:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1280:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1290:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1300:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1310:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1320:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1325:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1335:						DeepCopyInto					100.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1340:						DeepCopy					80.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1350:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1362:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1372:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1412:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1422:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1427:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1437:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1446:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1456:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1461:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1471:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1476:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1486:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1506:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1516:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1521:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1531:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1536:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1546:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1555:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1565:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1573:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1593:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1603:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1613:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1623:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1653:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1663:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1677:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1687:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1695:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1724:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1734:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1769:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1779:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1861:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1871:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1911:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1921:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1929:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1939:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1947:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1961:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1971:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:1979:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2013:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2023:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2053:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2063:						DeepCopyInto					40.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2073:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2083:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2092:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2102:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2110:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2132:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2142:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2156:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2166:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2174:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2238:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2248:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2260:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2270:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2275:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2285:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2294:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2304:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2312:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2326:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2336:						DeepCopyObject					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2344:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2375:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2385:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2410:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2420:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2437:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2447:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2457:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2467:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2477:						DeepCopy					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2487:						DeepCopyInto					0.0%
github.com/multigres/multigres-operator/api/v1alpha1/zz_generated.deepcopy.go:2492:						DeepCopy					0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:39:								init						0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:43:								main						0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:125:								registerCleankeepers				0.0%
github.com/multigres/multigres-operator/cmd/multigres-gc/main.go:131:								namespaceOrAll					0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:78:							init						100.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:84:							main						0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:513:							certsExist					0.0%
github.com/multigres/multigres-operator/cmd/multigres-operator/main.go:531:							goMemLimitFromEnv				100.0%
github.com/multigres/multigres-operator/pkg/cacheopts/cacheopts.go:52:								New						0.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:52:								WithExtKeyUsages				100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:59:								WithOrganization				100.0%
github.com/multigres/multigres-operator/pkg/cert/generator.go:81:								GenerateCA					92.3%
github.com/multigres/multigres-operator/pkg/cert/generator.go:143:								GenerateServerCert				93.9%
github.com/multigres/multigres-operator/pkg/cert/generator.go:217:								ParseCA						100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:94:									componentName					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:101:								organization					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:108:								extKeyUsages					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:125:								NewManager					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:136:								Bootstrap					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:151:								Start						100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:179:								reconcilePKI					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:203:								ensureCA					97.1%
github.com/multigres/multigres-operator/pkg/cert/manager.go:283:								ensureServerCert				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:410:								dnsNameSetsEqual				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:430:								waitForProjection				100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:455:								setOwner					100.0%
github.com/multigres/multigres-operator/pkg/cert/manager.go:470:								emitEvent					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_cell.go:14:			BuildCell					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:34:			BuildGlobalTopoServer				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:106:			BuildMultiadminDeployment			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:288:			BuildMultiadminService				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:329:			BuildMultiadminWebDeployment			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:444:			BuildMultiadminWebService			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:502:			BuildMultigatewayGlobalService			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:566:			BuildMultigatewayGlobalReplicaService		100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:607:			postgresSuperuserOrDefault			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:620:			AdminNetworkPolicyName				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:626:			BuildAdminNetworkPolicies			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_global.go:678:			podAnnotationsWithProjectRef			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_tablegroup.go:14:		BuildTableGroup					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/builders_tablegroup.go:95:		buildCellTopologyLabels				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:52:			buildCertificate				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:73:			publicGatewayDNSNames				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:81:			buildInternalCertificates			90.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:174:			buildTopoClientCertificate			85.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:213:			managedTopologyForCertificate			80.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:285:			issuerName					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:295:			truncateCommonName				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:299:			buildCertificateFromSpec			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:320:			reconcileCertificate				90.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:390:			listCertificates				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/certificate.go:401:			deleteOwnedCertificates				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:27:				imagesConfig					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:62:				resolveImages					97.1%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:213:				recordFullyPinned				83.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:248:				recordedImages					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:276:				diffComponentImages				92.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/images.go:300:				recordAppliedImages				88.9%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:80:	Reconcile					97.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:375:	ensureClusterFinalizer				87.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:406:	handleDeletion					86.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:527:	SetupWithManager				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:548:	SetupWithManagerReconciler			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:588:	projectRefOrGenerationChangedPredicate		69.2%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:622:	enqueueRequestsFromTemplate			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:649:	templateKindFromObject				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:665:	referencesTemplate				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:682:	collectResolvedTemplates			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go:746:	collectTrackingLabels				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_cells.go:17:			reconcileCells					88.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_databases.go:17:		reconcileDatabases				90.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:29:			reconcileGlobalComponents			88.9%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:50:			reconcileAdminNetworkPolicies			87.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:93:			reconcileGlobalTopoServer			82.6%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:154:		reconcileMultiadmin				95.8%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:215:		globalTopoRef					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_global.go:265:		reconcileMultiadminWeb				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:48:		reconcileTopology				77.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:205:		markTopologyFailed				80.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:227:		specCellNames					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:235:		cellNamesToKeepInTopology			87.5%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:267:		managedLocalTopoServerReady			73.3%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:309:		openTopoStore					66.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:327:		isPruningEnabled				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/reconcile_topology.go:338:		handleTopoUnavailable				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:24:				childStatusReader				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:35:				extractExternalEndpoint				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:55:				computeGatewayCondition				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:92:				computeAdminWebCondition			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/multigrescluster/status.go:126:				updateStatus					98.2%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/builders.go:14:				BuildShard					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/builders.go:86:				calculateTotalReplicas				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:20:			stepListChildShards				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:38:			stepApplyDesiredShards				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:89:			observedCleanupInProgress			85.7%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:106:			stepReconcileUndesired				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/reconcile_shards.go:166:			stepRequeueIfPending				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/status.go:19:					stepComputeStatus				98.6%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/status.go:112:				stepPatchStatus					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:48:					Error						100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:52:					Unwrap						100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:56:					newStepError					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:65:					continueStep					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:69:					doneStep					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:76:					runSteps					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:93:					stepFetchTableGroup				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:107:					stepHandlePendingDeletion			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/steps.go:119:					stepShortCircuitDeletion			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:40:			Reconcile					100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:93:			withStepErrorHandling				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:115:			handlePendingDeletion				97.4%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:190:			setShardPendingDeletion				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:205:			childShardSelector				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:217:			SetupWithManager				100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:238:			SetupWithManagerReconciler			100.0%
github.com/multigres/multigres-operator/pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go:261:			projectRefOrGenerationChangedPredicate		72.7%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:48:					Evaluate					94.4%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:82:					EvaluateBackups					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:147:					ParseTime					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/backuphealth/backuphealth.go:160:					Apply						100.0%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:25:							ExecuteDrainStateMachine			87.1%
github.com/multigres/multigres-operator/pkg/data-handler/drain/drain.go:93:							UpdateDrainState				71.4%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:48:						ClientFor					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:56:						Static						100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:106:						NewOperatorCertResolver				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:135:						ClientFor					84.9%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:290:						ensureClusterActive				78.9%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:322:						clusterKeyForShard				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:338:						keepExistingOrError				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:371:						ActivateCluster					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:382:						ForgetCluster					86.7%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:406:						Close						100.0%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:438:						retireClient					90.9%
github.com/multigres/multigres-operator/pkg/data-handler/poolerclient/resolver.go:461:						buildTLSConfig					81.2%
github.com/multigres/multigres-operator/pkg/data-handler/posture/disruption.go:31:						CheckDisruption					95.7%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:62:							Evaluate					96.7%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:150:						mismatchMessage					66.7%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:162:						observePooler					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:180:						poolerReadiness					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:220:						committedCohortContains				87.5%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:240:						postureString					83.3%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:255:						matchPod					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:264:						isLifecycleShutdown				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/posture/posture.go:270:						Apply						100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:21:							RegisterCell					92.9%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:82:							cellMetadataFromTopoRefs			92.9%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:123:							createOrUpdateCell				93.3%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:158:							ManagedLocalTopoServerName			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:164:							ManagedLocalTopoServerAddress			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/cell.go:169:							UnregisterCell					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:18:							RegisterDatabase				93.9%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:85:							UnregisterDatabase				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:126:							GetBackupLocation				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:166:							GetDurabilityPolicy				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/database.go:177:							buildDurabilityPolicy				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/metadata.go:14:							updateDatabaseMetadata				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:38:							GetPoolerStatus					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:101:							GetQuarantinedPods				0.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:140:							matchPoolerToPod				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:153:							FindPrimaryPooler				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:187:							PoolerRoutingRole				66.7%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:196:							IsPrimaryPooler					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:201:							CollectCells					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:217:							ShardFilter					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:228:							PodMatchesPooler				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:244:							MarkDeadPoolers					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:310:							isLifecycleShutdown				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:318:							isLifecycleQuarantined				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/pooler.go:326:							poolerMatchesAnyActivePod			100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:32:							NewStoreFromShard				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:42:							NewStoreFromCell				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:53:							NewStoreFromRef					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:64:							newStore					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:97:							loadClientTLS					91.9%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:160:							requireKey					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/store.go:173:							IsTopoUnavailable				100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:22:							RegisterDatabaseFromSpec			97.4%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:115:							RegisterCellFromSpec				93.3%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:174:							PruneDatabases					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:221:							PruneCells					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:267:							isNodeExists					100.0%
github.com/multigres/multigres-operator/pkg/data-handler/topo/topology.go:275:							isNoNode					100.0%
github.com/multigres/multigres-operator/pkg/gc/gc.go:28:									WithDefaults					0.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:38:									New						100.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:46:									Kind						0.0%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:48:									Clean						89.5%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:82:									processPVC					91.2%
github.com/multigres/multigres-operator/pkg/gc/pvc/pvc.go:135:									buildSelector					71.4%
github.com/multigres/multigres-operator/pkg/images/images.go:58:								CompiledDefaults				100.0%
github.com/multigres/multigres-operator/pkg/images/images.go:71:								DefaultsFromEnv					100.0%
github.com/multigres/multigres-operator/pkg/images/images.go:105:								Revision					100.0%
github.com/multigres/multigres-operator/pkg/images/images.go:121:								FromSpec					0.0%
github.com/multigres/multigres-operator/pkg/images/images.go:136:								IsComplete					100.0%
github.com/multigres/multigres-operator/pkg/images/images.go:147:								Complete					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/metrics.go:129:								init						100.0%
github.com/multigres/multigres-operator/pkg/monitoring/metrics.go:150:								Collectors					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/metrics.go:174:								RecordReconcileError				0.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:10:								SetClusterInfo					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:19:								SetClusterTopology				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:25:								SetCellGatewayReplicas				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:31:								SetShardPoolReplicas				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:39:								SetPoolPodsDrifted				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:44:								SetTopoServerReplicas				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:50:								RecordWebhookRequest				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:60:								SetLastBackupAge				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:65:								IncrementDrainOperations			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:70:								SetRollingUpdateInProgress			100.0%
github.com/multigres/multigres-operator/pkg/monitoring/recorder.go:79:								SetShardPostureInconsistent			0.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:50:								InitTracing					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:92:								StartReconcileSpan				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:108:								StartChildSpan					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:114:								RecordSpanError					100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:125:								InjectTraceContext				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:154:								ExtractTraceContext				100.0%
github.com/multigres/multigres-operator/pkg/monitoring/tracing.go:187:								EnrichLoggerWithTrace				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/classify.go:45:							RequiresRestart					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/hash.go:55:								StampAndSplit					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/hash.go:88:								unquoteValue					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/hash.go:101:								parseEffectiveConfig				84.6%
github.com/multigres/multigres-operator/pkg/postgresconfig/hash.go:125:								stripInlineComment				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/hash.go:147:								hashSettings					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/reload_marker.go:31:							reloadMarkerLine				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/render.go:71:							Defaults					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/render.go:104:							Render						92.3%
github.com/multigres/multigres-operator/pkg/postgresconfig/render.go:126:							writeSortedMap					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/render.go:141:							quote						100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:24:							ApplyResourceSizing				98.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:67:							formatBytes					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:82:							clampInt64					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:86:							deriveMaxConnections				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:114:							deriveWalSenders				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:151:							deriveWalSettings				100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/sizing.go:185:							clampUint64					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/validate.go:76:							parseCatalog					90.9%
github.com/multigres/multigres-operator/pkg/postgresconfig/validate.go:101:							Validate					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/validate.go:124:							validateGUC					100.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/validate.go:150:							valueMatchesType				90.0%
github.com/multigres/multigres-operator/pkg/postgresconfig/validate.go:175:							isIntegerWithOptionalUnit			93.3%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:17:								ResolveCell					89.7%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:72:								EffectiveCellTemplateName			100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:80:								ResolveCellTemplate				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:115:								mergeCellConfig					100.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:162:								mergeMultigatewaySpec				95.0%
github.com/multigres/multigres-operator/pkg/resolver/cell.go:200:								defaultGatewayBuffer				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:16:								PopulateClusterDefaults				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:167:								ResolveGlobalTopo				95.1%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:243:								ResolveMultiadmin				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:288:								ResolveMultiadminWeb				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:326:								ResolveCoreTemplate				100.0%
github.com/multigres/multigres-operator/pkg/resolver/cluster.go:362:								mergeEtcdSpec					90.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:75:								DefaultResourcesAdmin				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:88:								DefaultResourcesEtcd				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:101:								DefaultResourcesGateway				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:114:								DefaultResourcesOrch				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:127:								DefaultResourcesPostgres			100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:140:								DefaultResourcesPooler				100.0%
github.com/multigres/multigres-operator/pkg/resolver/defaults.go:153:								DefaultResourcesAdminWeb			100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:21:								NewResolver					100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:38:								mergeStatelessSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:70:								mergePodPlacementSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:80:								mergeTopoServerPlacementSpec			100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:93:								isResourcesZero					100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:102:								defaultEtcdSpec					100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:124:								defaultExternalTopoSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/resolver.go:137:								defaultStatelessSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:37:								ResolveShard					100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:124:								ResolveShardTemplate				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:159:								mergeShardConfig				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:254:								mergePostgresConfig				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:268:								mergeMultiorchSpec				100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:279:								mergePoolSpec					94.1%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:336:								defaultPoolSpec					100.0%
github.com/multigres/multigres-operator/pkg/resolver/shard.go:351:								defaultBackupConfig				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:31:								ValidateCoreTemplateReference			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:54:								CoreTemplateExists				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:74:								ValidateCellTemplateReference			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:97:								CellTemplateExists				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:117:								ValidateShardTemplateReference			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:140:								ShardTemplateExists				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:166:								ValidateClusterIntegrity			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:239:								ValidateClusterLogic				98.7%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:664:								hasDefaultStorageClass				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:681:								getEffectiveEtcdReplicas			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:693:								effectiveDatabaseDurabilityPolicy		100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:712:								ValidatePoolName				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:731:								validatePoolRuntimeIdentity			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:778:								ValidateResolvedGateways			85.7%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:817:								ValidateGatewayBuffer				100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:829:								ValidateGatewayBufferPartial			0.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:836:								validateGatewayBuffer				82.6%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:902:								ValidateResourceRequirements			100.0%
github.com/multigres/multigres-operator/pkg/resolver/validation.go:923:								validateCellTopology				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:50:				Reconcile					96.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:182:				reconcileMultigatewayDeployment			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:216:				reconcileMultigatewayService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:250:				reconcileLocalTopoServer			87.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:306:				localTopoServerReady				80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:338:				handlePendingDeletion				90.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:386:				ensureLocalTopoServerDeleted			75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:397:				deleteOwnedLocalTopoServerIfExists		75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:423:				deleteLocalTopoServerIfExists			66.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:455:				patchReadyForDeletionCondition			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:479:				patchLocalTopoServerWaitingStatus		95.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:520:				updateStatus					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:618:				setConditions					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:668:				SetupWithManager				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:686:				SetupWithManagerReconciler			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/cell_controller.go:711:				projectRefOrGenerationChangedPredicate		63.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:16:				BuildLocalTopoServerName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:20:				hasManagedLocalTopoServer			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:24:				isControlledByCell				83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/local_toposerver.go:39:				BuildLocalTopoServer				96.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:56:				BuildMultigatewayDeploymentName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:68:				BuildMultigatewayServiceName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:79:				BuildMultigatewayDeployment			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:360:				BuildMultigatewayService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/multigateway.go:417:				buildCellNodeSelector				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/cell/placement.go:9:					tolerationsFromPlacement			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/configmap.go:33:					BuildPgHbaConfigMap				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/configmap.go:66:					BuildPostgresExporterQueriesConfigMap		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/configmap.go:95:					BuildPostgresConfigMap				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:162:				PgHbaConfigMapName				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:170:				PostgresConfigMapName				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:177:				PostgresExporterQueriesConfigMapName		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:181:				postgresPasswordSecretRef			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:186:				buildSocketDirVolume				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:196:				buildPgHbaVolume				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:209:				buildPostgresPasswordVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:231:				postgresPasswordVolumeMount			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:239:				initSecretsConfigured				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:244:				postgresInitSecretsRef				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:253:				buildPostgresInitSecretsVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:278:				postgresInitSecretsVolumeMount			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:286:				shardTLSConfigured				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:290:				buildShardTLSVolume				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:307:				shardTLSVolumeMount				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:327:				buildPgctldSidecar				96.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:472:				buildPostgresExporterContainer			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:518:				BuildPoolServiceID				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:526:				buildMultipoolerContainer			97.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:682:				buildMultiorchContainer				96.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:775:				buildRuntimeOTELEnvVars				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:795:				buildPostgresConfigVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:813:				buildPostgresExporterQueriesVolume		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:826:				buildPoolVolumes				93.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:867:				buildSharedBackupVolume				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:899:				buildPgBackRestCertVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:972:				buildPgBackRestCipherKeyVolume			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:995:				pgPasswordFileEnvVar				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:1002:				pgInitSecretsFileEnvVar				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:1011:				pgUserEnvVar					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:1017:				postgresSuperuserOrDefault			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/containers.go:1026:				s3EnvVars					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/disruption.go:21:					listDisruptionPods				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/disruption.go:43:					canStartDisruption				86.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/disruption.go:122:				selectShardScaleDownPod				96.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:19:				resolvePodRole					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:36:				clearDrainAnnotations				0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/drain_helpers.go:47:				initiateDrain					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/labels.go:10:					buildPoolLabelsWithCell				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:23:				reconcileCellMaintenanceSurge			83.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:209:				createOrAdoptMaintenanceSurge			56.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:286:				hasMaintenanceCapacityForPod			95.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:327:				listCellPoolers					83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:346:				requiresTwoCellMaintenanceSurge			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:350:				poolReplicas					66.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:357:				poolUsesCell					75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:366:				findPodByName					75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:375:				isMaintenanceSurge				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:384:				isActiveMaintenanceSurge			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:388:				isDesiredPooler					90.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/maintenance_surge.go:406:				isAvailablePooler				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:26:					BuildMultiorchDeployment			94.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:109:					BuildMultiorchService				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:140:					buildMultiorchNameWithCell			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/multiorch.go:160:					buildMultiorchLabelsWithCell			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/placement.go:9:					tolerationsFromPlacement			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:40:					BuildPoolPodName				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:58:					BuildPoolPod					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:166:					buildPoolPodSecurityContext			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:201:					buildContainerSecurityContext			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:214:					buildPgctldSecurityContext			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:221:					effectivePgctldIdentity				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:235:					effectiveMultipoolerIdentity			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:252:					buildMultipoolerSecurityContext			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:259:					validatePoolRuntimeIdentity			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:281:					buildHeadlessServiceName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:305:					ComputeSpecHash					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:364:					hashContainers					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pod.go:418:					sortedKeys					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:23:					BuildPoolDataPVCName				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:45:					BuildPoolDataPVC				97.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:103:					BuildSharedBackupPVCName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_pvc.go:119:					BuildSharedBackupPVC				98.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_service.go:23:				BuildPoolHeadlessService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/pool_service.go:58:				buildPoolHeadlessServiceName			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:33:					buildMultipoolerContainerPorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:55:					buildPoolHeadlessServicePorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:86:					buildMultiorchContainerPorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:102:					buildPostgresExporterContainerPorts		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/ports.go:114:					buildMultiorchServicePorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:44:				renderEffectiveConfig				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:74:				reconcilePostgresConfig				88.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:104:				renderPostgresConfig				80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:139:				shardClusterName				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:162:				reduceShardResources				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:186:				effectiveResource				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:199:				parseStorageBytes				83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:213:				postgresConfigRefContent			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:236:				applyPostgresConfigMap				85.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/postgres_config.go:261:				enqueueFromPostgresConfigMap			87.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:31:			reconcileDataPlane				80.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:281:			reconcilePodRoles				87.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:380:			reconcilePosture				89.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:528:			anyPodNotReady					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:549:			readinessBackoffDelay				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:559:			setPostureUnknownUnlessFalse			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:577:			setBackupUnknownUnlessFalse			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:591:			withDataPlaneRequeue				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:619:			recordPostureObservation			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:648:			recordNotConverged				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:675:			now						100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:685:			forgetStrikes					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:699:			reconcileDrainState				75.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:765:			isDrainStale					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:806:			topoStore					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:824:			reconcilePoolerPrune				81.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:874:			hasPrimary					0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_data_plane.go:886:			isPoolerPruningEnabled				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:39:				handleDeletion					90.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:163:			cleanupShardPVCs				84.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:215:			shardPVCShouldBeCleaned				42.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_deletion.go:235:			handlePendingDeletion				78.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_multiorch.go:15:			reconcileMultiorchDeployment			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_multiorch.go:50:			reconcileMultiorchService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:29:			reconcilePoolPods				96.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:155:			createMissingResources				67.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:354:			isPodReady					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:378:			isPoolHealthy					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:409:			isShardHealthy					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:452:			handleExternalDeletion				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:493:			handleScaleDown					94.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:678:			firstShardRolloutTracker			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:685:			HasStarted					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:689:			SetStarted					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:693:			HasSurgeStarted					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:698:			SetSurgeStarted					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:706:			handleRollingUpdates				92.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:880:			selectPodToDrain				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:933:			cleanupDrainedPod				96.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:988:			cleanupPodPVC					90.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:1027:			podNeedsUpdate					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:1060:			expandPVCIfNeeded				96.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:1110:			pvcNeedsFilesystemResize			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_pool_pods.go:1125:			resolvePodIndex					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_quarantine.go:60:			reconcileQuarantineRemediation			91.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_quarantine.go:178:			wipeQuarantinedPod				78.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_quarantine.go:242:			poolHealthyExcluding				83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_readiness.go:20:			reconcilePoolerReadiness			92.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_readiness.go:90:			poolerReadinessConditionMatches			80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_readiness.go:107:			setPoolerReadinessCondition			87.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:24:			reconcilePgHbaConfigMap				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:51:			reconcilePostgresExporterQueriesConfigMap	85.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:76:			reconcilePostgresPasswordSecret			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:84:			postgresPasswordSecretData			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:92:			postgresPasswordSecret				84.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:132:			reconcilePostgresInitSecretsSecret		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:208:			reconcilePgBackRestCerts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:265:			pgBackRestPoolDNSNames				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:281:			reconcileBackupCipherSecret			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:316:			reconcileSharedBackupPVC			92.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:364:			reconcileShardPDB				90.6%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reconcile_shared_infra.go:434:			reconcilePoolHeadlessService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reload.go:47:					reconcileReloadState				89.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reload.go:203:					mismatchNames					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reload.go:213:					mismatchDetail					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/reload.go:226:					stampReloadHash					71.4%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:50:				clusterIsChurning				88.9%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:101:				Reconcile					86.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:482:				reconcilePool					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:535:				getMultiorchCells				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:571:				ShouldDeletePVCOnShardRemoval			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:585:				ShouldDeleteShardLevelPVCOnRemoval		100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:594:				reconcilePVCOwnerRefs				67.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:681:				SetupWithManager				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_controller.go:699:				SetupWithManagerReconciler			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:31:					BuildShardPodDisruptionBudget			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:75:					BuildShardPodDisruptionBudgets			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:86:					shardPDBLabels					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:96:					shardCells					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:111:					shardTotalReplicas				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:126:					shardMinAvailable				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/shard_pdb.go:130:					minAvailableForTotal				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:28:					updateStatus					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:192:					updatePoolsStatus				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:322:					updateMultiorchStatus				96.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:387:					setPostgresConfigStatus				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:417:					cellSetToSlice					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/status.go:427:					setConditions					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:35:			Error						0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:39:			isMissingStorageClassDependency			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:65:			backupFilesystemStorageClassName		80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:76:			validateStorageClassExists			77.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:102:			validateStorageClassDependencies		91.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/shard/storage_class_guard.go:195:			setStorageClassCondition			83.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/storage/pvc.go:17:					BuildPVCTemplate				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/certificate.go:22:				BuildServingCertificate				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/certificate.go:55:				servingDNSNames					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/certificate.go:71:				serviceFQDN					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/certificate.go:81:				reconcileCertificate				81.2%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:12:				buildMaintenanceEnv				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:32:				buildContainerEnv				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:66:				buildPodIdentityEnv				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:88:				clientScheme					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:99:				peerScheme					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:114:			buildEtcdConfigEnv				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:179:			buildEtcdTLSEnv					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/container_env.go:223:			buildEtcdClusterPeerList			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:26:				maintenanceEnabled				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:30:				maintenanceReader				66.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:37:				maintenanceEndpoints				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:62:				healthyMembers					94.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:120:				maintenanceWorkloadReady			78.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:168:				saveMaintenance					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:181:				resumeMaintenance				85.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance.go:217:				reconcileMaintenance				87.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:33:			maintenanceClient				13.3%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:66:			Status						100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:73:			Members						100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:77:			Health						100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:87:			MoveLeader					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:92:			Defragment					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:97:			Close						100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/maintenance_client.go:103:			maintenanceTLSConfig				87.5%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/pdb.go:17:					BuildPodDisruptionBudget			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:23:					buildContainerPorts				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:56:					buildHeadlessServicePorts			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/ports.go:86:					buildClientServicePorts				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/service.go:17:				BuildHeadlessService				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/service.go:53:				BuildClientService				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/statefulset.go:54:				BuildStatefulSet				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/statefulset.go:225:				buildVolumeClaimTemplates			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:41:			Error						0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:50:			Error						0.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:55:			isMissingStorageClassDependency			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:60:			isStorageClassDependencyError			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:69:			getStorageClass					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:87:			validateEtcdStorageClassDependency		91.7%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/storage_class_guard.go:168:			setStorageClassCondition			80.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:48:			Reconcile					90.1%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:237:		reconcilePodDisruptionBudget			90.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:270:		reconcileStatefulSet				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:304:		reconcileHeadlessService			100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:338:		reconcileClientService				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:372:		updateStatus					98.8%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:487:		setConditions					100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:518:		SetupWithManager				100.0%
github.com/multigres/multigres-operator/pkg/resource-handler/controller/toposerver/toposerver_controller.go:539:		SetupWithManagerReconciler			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:17:								IgnoreMetaRuntimeFields				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:55:								IgnoreServiceRuntimeFields			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:75:								IgnoreStatefulSetRuntimeFields			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:97:								IgnoreDeploymentRuntimeFields			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:116:								IgnorePodSpecDefaults				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:148:								IgnorePodSpecDefaultsExceptPullPolicy		100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:179:								IgnoreStatefulSetSpecDefaults			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:191:								IgnoreDeploymentSpecDefaults			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:204:								IgnoreProbeDefaults				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:219:								filterByFieldName				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:235:								IgnoreObjectMetaCompletely			100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:243:								IgnoreStatus					100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:249:								IgnorePVCRuntimeFields				100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:258:								CompareOptions					100.0%
github.com/multigres/multigres-operator/pkg/testutil/compare.go:267:								CompareSpecOnly					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:29:								WithKubeconfig					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:36:								WithCRDPaths					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:57:								AddUser						100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:62:								getKubeconfigFromUserAdder			100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:87:								SetUpEnvtest					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:148:								SetUpClient					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:175:								SetUpManager					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:206:								StartManager					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:216:								startManager					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:256:								SetUpEnvtestManager				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:272:								createEnvtestEnvironment			100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:287:								startEnvtest					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:302:								cleanEnvtest					100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:319:								createEnvtestDir				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:333:								writeKubeconfigFile				100.0%
github.com/multigres/multigres-operator/pkg/testutil/envtest.go:343:								generateKubeconfigFile				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:51:								NewFakeClientWithFailures			100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:61:								Get						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:75:								List						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:88:								Create						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:101:							Update						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:114:							Patch						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:128:							Delete						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:141:							DeleteAllOf					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:154:							Status						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:166:							Update						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:179:							Patch						100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:196:							FailOnObjectName				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:210:							FailOnKeyName					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:220:							FailOnNamespacedKeyName				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:230:							FailOnNamespace					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:244:							AlwaysFail					100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:252:							FailKeyAfterNCalls				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:265:							FailObjAfterNCalls				100.0%
github.com/multigres/multigres-operator/pkg/testutil/fake_client.go:278:							FailObjListAfterNCalls				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:34:							Error						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:84:							WithExtraResource				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:92:							WithTimeout					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:100:							WithCmpOpts					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:108:							NewResourceWatcher				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:146:							SetTimeout					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:152:							ResetTimeout					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:159:							SetCmpOpts					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:165:							ResetCmpOpts					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:175:							Events						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:188:							EventCh						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:198:							ForKind						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:218:							ForName						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:234:							Count						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:243:							subscribe					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:257:							unsubscribe					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher.go:278:							extractKind					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:16:						findLatestEvent					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:34:						findLatestEventFor				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_cache.go:57:						checkLatestEventMatches				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:22:						Obj						100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:51:						WaitForDeletion					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_deletion.go:70:						waitForSingleDeletion				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_listener.go:19:						collectEvents					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_listener.go:55:						sendEvent					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:46:						WaitForMatch					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:88:						waitForSingleMatch				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:178:						waitForEvent					100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:213:						WaitForEventType				100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:261:						addEventHandlerToInformer			100.0%
github.com/multigres/multigres-operator/pkg/testutil/resource_watcher_match.go:285:						watchResource					100.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:27:								ForCluster					100.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:36:								NewRoots					87.5%
github.com/multigres/multigres-operator/pkg/topology/roots.go:71:								ClusterRoot					100.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:79:								KeyPrefix					100.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:84:								Global						100.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:89:								Cell						75.0%
github.com/multigres/multigres-operator/pkg/topology/roots.go:97:								encodeSegment					81.8%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:68:								Build						94.4%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:113:								TruncateCommonName				100.0%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:125:								List						57.1%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:145:								Get						85.7%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:165:								Delete						81.8%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:191:								SpecEqual					100.0%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:197:								FindByName					100.0%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:210:								OwnedBy						100.0%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:221:								KeepSets					100.0%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:241:								Prune						90.9%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:296:								ApplyOne					66.7%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:315:								Apply						88.9%
github.com/multigres/multigres-operator/pkg/util/certs/certs.go:344:								IsNoMatchError					0.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:198:							BuildStandardLabels				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:209:							AddCellLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:215:							AddClusterLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:221:							AddShardLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:230:							AddDatabaseLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:239:							AddTableGroupLabel				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:248:							AddPoolLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:257:							AddZoneIDLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:266:							AddRegionLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:293:							GetSelectorLabels				100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/labels.go:307:							MergeLabels					100.0%
github.com/multigres/multigres-operator/pkg/util/metadata/project_ref.go:16:							ResolveProjectRef				100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:103:								Hash						100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:146:								JoinWithConstraints				100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:209:								isLowercaseLetter				100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:213:								isUppercaseLetter				100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:217:								isDigit						100.0%
github.com/multigres/multigres-operator/pkg/util/name/name.go:221:								isLowercaseAlphanumeric				100.0%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:27:								MarkOrphan					96.7%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:78:								ClearOrphan					87.5%
github.com/multigres/multigres-operator/pkg/util/pvc/orphan.go:98:								HasOrphanLabel					100.0%
github.com/multigres/multigres-operator/pkg/util/pvc/retention.go:12:								BuildRetentionPolicy				100.0%
github.com/multigres/multigres-operator/pkg/util/status/conditions.go:9:							SetCondition					100.0%
github.com/multigres/multigres-operator/pkg/util/status/conditions.go:25:							IsConditionTrue					100.0%
github.com/multigres/multigres-operator/pkg/util/status/conditions.go:35:							IsConditionFalse				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:30:								ComputePhase					100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:51:								IsCrashLooping					100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:56:								isContainerCrashLooping				100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:68:								AnyCrashLooping					100.0%
github.com/multigres/multigres-operator/pkg/util/status/phase.go:98:								ComputeWorkloadPhase				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/defaulter.go:27:							NewMultigresClusterDefaulter			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/defaulter.go:34:							Default						99.4%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:37:							NewMultigresClusterValidator			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:42:							ValidateCreate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:50:							ValidateUpdate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:69:							ValidateDelete					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:76:							validate					94.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:137:							validateTemplatesExist				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:147:							validateLogic					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:158:							validateNoStorageShrink				91.7%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:202:							validatePostgresConfig				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:229:							collectPoolStorageSizes				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:257:							validateEtcdReplicasImmutable			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:293:							effectiveEtcdReplicas				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:322:							NewTemplateValidator				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:330:							ValidateCreate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:342:							ValidateUpdate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:357:							templateSpecUnchanged				100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:370:							validateWrite					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:385:							validateTemplateContent				94.7%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:429:							validateCellTemplateConsumers			97.4%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:479:							ValidateDelete					95.8%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:532:							isTemplateInUse					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:596:							NewChildResourceValidator			100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:603:							ValidateCreate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:611:							ValidateUpdate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:619:							ValidateDelete					100.0%
github.com/multigres/multigres-operator/pkg/webhook/handlers/validator.go:626:							validate					100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:44:									PatchWebhookCABundle				100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:51:									patchMutatingWebhook				100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:97:									patchValidatingWebhook				100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:147:									HasCertAnnotation				100.0%
github.com/multigres/multigres-operator/pkg/webhook/pki.go:173:									FindOperatorDeployment				100.0%
github.com/multigres/multigres-operator/pkg/webhook/setup.go:21:								Setup						100.0%
total:																(statements)					79.9%

@graveland

Copy link
Copy Markdown
Contributor Author

/e2e

@github-actions

Copy link
Copy Markdown

✅ E2E tests success — View run

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.

1 participant