Open ellistarn opened 1 month ago
This issue is currently awaiting triage.
If Karpenter contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
Looks like this is the next most interesting suite:
❯ ginkgo --json-report=report.json ./pkg/controllers/state
Running Suite: Controllers/State - /Users/etarn/go/src/github.com/kubernetes-sigs/karpenter/pkg/controllers/state
=================================================================================================================
Random Seed: 1721259627
Will run 50 of 50 specs
••••••••••••••••••••••••••••••••••••••••••••••••••
Ran 50 of 50 Specs in 82.274 seconds
SUCCESS! -- 50 Passed | 0 Failed | 0 Pending | 0 Skipped
PASS
Ginkgo ran 1 suite in 1m27.219692709s
Test Suite Passed
~/go/src/github.com/kubernetes-sigs/karpenter │ testperf *1 ?2 ────────────────────────────────────────────────────────────────────────────── 1m 27s │ 16:41:54
❯ cat report.json | jq -r '
[
.[].SpecReports.[]?
| select( .State | match("passed") )
| select( .LeafNodeType | match("It"))
| {
Context: ( .ContainerHierarchyTexts | join("/")),
Test: .LeafNodeText,
Duration: (.RunTime * .000000001)
}
]
| sort_by( .Duration )
| reverse
' | head -n 999
[
{
"Context": "Node Resource Level",
"Test": "should nominate the node until the nomination time passes",
"Duration": 21.0333535
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when nodes register provider id",
"Duration": 10.97940325
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when nodes don't have provider id",
"Duration": 6.0300515830000005
},
{
"Context": "Cluster State Sync",
"Test": "shouldn't consider the cluster state synced if a nodeclaim isn't tracked",
"Duration": 5.881686209000001
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when a combination of nodeclaims and node are tracked",
"Duration": 5.5259662910000005
},
{
"Context": "Cluster State Sync",
"Test": "shouldn't consider the cluster state synced if a nodeclaim hasn't resolved its provider id",
"Duration": 5.143172209
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when all nodeclaims are tracked",
"Duration": 5.0917059590000004
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when the representation of nodes is the same",
"Duration": 4.420585583
},
{
"Context": "Cluster State Sync",
"Test": "shouldn't consider the cluster state synced if a node isn't tracked",
"Duration": 4.31708725
},
{
"Context": "Cluster State Sync",
"Test": "should consider the cluster state synced when all nodes are tracked",
"Duration": 4.3018652500000005
},
{
"Context": "Pod Anti-Affinity",
"Test": "should track pods with required anti-affinity",
"Duration": 2.097221375
},
{
"Context": "DaemonSet Controller",
"Test": "should update daemonsetCache with the newest created pod",
"Duration": 1.044328042
},
{
"Context": "Node Resource Level",
"Test": "should maintain a correct count of resource usage as pods are deleted/added",
"Duration": 0.584069625
},
{
"Context": "Data Races",
"Test": "should ensure that calling Synced() is valid while making updates to NodeClaims",
"Duration": 0.5499530420000001
},
{
"Context": "Data Races",
"Test": "should ensure that calling Synced() is valid while making updates to Nodes",
"Duration": 0.41159662500000005
},
{
"Context": "Volume Usage/Limits",
"Test": "should maintain the volume usage state when receiving NodeClaim updates",
"Duration": 0.08291237500000001
},
{
"Context": "Volume Usage/Limits",
"Test": "should ignore the volume usage limits breach if the pod update is for an already tracked pod",
"Duration": 0.08225320800000001
},
{
"Context": "Volume Usage/Limits",
"Test": "should hydrate the volume usage on a Node update",
"Duration": 0.07980158300000001
},
{
"Context": "HostPort Usage",
"Test": "should maintain the host port usage state when receiving NodeClaim updates",
"Duration": 0.07773129100000001
},
{
"Context": "HostPort Usage",
"Test": "should hydrate the HostPort usage on a Node update",
"Duration": 0.059204375000000004
},
{
"Context": "HostPort Usage",
"Test": "should ignore the host port usage conflict if the pod update is for an already tracked pod",
"Duration": 0.05657450000000001
},
{
"Context": "Node Resource Level",
"Test": "should track pods correctly if we miss events or they are consolidated",
"Duration": 0.035602834
},
{
"Context": "Taints/Managed",
"Test": "should consider ephemeral taints on a managed node after the node is initialized",
"Duration": 0.034931542
},
{
"Context": "Node Resource Level",
"Test": "should handle a node changing from no providerID to registering a providerID",
"Duration": 0.033315625
},
{
"Context": "Node Resource Level",
"Test": "should subtract requests if the pod is deleted",
"Duration": 0.031978
},
{
"Context": "Taints/Managed",
"Test": "should consider startup taints on a managed node after the node is initialized",
"Duration": 0.031303792000000004
},
{
"Context": "Node Resource Level",
"Test": "should not add requests if the pod is terminal",
"Duration": 0.031153792000000003
},
{
"Context": "DaemonSet Controller",
"Test": "should delete daemonset in cache when daemonset is deleted",
"Duration": 0.030477708000000003
},
{
"Context": "Node Resource Level",
"Test": "should track daemonset requested resources separately",
"Duration": 0.029702000000000003
},
{
"Context": "Node Resource Level",
"Test": "should count new pods bound to nodes",
"Duration": 0.029567417000000002
},
{
"Context": "Node Resource Level",
"Test": "should not count pods not bound to nodes",
"Duration": 0.028627209
},
{
"Context": "Node Resource Level",
"Test": "should stop tracking nodes that are deleted",
"Duration": 0.028294958000000002
},
{
"Context": "Node Resource Level",
"Test": "should count existing pods bound to nodes",
"Duration": 0.027639416000000003
},
{
"Context": "Pod Anti-Affinity",
"Test": "should stop tracking pods with required anti-affinity if the pod is deleted",
"Duration": 0.027246959
},
{
"Context": "Pod Anti-Affinity",
"Test": "should not track pods with preferred anti-affinity",
"Duration": 0.027089750000000003
},
{
"Context": "Node Resource Level",
"Test": "should mark node for deletion when nodeclaim is deleted",
"Duration": 0.026867041
},
{
"Context": "Cluster State Sync",
"Test": "shouldn't consider the cluster state synced if a nodeclaim without a providerID is deleted",
"Duration": 0.025000209000000002
},
{
"Context": "Taints/Managed",
"Test": "should consider startup taints on a managed node that isn't initialized",
"Duration": 0.024672125000000003
},
{
"Context": "Pod Anti-Affinity",
"Test": "should handle events out of order",
"Duration": 0.024533959
},
{
"Context": "Taints/Unmanaged",
"Test": "should consider ephemeral taints on an unmanaged node after the node is initialized",
"Duration": 0.024231000000000003
},
{
"Context": "Node Deletion",
"Test": "should not leak a state node when the NodeClaim and Node names match",
"Duration": 0.024045125
},
{
"Context": "Taints/Managed",
"Test": "should not consider ephemeral taints on a managed node that isn't initialized",
"Duration": 0.023652041000000002
},
{
"Context": "Consolidated State",
"Test": "should cause consolidation state to change when a NodePool is updated",
"Duration": 0.021376542000000002
},
{
"Context": "Node Resource Level",
"Test": "should mark node for deletion when node is deleted",
"Duration": 0.020735333
},
{
"Context": "DaemonSet Controller",
"Test": "should update daemonsetCache when daemonset pod is created",
"Duration": 0.019265541
},
{
"Context": "Taints/Unmanaged",
"Test": "should consider ephemeral taints on an unmanaged node that isn't initialized",
"Duration": 0.018855291
},
{
"Context": "Consolidated State",
"Test": "should update the consolidated value when setting consolidation",
"Duration": 0.0185365
},
{
"Context": "Cluster State Sync",
"Test": "shouldn't consider the cluster state synced if a nodeclaim is added manually with UpdateNodeClaim",
"Duration": 0.018498917
},
{
"Context": "DaemonSet Controller",
"Test": "should not update daemonsetCache when daemonset pod is not present",
"Duration": 0.017861375000000002
},
{
"Context": "Consolidated State",
"Test": "should update the consolidated value when consolidation timeout (5m) has passed and state hasn't changed",
"Duration": 0.016985167000000002
}
]
Description
What problem are you trying to solve? Our unit tests currently take ~11m to run