...

Source file src/k8s.io/kubectl/pkg/cmd/events/event_printer_test.go

Documentation: k8s.io/kubectl/pkg/cmd/events

     1  /*
     2  Copyright 2022 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package events
    18  
    19  import (
    20  	"bytes"
    21  	corev1 "k8s.io/api/core/v1"
    22  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    23  	"k8s.io/apimachinery/pkg/runtime"
    24  	"testing"
    25  	"time"
    26  )
    27  
    28  func TestPrintObj(t *testing.T) {
    29  	tests := []struct {
    30  		printer  EventPrinter
    31  		obj      runtime.Object
    32  		expected string
    33  	}{
    34  		{
    35  			printer: EventPrinter{
    36  				NoHeaders:     false,
    37  				AllNamespaces: false,
    38  			},
    39  			obj: &corev1.Event{
    40  				ObjectMeta: metav1.ObjectMeta{
    41  					Name:      "bar-000",
    42  					Namespace: "foo",
    43  				},
    44  				InvolvedObject: corev1.ObjectReference{
    45  					APIVersion: "apps/v1",
    46  					Kind:       "Deployment",
    47  					Name:       "bar",
    48  					Namespace:  "foo",
    49  					UID:        "00000000-0000-0000-0000-000000000001",
    50  				},
    51  				Type:                corev1.EventTypeNormal,
    52  				Reason:              "ScalingReplicaSet",
    53  				Message:             "Scaled up replica set bar-002 to 1",
    54  				ReportingController: "deployment-controller",
    55  				EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
    56  				Series: &corev1.EventSeries{
    57  					Count:            3,
    58  					LastObservedTime: metav1.NewMicroTime(time.Now().Add(-12 * time.Minute)),
    59  				},
    60  			},
    61  			expected: `LAST SEEN	TYPE	REASON	OBJECT	MESSAGE
    62  12m (x3 over 20m)	Normal	ScalingReplicaSet	Deployment/bar	Scaled up replica set bar-002 to 1
    63  `,
    64  		},
    65  		{
    66  			printer: EventPrinter{
    67  				NoHeaders:     false,
    68  				AllNamespaces: true,
    69  			},
    70  			obj: &corev1.EventList{
    71  				Items: []corev1.Event{
    72  					{
    73  						ObjectMeta: metav1.ObjectMeta{
    74  							Name:      "bar-000",
    75  							Namespace: "foo",
    76  						},
    77  						InvolvedObject: corev1.ObjectReference{
    78  							APIVersion: "apps/v1",
    79  							Kind:       "Deployment",
    80  							Name:       "bar",
    81  							Namespace:  "foo",
    82  							UID:        "00000000-0000-0000-0000-000000000001",
    83  						},
    84  						Type:                corev1.EventTypeNormal,
    85  						Reason:              "ScalingReplicaSet",
    86  						Message:             "Scaled up replica set bar-002 to 1",
    87  						ReportingController: "deployment-controller",
    88  						EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
    89  						Series: &corev1.EventSeries{
    90  							Count:            3,
    91  							LastObservedTime: metav1.NewMicroTime(time.Now().Add(-12 * time.Minute)),
    92  						},
    93  					},
    94  					{
    95  						ObjectMeta: metav1.ObjectMeta{
    96  							Name:      "bar-001",
    97  							Namespace: "bar",
    98  						},
    99  						InvolvedObject: corev1.ObjectReference{
   100  							APIVersion: "apps/v1",
   101  							Kind:       "Deployment",
   102  							Name:       "bar2",
   103  							Namespace:  "foo2",
   104  							UID:        "00000000-0000-0000-0000-000000000001",
   105  						},
   106  						Type:                corev1.EventTypeNormal,
   107  						Reason:              "ScalingReplicaSet",
   108  						Message:             "Scaled up replica set bar-002 to 1",
   109  						ReportingController: "deployment-controller",
   110  						EventTime:           metav1.NewMicroTime(time.Now().Add(-15 * time.Minute)),
   111  						Series: &corev1.EventSeries{
   112  							Count:            3,
   113  							LastObservedTime: metav1.NewMicroTime(time.Now().Add(-11 * time.Minute)),
   114  						},
   115  					},
   116  				},
   117  			},
   118  			expected: `NAMESPACE	LAST SEEN	TYPE	REASON	OBJECT	MESSAGE
   119  foo	12m (x3 over 20m)	Normal	ScalingReplicaSet	Deployment/bar	Scaled up replica set bar-002 to 1
   120  bar	11m (x3 over 15m)	Normal	ScalingReplicaSet	Deployment/bar2	Scaled up replica set bar-002 to 1
   121  `,
   122  		},
   123  		{
   124  			printer: EventPrinter{
   125  				NoHeaders:     true,
   126  				AllNamespaces: false,
   127  			},
   128  			obj: &corev1.Event{
   129  				ObjectMeta: metav1.ObjectMeta{
   130  					Name:      "bar-000",
   131  					Namespace: "foo",
   132  				},
   133  				InvolvedObject: corev1.ObjectReference{
   134  					APIVersion: "apps/v1",
   135  					Kind:       "Deployment",
   136  					Name:       "bar",
   137  					Namespace:  "foo",
   138  					UID:        "00000000-0000-0000-0000-000000000001",
   139  				},
   140  				Type:                corev1.EventTypeNormal,
   141  				Reason:              "ScalingReplicaSet",
   142  				Message:             "Scaled up replica set bar-002 to 1",
   143  				ReportingController: "deployment-controller",
   144  				EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
   145  				Series: &corev1.EventSeries{
   146  					Count:            3,
   147  					LastObservedTime: metav1.NewMicroTime(time.Now().Add(-12 * time.Minute)),
   148  				},
   149  			},
   150  			expected: "12m (x3 over 20m)	Normal	ScalingReplicaSet	Deployment/bar	Scaled up replica set bar-002 to 1\n",
   151  		},
   152  		{
   153  			printer: EventPrinter{
   154  				NoHeaders:     false,
   155  				AllNamespaces: true,
   156  			},
   157  			obj: &corev1.Event{
   158  				ObjectMeta: metav1.ObjectMeta{
   159  					Name:      "bar-000",
   160  					Namespace: "foo",
   161  				},
   162  				InvolvedObject: corev1.ObjectReference{
   163  					APIVersion: "apps/v1",
   164  					Kind:       "Deployment",
   165  					Name:       "bar",
   166  					Namespace:  "foo",
   167  					UID:        "00000000-0000-0000-0000-000000000001",
   168  				},
   169  				Type:                corev1.EventTypeNormal,
   170  				Reason:              "ScalingReplicaSet",
   171  				Message:             "Scaled up replica set bar-002 to 1",
   172  				ReportingController: "deployment-controller",
   173  				EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
   174  				Series: &corev1.EventSeries{
   175  					Count:            3,
   176  					LastObservedTime: metav1.NewMicroTime(time.Now().Add(-12 * time.Minute)),
   177  				},
   178  			},
   179  			expected: `NAMESPACE	LAST SEEN	TYPE	REASON	OBJECT	MESSAGE
   180  foo	12m (x3 over 20m)	Normal	ScalingReplicaSet	Deployment/bar	Scaled up replica set bar-002 to 1
   181  `,
   182  		},
   183  		{
   184  			printer: EventPrinter{
   185  				NoHeaders:     true,
   186  				AllNamespaces: true,
   187  			},
   188  			obj: &corev1.Event{
   189  				ObjectMeta: metav1.ObjectMeta{
   190  					Name:      "bar-000",
   191  					Namespace: "foo",
   192  				},
   193  				InvolvedObject: corev1.ObjectReference{
   194  					APIVersion: "apps/v1",
   195  					Kind:       "Deployment",
   196  					Name:       "bar",
   197  					Namespace:  "foo",
   198  					UID:        "00000000-0000-0000-0000-000000000001",
   199  				},
   200  				Type:                corev1.EventTypeNormal,
   201  				Reason:              "ScalingReplicaSet",
   202  				Message:             "Scaled up replica set bar-002 to 1",
   203  				ReportingController: "deployment-controller",
   204  				EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
   205  				Series: &corev1.EventSeries{
   206  					Count:            3,
   207  					LastObservedTime: metav1.NewMicroTime(time.Now().Add(-12 * time.Minute)),
   208  				},
   209  			},
   210  			expected: `foo	12m (x3 over 20m)	Normal	ScalingReplicaSet	Deployment/bar	Scaled up replica set bar-002 to 1
   211  `,
   212  		},
   213  		{
   214  			printer: EventPrinter{
   215  				NoHeaders:     false,
   216  				AllNamespaces: false,
   217  			},
   218  			obj: &corev1.EventList{
   219  				Items: []corev1.Event{
   220  					{
   221  						ObjectMeta: metav1.ObjectMeta{
   222  							Name:      "bar-000",
   223  							Namespace: "foo",
   224  						},
   225  						InvolvedObject: corev1.ObjectReference{
   226  							APIVersion: "apps/v1",
   227  							Kind:       "Deployment",
   228  							Name:       "bar\x1b",
   229  							Namespace:  "foo",
   230  						},
   231  						Type:                "test\x1b",
   232  						Reason:              "test\x1b",
   233  						Message:             "\x1b",
   234  						ReportingController: "deployment-controller",
   235  						EventTime:           metav1.NewMicroTime(time.Now().Add(-20 * time.Minute)),
   236  						Series: &corev1.EventSeries{
   237  							Count:            3,
   238  							LastObservedTime: metav1.NewMicroTime(time.Now().Add(-1 * time.Minute)),
   239  						},
   240  					},
   241  				},
   242  			},
   243  			expected: `LAST SEEN	TYPE	REASON	OBJECT	MESSAGE
   244  60s (x3 over 20m)	test^[	test^[	Deployment/bar^[	^[
   245  `,
   246  		},
   247  	}
   248  
   249  	for _, test := range tests {
   250  		t.Run("", func(t *testing.T) {
   251  			buffer := &bytes.Buffer{}
   252  			if err := test.printer.PrintObj(test.obj, buffer); err != nil {
   253  				t.Errorf("unexpected error: %v", err)
   254  			}
   255  			if buffer.String() != test.expected {
   256  				t.Errorf("\nexpected:\n'%s'\nsaw\n'%s'\n", test.expected, buffer.String())
   257  			}
   258  		})
   259  	}
   260  }
   261  

View as plain text