1
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