@@ -280,20 +280,20 @@ func (f *Framework) DumpOnFailure(t *testing.T, fns ...DebugFunc) {
280280 if ! t .Failed () {
281281 return
282282 }
283+ t .Logf ("# Diagnostics for %s (FAILED)" , t .Name ())
283284 for _ , fn := range fns {
284285 fn (t )
285286 }
286287 })
287288}
288289
289- // DebugNamespace returns a DebugFunc that dumps deployments, pods, and events
290+ // DebugNamespaces returns a DebugFunc that dumps deployments, pods, and events
290291// for the given namespaces.
291- func (f * Framework ) DebugNamespace (namespaces ... string ) DebugFunc {
292+ func (f * Framework ) DebugNamespaces (namespaces ... string ) DebugFunc {
292293 return func (t * testing.T ) {
293294 t .Helper ()
294295 for _ , ns := range namespaces {
295- t .Logf ("--- Dumping debug info for namespace %s ---" , ns )
296- f .DumpNamespaceDebug (t , ns )
296+ f .dumpNamespace (t , ns )
297297 }
298298 }
299299}
@@ -335,60 +335,58 @@ func (f *Framework) SkipIfClusterVersionBelow(t *testing.T, minVersion string) {
335335 }
336336}
337337
338- // DumpNamespaceDebug logs deployments (with conditions), pods (with container
339- // statuses), and events for the given namespace. Useful as a t.Cleanup or
340- // on-failure diagnostic helper.
341- func (f * Framework ) DumpNamespaceDebug (t * testing.T , namespace string ) {
338+ func (f * Framework ) dumpNamespace (t * testing.T , namespace string ) {
342339 t .Helper ()
343340 ctx := context .WithoutCancel (t .Context ())
344341
345- t .Log ("=== BEGIN DEBUG DUMP ===" )
346- defer t .Log ("=== END DEBUG DUMP ===" )
342+ t .Logf ("=== BEGIN NAMESPACE DEBUG DUMP ===" )
343+ t .Logf ("* Namespace: %s" , namespace )
344+ defer t .Log ("=== END NAMESPACE DEBUG DUMP ===" )
347345
346+ t .Log ("\n ## Deployments\n " )
348347 var deployments appsv1.DeploymentList
349348 if err := f .K8sClient .List (ctx , & deployments , client .InNamespace (namespace )); err != nil {
350- t .Logf ("Failed to list deployments in %s : %v" , namespace , err )
349+ t .Logf ("Failed to list deployments: %v" , err )
351350 } else {
352- t .Logf ("Deployments in namespace %s: %d" , namespace , len (deployments .Items ))
353351 for _ , d := range deployments .Items {
354- t .Logf (" Deployment: name=%s replicas=%d readyReplicas=%d availableReplicas=%d" ,
352+ t .Logf ("* Deployment: name=%s replicas=%d readyReplicas=%d availableReplicas=%d" ,
355353 d .Name , ptr .Deref (d .Spec .Replicas , 0 ), d .Status .ReadyReplicas , d .Status .AvailableReplicas )
356354 for _ , c := range d .Status .Conditions {
357- t .Logf (" condition: type=%s status=%s reason=%s message=%s" ,
355+ t .Logf (" * condition: type=%s status=%s reason=%s message=%s" ,
358356 c .Type , c .Status , c .Reason , c .Message )
359357 }
360358 }
361359 }
362360
361+ t .Log ("\n ## Pods\n " )
363362 var pods corev1.PodList
364363 if err := f .K8sClient .List (ctx , & pods , client .InNamespace (namespace )); err != nil {
365- t .Logf ("Failed to list pods in %s : %v" , namespace , err )
364+ t .Logf ("Failed to list pods: %v" , err )
366365 } else {
367- t .Logf ("Pods in namespace %s: %d" , namespace , len (pods .Items ))
368366 for _ , p := range pods .Items {
369- t .Logf (" Pod: name=%s phase=%s" , p .Name , p .Status .Phase )
367+ t .Logf ("* Pod: name=%s phase=%s" , p .Name , p .Status .Phase )
370368 for _ , cs := range p .Status .ContainerStatuses {
371369 switch {
372370 case cs .State .Running != nil :
373- t .Logf (" container=%s ready=%v restarts=%d state=Running" , cs .Name , cs .Ready , cs .RestartCount )
371+ t .Logf (" * container=%s ready=%v restarts=%d state=Running" , cs .Name , cs .Ready , cs .RestartCount )
374372 case cs .State .Waiting != nil :
375- t .Logf (" container=%s ready=%v restarts=%d state=Waiting reason=%s message=%s" ,
373+ t .Logf (" * container=%s ready=%v restarts=%d state=Waiting reason=%s message=%s" ,
376374 cs .Name , cs .Ready , cs .RestartCount , cs .State .Waiting .Reason , cs .State .Waiting .Message )
377375 case cs .State .Terminated != nil :
378- t .Logf (" container=%s ready=%v restarts=%d state=Terminated reason=%s exitCode=%d" ,
376+ t .Logf (" * container=%s ready=%v restarts=%d state=Terminated reason=%s exitCode=%d" ,
379377 cs .Name , cs .Ready , cs .RestartCount , cs .State .Terminated .Reason , cs .State .Terminated .ExitCode )
380378 }
381379 }
382380 }
383381 }
384382
383+ t .Log ("\n ## Events\n " )
385384 var events corev1.EventList
386385 if err := f .K8sClient .List (ctx , & events , client .InNamespace (namespace )); err != nil {
387- t .Logf ("Failed to list events in %s : %v" , namespace , err )
386+ t .Logf ("Failed to list events: %v" , err )
388387 } else {
389- t .Logf ("Events in namespace %s: %d" , namespace , len (events .Items ))
390388 for _ , e := range events .Items {
391- t .Logf (" Event: involvedObject=%s/%s reason=%s message=%s type=%s count=%d" ,
389+ t .Logf ("* Event: involvedObject=%s/%s reason=%s message=%s type=%s count=%d" ,
392390 e .InvolvedObject .Kind , e .InvolvedObject .Name , e .Reason , e .Message , e .Type , e .Count )
393391 }
394392 }
0 commit comments