Before

…lines 1–17 unchanged (17 lines)
18
19import (
20 "context"
21 "math/rand"
22 "strings"
23 "testing"
24
25 "github.com/stretchr/testify/assert"
26 "github.com/stretchr/testify/require"
27 "google.golang.org/protobuf/proto"
28 v1 "k8s.io/api/core/v1"
29 "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
30 apiequality "k8s.io/apimachinery/pkg/api/equality"
31 metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
32 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33 "k8s.io/apimachinery/pkg/types"
…lines 34–53 unchanged (20 lines)
54 server.OnPodStatusUpdated(pod1, v1.PodStatus{Phase: v1.PodSucceeded})
55 server.OnPodRemoved(pod1)
56
57 event := <-clientChannel
58 assert.Equal(t, "ADDED", string(event.Type))
59 assert.Equal(t, pod1.UID, event.UID)
60
61 event = <-clientChannel
62 assert.Equal(t, "MODIFIED", string(event.Type))
63 assert.Equal(t, pod1.UID, event.UID)
64
65 event = <-clientChannel
66 assert.Equal(t, "DELETED", string(event.Type))
67 assert.Equal(t, pod1.UID, event.UID)
68 assert.Equal(t, pod1, event.Pod)
69}
70
71func TestListPods(t *testing.T) {
72 broadcaster := podsapi.NewBroadcaster()
73 mockManager := new(kubepodtest.MockManager)
74 server := podsapi.NewPodsServerForTest(broadcaster, mockManager)
75 pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{UID: "pod1-uid", Name: "pod1", Namespace: "ns1"}}
76 pod2 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{UID: "pod2-uid", Name: "pod2", Namespace: "ns2"}}
…lines 77–211 unchanged (135 lines)
212 }
213 if !apiequality.Semantic.DeepEqual(pod, pod2) {
214 t.Fatal("round-tripped objects were different")
215 }
216 }
217}
218

After

…lines 1–17 unchanged (17 lines)
18
19import (
20 "context"
21 "math/rand"
22 "strings"
23 "testing"
24 "time"
25
26 "github.com/stretchr/testify/assert"
27 "github.com/stretchr/testify/mock"
28 "github.com/stretchr/testify/require"
29 "google.golang.org/grpc"
30 "google.golang.org/protobuf/proto"
31 v1 "k8s.io/api/core/v1"
32 "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
33 apiequality "k8s.io/apimachinery/pkg/api/equality"
34 metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
35 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
…lines 36–56 unchanged (21 lines)
57 server.OnPodStatusUpdated(pod1, v1.PodStatus{Phase: v1.PodSucceeded})
58 server.OnPodRemoved(pod1)
59
60 event := <-clientChannel
61 assert.Equal(t, "ADDED", string(event.Type))
62 assert.Equal(t, pod1.UID, event.UID)
63 assert.Equal(t, pod1, event.Pod)
64
65 event = <-clientChannel
66 assert.Equal(t, "MODIFIED", string(event.Type))
67 assert.Equal(t, pod1.UID, event.UID)
68 expectedPod := *pod1
69 expectedPod.Status = v1.PodStatus{Phase: v1.PodSucceeded}
70 assert.Equal(t, &expectedPod, event.Pod)
71
72 event = <-clientChannel
73 assert.Equal(t, "DELETED", string(event.Type))
74 assert.Equal(t, pod1.UID, event.UID)
75 assert.Equal(t, pod1, event.Pod)
76
77 select {
78 case event := <-clientChannel:
79 t.Errorf("Unexpected event received: %v", event)
80 default:
81 }
82}
83
84type MockWatchPodsServer struct {
85 grpc.ServerStream
86 Ctx context.Context
87 EventCh chan *podsv1alpha1.WatchPodsEvent
88}
89
90func (m *MockWatchPodsServer) Send(event *podsv1alpha1.WatchPodsEvent) error {
91 select {
92 case m.EventCh <- event:
93 return nil
94 case <-m.Ctx.Done():
95 return m.Ctx.Err()
96 }
97}
98
99func (m *MockWatchPodsServer) Context() context.Context {
100 return m.Ctx
101}
102
103func TestWatchPods(t *testing.T) {
104 broadcaster := podsapi.NewBroadcaster()
105 mockManager := new(kubepodtest.MockManager)
106 server := podsapi.NewPodsServerForTest(broadcaster, mockManager)
107 pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{UID: "pod1-uid", Name: "pod1", Namespace: "ns1"}}
108
109 mockManager.On("GetPods").Return([]*v1.Pod{pod1})
110 mockManager.On("GetPodByUID", types.UID("pod1-uid")).Return(pod1, true)
111
112 ctx, cancel := context.WithCancel(context.Background())
113 defer cancel()
114
115 mockStream := &MockWatchPodsServer{
116 Ctx: ctx,
117 EventCh: make(chan *podsv1alpha1.WatchPodsEvent, 10),
118 }
119
120 go func() {
121 server.WatchPods(&podsv1alpha1.WatchPodsRequest{}, mockStream)
122 }()
123
124 // Verify initial ADDED event
125 event := <-mockStream.EventCh
126 assert.Equal(t, podsv1alpha1.EventType_ADDED, event.Type)
127 podOut := &v1.Pod{}
128 err := podOut.Unmarshal(event.Pod)
129 require.NoError(t, err)
130 assert.Equal(t, "pod1", podOut.Name)
131
132 // Verify INITIAL_SYNC event
133 event = <-mockStream.EventCh
134 assert.Equal(t, podsv1alpha1.EventType_INITIAL_SYNC_COMPLETE, event.Type)
135 assert.Empty(t, event.Pod)
136
137 // Trigger an update
138 server.OnPodUpdated(pod1)
139
140 // Verify MODIFIED event
141 event = <-mockStream.EventCh
142 assert.Equal(t, podsv1alpha1.EventType_MODIFIED, event.Type)
143 podOut = &v1.Pod{}
144 err = podOut.Unmarshal(event.Pod)
145 require.NoError(t, err)
146 assert.Equal(t, "pod1", podOut.Name)
147}
148
149func TestOnPodStatusUpdatedOverlaysStatus(t *testing.T) {
150 broadcaster := podsapi.NewBroadcaster()
151 mockManager := new(kubepodtest.MockManager)
152 server := podsapi.NewPodsServerForTest(broadcaster, mockManager)
153
154 // The pod object as it might exist in the manager (or passed by caller)
155 // It has Stale status.
156 pod := &v1.Pod{
157 ObjectMeta: metav1.ObjectMeta{UID: "pod-1", Name: "pod-1", Namespace: "ns"},
158 Spec: v1.PodSpec{NodeName: "worker-node"},
159 Status: v1.PodStatus{Phase: v1.PodPending},
160 }
161
162 // The new status that is being reported
163 newStatus := v1.PodStatus{Phase: v1.PodRunning, Message: "Pod is running"}
164
165 clientChannel := make(chan podsapi.PodWatchEvent, 1)
166 broadcaster.Register(clientChannel)
167 defer broadcaster.Unregister(clientChannel)
168
169 // Trigger the status update
170 server.OnPodStatusUpdated(pod, newStatus)
171
172 select {
173 case event := <-clientChannel:
174 assert.Equal(t, "MODIFIED", string(event.Type))
175 assert.Equal(t, "pod-1", event.Pod.Name)
176
177 // The status in the event should be the New Status (Running)
178 // NOT the status from the pod object (Pending)
179 assert.Equal(t, v1.PodRunning, event.Pod.Status.Phase)
180 assert.Equal(t, "Pod is running", event.Pod.Status.Message)
181
182 // Verify we didn't mutate the original pod
183 assert.Equal(t, v1.PodPending, pod.Status.Phase, "Original pod object should not be mutated")
184
185 case <-time.After(1 * time.Second):
186 t.Fatal("Timeout waiting for event")
187 }
188}
189
190func TestListPods(t *testing.T) {
191 broadcaster := podsapi.NewBroadcaster()
192 mockManager := new(kubepodtest.MockManager)
193 server := podsapi.NewPodsServerForTest(broadcaster, mockManager)
194 pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{UID: "pod1-uid", Name: "pod1", Namespace: "ns1"}}
…lines 195–331 unchanged (137 lines)
332 if !apiequality.Semantic.DeepEqual(pod, pod2) {
333 t.Fatal("round-tripped objects were different")
334 }
335 }
336}
337
338type MockStatusProvider struct {
339 mock.Mock
340}
341
342func (m *MockStatusProvider) GetPodStatus(uid types.UID) (v1.PodStatus, bool) {
343 args := m.Called(uid)
344 return args.Get(0).(v1.PodStatus), args.Bool(1)
345}
346
347func TestOnPodUpdatedUsesStatusProvider(t *testing.T) {
348 broadcaster := podsapi.NewBroadcaster()
349 mockManager := new(kubepodtest.MockManager)
350 server := podsapi.NewPodsServerForTest(broadcaster, mockManager)
351 mockStatusProvider := new(MockStatusProvider)
352 server.SetStatusProvider(mockStatusProvider)
353
354 // Pod with "Stale" status
355 pod := &v1.Pod{
356 ObjectMeta: metav1.ObjectMeta{UID: "pod-1", Name: "pod-1", Namespace: "ns"},
357 Status: v1.PodStatus{Phase: v1.PodPending},
358 }
359
360 // Status provider has "Fresh" status
361 freshStatus := v1.PodStatus{Phase: v1.PodRunning}
362 mockStatusProvider.On("GetPodStatus", pod.UID).Return(freshStatus, true)
363
364 clientChannel := make(chan podsapi.PodWatchEvent, 1)
365 broadcaster.Register(clientChannel)
366 defer broadcaster.Unregister(clientChannel)
367
368 server.OnPodUpdated(pod)
369
370 select {
371 case event := <-clientChannel:
372 assert.Equal(t, "MODIFIED", string(event.Type))
373 assert.Equal(t, v1.PodRunning, event.Pod.Status.Phase)
374 case <-time.After(1 * time.Second):
375 t.Fatal("Timeout waiting for event")
376 }
377
378 mockStatusProvider.AssertExpectations(t)
379}
380

Before

source_file
comment "/*\nCopyright The Kubernetes Authors.\n\nLicensed under the Apa"...
package_clause
package "package"
package_identifier "pods_test"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "context"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "math/rand"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "strings"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "testing"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/stretchr/testify/assert"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/stretchr/testify/require"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "google.golang.org/protobuf/proto"
" "\""
import_spec
package_identifier "v1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/api/core/v1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
" "\""
import_spec
package_identifier "apiequality"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/api/equality"
" "\""
import_spec
package_identifier "metafuzzer"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
" "\""
import_spec
package_identifier "metav1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/apis/meta/v1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/types"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/component-base/metrics/testutil"
" "\""
import_spec
package_identifier "podsv1alpha1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubelet/pkg/apis/pods/v1alpha1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/api/legacyscheme"
" "\""
import_spec
package_identifier "corefuzzer"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/apis/core/fuzzer"
" "\""
import_spec
package_identifier "podsapi"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/apis/pods"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/metrics"
" "\""
import_spec
package_identifier "kubepodtest"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/pod/testing"
" "\""
) ")"
function_declaration
func "func"
identifier "TestStartEventLoop"
parameter_list
( "("
parameter_declaration
identifier "t"
pointer_type
* "*"
qualified_type
package_identifier "testing"
. "."
type_identifier "T"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "broadcaster"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewBroadcaster"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockManager"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
qualified_type
package_identifier "kubepodtest"
. "."
type_identifier "MockManager"
) ")"
short_var_declaration
expression_list
identifier "server"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewPodsServerForTest"
argument_list
( "("
identifier "broadcaster"
, ","
identifier "mockManager"
) ")"
short_var_declaration (+57 nodes collapsed)
short_var_declaration
expression_list
identifier "clientChannel"
:= ":="
expression_list
call_expression
identifier "make"
argument_list
( "("
channel_type
chan "chan"
qualified_type
package_identifier "podsapi"
. "."
type_identifier "PodWatchEvent"
, ","
int_literal "100"
) ")"
expression_statement
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Register"
argument_list
( "("
identifier "clientChannel"
) ")"
defer_statement
defer "defer"
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Unregister"
argument_list
( "("
identifier "clientChannel"
) ")"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodAdded"
argument_list
( "("
identifier "pod1"
) ")"
expression_statement (+28 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodRemoved"
argument_list
( "("
identifier "pod1"
) ")"
short_var_declaration
expression_list
identifier "event"
:= ":="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
identifier "pod1"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
} "}"
function_declaration (+395 nodes collapsed)
function_declaration (+584 nodes collapsed)
function_declaration (+331 nodes collapsed)
function_declaration (+317 nodes collapsed)
function_declaration (+390 nodes collapsed)

After

source_file
comment "/*\nCopyright The Kubernetes Authors.\n\nLicensed under the Apa"...
package_clause
package "package"
package_identifier "pods_test"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "context"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "math/rand"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "strings"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "testing"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "time"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/stretchr/testify/assert"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/stretchr/testify/mock"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/stretchr/testify/require"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "google.golang.org/grpc"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "google.golang.org/protobuf/proto"
" "\""
import_spec
package_identifier "v1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/api/core/v1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
" "\""
import_spec
package_identifier "apiequality"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/api/equality"
" "\""
import_spec
package_identifier "metafuzzer"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
" "\""
import_spec
package_identifier "metav1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/apis/meta/v1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/apimachinery/pkg/types"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/component-base/metrics/testutil"
" "\""
import_spec
package_identifier "podsv1alpha1"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubelet/pkg/apis/pods/v1alpha1"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/api/legacyscheme"
" "\""
import_spec
package_identifier "corefuzzer"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/apis/core/fuzzer"
" "\""
import_spec
package_identifier "podsapi"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/apis/pods"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/metrics"
" "\""
import_spec
package_identifier "kubepodtest"
interpreted_string_literal
" "\""
interpreted_string_literal_content "k8s.io/kubernetes/pkg/kubelet/pod/testing"
" "\""
) ")"
function_declaration
func "func"
identifier "TestStartEventLoop"
parameter_list
( "("
parameter_declaration
identifier "t"
pointer_type
* "*"
qualified_type
package_identifier "testing"
. "."
type_identifier "T"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "broadcaster"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewBroadcaster"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockManager"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
qualified_type
package_identifier "kubepodtest"
. "."
type_identifier "MockManager"
) ")"
short_var_declaration
expression_list
identifier "server"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewPodsServerForTest"
argument_list
( "("
identifier "broadcaster"
, ","
identifier "mockManager"
) ")"
short_var_declaration (+57 nodes collapsed)
short_var_declaration
expression_list
identifier "clientChannel"
:= ":="
expression_list
call_expression
identifier "make"
argument_list
( "("
channel_type
chan "chan"
qualified_type
package_identifier "podsapi"
. "."
type_identifier "PodWatchEvent"
, ","
int_literal "100"
) ")"
expression_statement
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Register"
argument_list
( "("
identifier "clientChannel"
) ")"
defer_statement
defer "defer"
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Unregister"
argument_list
( "("
identifier "clientChannel"
) ")"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodAdded"
argument_list
( "("
identifier "pod1"
) ")"
expression_statement (+28 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodRemoved"
argument_list
( "("
identifier "pod1"
) ")"
short_var_declaration
expression_list
identifier "event"
:= ":="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
identifier "pod1"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
short_var_declaration
expression_list
identifier "expectedPod"
:= ":="
expression_list
unary_expression
* "*"
identifier "pod1"
assignment_statement
expression_list
selector_expression
identifier "expectedPod"
. "."
field_identifier "Status"
= "="
expression_list
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
literal_value
{ "{"
keyed_element
literal_element
identifier "Phase"
: ":"
literal_element
selector_expression
identifier "v1"
. "."
field_identifier "PodSucceeded"
} "}"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
unary_expression
& "&"
identifier "expectedPod"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
identifier "clientChannel"
expression_statement (+25 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "pod1"
. "."
field_identifier "UID"
, ","
selector_expression
identifier "event"
. "."
field_identifier "UID"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
identifier "pod1"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
select_statement
select "select"
{ "{"
communication_case
case "case"
receive_statement
expression_list
identifier "event"
:= ":="
unary_expression
<- "<-"
identifier "clientChannel"
: ":"
statement_list
expression_statement
call_expression
selector_expression
identifier "t"
. "."
field_identifier "Errorf"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "Unexpected event received: %v"
" "\""
, ","
identifier "event"
) ")"
default_case
default "default"
: ":"
} "}"
} "}"
type_declaration
type "type"
type_spec
type_identifier "MockWatchPodsServer"
struct_type
struct "struct"
field_declaration_list
{ "{"
field_declaration
qualified_type
package_identifier "grpc"
. "."
type_identifier "ServerStream"
field_declaration
field_identifier "Ctx"
qualified_type
package_identifier "context"
. "."
type_identifier "Context"
field_declaration
field_identifier "EventCh"
channel_type
chan "chan"
pointer_type
* "*"
qualified_type
package_identifier "podsv1alpha1"
. "."
type_identifier "WatchPodsEvent"
} "}"
method_declaration
func "func"
parameter_list
( "("
parameter_declaration
identifier "m"
pointer_type
* "*"
type_identifier "MockWatchPodsServer"
) ")"
field_identifier "Send"
parameter_list
( "("
parameter_declaration
identifier "event"
pointer_type
* "*"
qualified_type
package_identifier "podsv1alpha1"
. "."
type_identifier "WatchPodsEvent"
) ")"
type_identifier "error"
block
{ "{"
statement_list
select_statement
select "select"
{ "{"
communication_case
case "case"
send_statement
selector_expression
identifier "m"
. "."
field_identifier "EventCh"
<- "<-"
identifier "event"
: ":"
statement_list
return_statement
return "return"
expression_list
nil "nil"
communication_case
case "case"
receive_statement
unary_expression
<- "<-"
call_expression
selector_expression
selector_expression
identifier "m"
. "."
field_identifier "Ctx"
. "."
field_identifier "Done"
argument_list
( "("
) ")"
: ":"
statement_list
return_statement
return "return"
expression_list
call_expression
selector_expression
selector_expression
identifier "m"
. "."
field_identifier "Ctx"
. "."
field_identifier "Err"
argument_list
( "("
) ")"
} "}"
} "}"
method_declaration
func "func"
parameter_list
( "("
parameter_declaration
identifier "m"
pointer_type
* "*"
type_identifier "MockWatchPodsServer"
) ")"
field_identifier "Context"
parameter_list
( "("
) ")"
qualified_type
package_identifier "context"
. "."
type_identifier "Context"
block
{ "{"
statement_list
return_statement
return "return"
expression_list
selector_expression
identifier "m"
. "."
field_identifier "Ctx"
} "}"
function_declaration
func "func"
identifier "TestWatchPods"
parameter_list
( "("
parameter_declaration
identifier "t"
pointer_type
* "*"
qualified_type
package_identifier "testing"
. "."
type_identifier "T"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "broadcaster"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewBroadcaster"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockManager"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
qualified_type
package_identifier "kubepodtest"
. "."
type_identifier "MockManager"
) ")"
short_var_declaration
expression_list
identifier "server"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewPodsServerForTest"
argument_list
( "("
identifier "broadcaster"
, ","
identifier "mockManager"
) ")"
short_var_declaration
expression_list
identifier "pod1"
:= ":="
expression_list
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
keyed_element
literal_element
identifier "ObjectMeta"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "metav1"
. "."
type_identifier "ObjectMeta"
literal_value
{ "{"
keyed_element
literal_element
identifier "UID"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod1-uid"
" "\""
, ","
keyed_element
literal_element
identifier "Name"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod1"
" "\""
, ","
keyed_element
literal_element
identifier "Namespace"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "ns1"
" "\""
} "}"
} "}"
expression_statement
call_expression
selector_expression
call_expression
selector_expression
identifier "mockManager"
. "."
field_identifier "On"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "GetPods"
" "\""
) ")"
. "."
field_identifier "Return"
argument_list
( "("
composite_literal
slice_type
[ "["
] "]"
pointer_type
* "*"
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
literal_element
identifier "pod1"
} "}"
) ")"
expression_statement
call_expression
selector_expression
call_expression
selector_expression
identifier "mockManager"
. "."
field_identifier "On"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "GetPodByUID"
" "\""
, ","
call_expression
selector_expression
identifier "types"
. "."
field_identifier "UID"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod1-uid"
" "\""
) ")"
) ")"
. "."
field_identifier "Return"
argument_list
( "("
identifier "pod1"
, ","
true "true"
) ")"
short_var_declaration
expression_list
identifier "ctx"
, ","
identifier "cancel"
:= ":="
expression_list
call_expression
selector_expression
identifier "context"
. "."
field_identifier "WithCancel"
argument_list
( "("
call_expression
selector_expression
identifier "context"
. "."
field_identifier "Background"
argument_list
( "("
) ")"
) ")"
defer_statement
defer "defer"
call_expression
identifier "cancel"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockStream"
:= ":="
expression_list
unary_expression
& "&"
composite_literal
type_identifier "MockWatchPodsServer"
literal_value
{ "{"
keyed_element
literal_element
identifier "Ctx"
: ":"
literal_element
identifier "ctx"
, ","
keyed_element
literal_element
identifier "EventCh"
: ":"
literal_element
call_expression
identifier "make"
argument_list
( "("
channel_type
chan "chan"
pointer_type
* "*"
qualified_type
package_identifier "podsv1alpha1"
. "."
type_identifier "WatchPodsEvent"
, ","
int_literal "10"
) ")"
, ","
} "}"
go_statement
go "go"
call_expression
func_literal
func "func"
parameter_list
( "("
) ")"
block
{ "{"
statement_list
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "WatchPods"
argument_list
( "("
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "podsv1alpha1"
. "."
type_identifier "WatchPodsRequest"
literal_value
{ "{"
} "}"
, ","
identifier "mockStream"
) ")"
} "}"
argument_list
( "("
) ")"
comment "// Verify initial ADDED event"
short_var_declaration
expression_list
identifier "event"
:= ":="
expression_list
unary_expression
<- "<-"
selector_expression
identifier "mockStream"
. "."
field_identifier "EventCh"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "podsv1alpha1"
. "."
field_identifier "EventType_ADDED"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Type"
) ")"
short_var_declaration
expression_list
identifier "podOut"
:= ":="
expression_list
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
} "}"
short_var_declaration
expression_list
identifier "err"
:= ":="
expression_list
call_expression
selector_expression
identifier "podOut"
. "."
field_identifier "Unmarshal"
argument_list
( "("
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
expression_statement
call_expression
selector_expression
identifier "require"
. "."
field_identifier "NoError"
argument_list
( "("
identifier "t"
, ","
identifier "err"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod1"
" "\""
, ","
selector_expression
identifier "podOut"
. "."
field_identifier "Name"
) ")"
comment "// Verify INITIAL_SYNC event"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
selector_expression
identifier "mockStream"
. "."
field_identifier "EventCh"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "podsv1alpha1"
. "."
field_identifier "EventType_INITIAL_SYNC_COMPLETE"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Type"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Empty"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
comment "// Trigger an update"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodUpdated"
argument_list
( "("
identifier "pod1"
) ")"
comment "// Verify MODIFIED event"
assignment_statement
expression_list
identifier "event"
= "="
expression_list
unary_expression
<- "<-"
selector_expression
identifier "mockStream"
. "."
field_identifier "EventCh"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "podsv1alpha1"
. "."
field_identifier "EventType_MODIFIED"
, ","
selector_expression
identifier "event"
. "."
field_identifier "Type"
) ")"
assignment_statement
expression_list
identifier "podOut"
= "="
expression_list
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
} "}"
assignment_statement
expression_list
identifier "err"
= "="
expression_list
call_expression
selector_expression
identifier "podOut"
. "."
field_identifier "Unmarshal"
argument_list
( "("
selector_expression
identifier "event"
. "."
field_identifier "Pod"
) ")"
expression_statement
call_expression
selector_expression
identifier "require"
. "."
field_identifier "NoError"
argument_list
( "("
identifier "t"
, ","
identifier "err"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod1"
" "\""
, ","
selector_expression
identifier "podOut"
. "."
field_identifier "Name"
) ")"
} "}"
function_declaration
func "func"
identifier "TestOnPodStatusUpdatedOverlaysStatus"
parameter_list
( "("
parameter_declaration
identifier "t"
pointer_type
* "*"
qualified_type
package_identifier "testing"
. "."
type_identifier "T"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "broadcaster"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewBroadcaster"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockManager"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
qualified_type
package_identifier "kubepodtest"
. "."
type_identifier "MockManager"
) ")"
short_var_declaration
expression_list
identifier "server"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewPodsServerForTest"
argument_list
( "("
identifier "broadcaster"
, ","
identifier "mockManager"
) ")"
comment "// The pod object as it might exist in the manager (or passe"...
comment "// It has Stale status."
short_var_declaration
expression_list
identifier "pod"
:= ":="
expression_list
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
keyed_element
literal_element
identifier "ObjectMeta"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "metav1"
. "."
type_identifier "ObjectMeta"
literal_value
{ "{"
keyed_element
literal_element
identifier "UID"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod-1"
" "\""
, ","
keyed_element
literal_element
identifier "Name"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod-1"
" "\""
, ","
keyed_element
literal_element
identifier "Namespace"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "ns"
" "\""
} "}"
, ","
keyed_element
literal_element
identifier "Spec"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodSpec"
literal_value
{ "{"
keyed_element
literal_element
identifier "NodeName"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "worker-node"
" "\""
} "}"
, ","
keyed_element
literal_element
identifier "Status"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
literal_value
{ "{"
keyed_element
literal_element
identifier "Phase"
: ":"
literal_element
selector_expression
identifier "v1"
. "."
field_identifier "PodPending"
} "}"
, ","
} "}"
comment "// The new status that is being reported"
short_var_declaration
expression_list
identifier "newStatus"
:= ":="
expression_list
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
literal_value
{ "{"
keyed_element
literal_element
identifier "Phase"
: ":"
literal_element
selector_expression
identifier "v1"
. "."
field_identifier "PodRunning"
, ","
keyed_element
literal_element
identifier "Message"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "Pod is running"
" "\""
} "}"
short_var_declaration
expression_list
identifier "clientChannel"
:= ":="
expression_list
call_expression
identifier "make"
argument_list
( "("
channel_type
chan "chan"
qualified_type
package_identifier "podsapi"
. "."
type_identifier "PodWatchEvent"
, ","
int_literal "1"
) ")"
expression_statement
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Register"
argument_list
( "("
identifier "clientChannel"
) ")"
defer_statement
defer "defer"
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Unregister"
argument_list
( "("
identifier "clientChannel"
) ")"
comment "// Trigger the status update"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodStatusUpdated"
argument_list
( "("
identifier "pod"
, ","
identifier "newStatus"
) ")"
select_statement
select "select"
{ "{"
communication_case
case "case"
receive_statement
expression_list
identifier "event"
:= ":="
unary_expression
<- "<-"
identifier "clientChannel"
: ":"
statement_list
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "MODIFIED"
" "\""
, ","
call_expression
identifier "string"
argument_list
( "("
selector_expression
identifier "event"
. "."
field_identifier "Type"
) ")"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod-1"
" "\""
, ","
selector_expression
selector_expression
identifier "event"
. "."
field_identifier "Pod"
. "."
field_identifier "Name"
) ")"
comment "// The status in the event should be the New Status (Running"...
comment "// NOT the status from the pod object (Pending)"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "v1"
. "."
field_identifier "PodRunning"
, ","
selector_expression
selector_expression
selector_expression
identifier "event"
. "."
field_identifier "Pod"
. "."
field_identifier "Status"
. "."
field_identifier "Phase"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "Pod is running"
" "\""
, ","
selector_expression
selector_expression
selector_expression
identifier "event"
. "."
field_identifier "Pod"
. "."
field_identifier "Status"
. "."
field_identifier "Message"
) ")"
comment "// Verify we didn't mutate the original pod"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "v1"
. "."
field_identifier "PodPending"
, ","
selector_expression
selector_expression
identifier "pod"
. "."
field_identifier "Status"
. "."
field_identifier "Phase"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "Original pod object should not be mutated"
" "\""
) ")"
communication_case
case "case"
receive_statement
unary_expression
<- "<-"
call_expression
selector_expression
identifier "time"
. "."
field_identifier "After"
argument_list
( "("
binary_expression
int_literal "1"
* "*"
selector_expression
identifier "time"
. "."
field_identifier "Second"
) ")"
: ":"
statement_list
expression_statement
call_expression
selector_expression
identifier "t"
. "."
field_identifier "Fatal"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "Timeout waiting for event"
" "\""
) ")"
} "}"
} "}"
function_declaration (+395 nodes collapsed)
function_declaration (+584 nodes collapsed)
function_declaration (+331 nodes collapsed)
function_declaration (+317 nodes collapsed)
function_declaration (+390 nodes collapsed)
type_declaration
type "type"
type_spec
type_identifier "MockStatusProvider"
struct_type
struct "struct"
field_declaration_list
{ "{"
field_declaration
qualified_type
package_identifier "mock"
. "."
type_identifier "Mock"
} "}"
method_declaration
func "func"
parameter_list
( "("
parameter_declaration
identifier "m"
pointer_type
* "*"
type_identifier "MockStatusProvider"
) ")"
field_identifier "GetPodStatus"
parameter_list
( "("
parameter_declaration
identifier "uid"
qualified_type
package_identifier "types"
. "."
type_identifier "UID"
) ")"
parameter_list
( "("
parameter_declaration
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
, ","
parameter_declaration
type_identifier "bool"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "args"
:= ":="
expression_list
call_expression
selector_expression
identifier "m"
. "."
field_identifier "Called"
argument_list
( "("
identifier "uid"
) ")"
return_statement
return "return"
expression_list
type_assertion_expression
call_expression
selector_expression
identifier "args"
. "."
field_identifier "Get"
argument_list
( "("
int_literal "0"
) ")"
. "."
( "("
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
) ")"
, ","
call_expression
selector_expression
identifier "args"
. "."
field_identifier "Bool"
argument_list
( "("
int_literal "1"
) ")"
} "}"
function_declaration
func "func"
identifier "TestOnPodUpdatedUsesStatusProvider"
parameter_list
( "("
parameter_declaration
identifier "t"
pointer_type
* "*"
qualified_type
package_identifier "testing"
. "."
type_identifier "T"
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "broadcaster"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewBroadcaster"
argument_list
( "("
) ")"
short_var_declaration
expression_list
identifier "mockManager"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
qualified_type
package_identifier "kubepodtest"
. "."
type_identifier "MockManager"
) ")"
short_var_declaration
expression_list
identifier "server"
:= ":="
expression_list
call_expression
selector_expression
identifier "podsapi"
. "."
field_identifier "NewPodsServerForTest"
argument_list
( "("
identifier "broadcaster"
, ","
identifier "mockManager"
) ")"
short_var_declaration
expression_list
identifier "mockStatusProvider"
:= ":="
expression_list
call_expression
identifier "new"
argument_list
( "("
type_identifier "MockStatusProvider"
) ")"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "SetStatusProvider"
argument_list
( "("
identifier "mockStatusProvider"
) ")"
comment "// Pod with \"Stale\" status"
short_var_declaration
expression_list
identifier "pod"
:= ":="
expression_list
unary_expression
& "&"
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "Pod"
literal_value
{ "{"
keyed_element
literal_element
identifier "ObjectMeta"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "metav1"
. "."
type_identifier "ObjectMeta"
literal_value
{ "{"
keyed_element
literal_element
identifier "UID"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod-1"
" "\""
, ","
keyed_element
literal_element
identifier "Name"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "pod-1"
" "\""
, ","
keyed_element
literal_element
identifier "Namespace"
: ":"
literal_element
interpreted_string_literal
" "\""
interpreted_string_literal_content "ns"
" "\""
} "}"
, ","
keyed_element
literal_element
identifier "Status"
: ":"
literal_element
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
literal_value
{ "{"
keyed_element
literal_element
identifier "Phase"
: ":"
literal_element
selector_expression
identifier "v1"
. "."
field_identifier "PodPending"
} "}"
, ","
} "}"
comment "// Status provider has \"Fresh\" status"
short_var_declaration
expression_list
identifier "freshStatus"
:= ":="
expression_list
composite_literal
qualified_type
package_identifier "v1"
. "."
type_identifier "PodStatus"
literal_value
{ "{"
keyed_element
literal_element
identifier "Phase"
: ":"
literal_element
selector_expression
identifier "v1"
. "."
field_identifier "PodRunning"
} "}"
expression_statement
call_expression
selector_expression
call_expression
selector_expression
identifier "mockStatusProvider"
. "."
field_identifier "On"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "GetPodStatus"
" "\""
, ","
selector_expression
identifier "pod"
. "."
field_identifier "UID"
) ")"
. "."
field_identifier "Return"
argument_list
( "("
identifier "freshStatus"
, ","
true "true"
) ")"
short_var_declaration
expression_list
identifier "clientChannel"
:= ":="
expression_list
call_expression
identifier "make"
argument_list
( "("
channel_type
chan "chan"
qualified_type
package_identifier "podsapi"
. "."
type_identifier "PodWatchEvent"
, ","
int_literal "1"
) ")"
expression_statement
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Register"
argument_list
( "("
identifier "clientChannel"
) ")"
defer_statement
defer "defer"
call_expression
selector_expression
identifier "broadcaster"
. "."
field_identifier "Unregister"
argument_list
( "("
identifier "clientChannel"
) ")"
expression_statement
call_expression
selector_expression
identifier "server"
. "."
field_identifier "OnPodUpdated"
argument_list
( "("
identifier "pod"
) ")"
select_statement
select "select"
{ "{"
communication_case
case "case"
receive_statement
expression_list
identifier "event"
:= ":="
unary_expression
<- "<-"
identifier "clientChannel"
: ":"
statement_list
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "MODIFIED"
" "\""
, ","
call_expression
identifier "string"
argument_list
( "("
selector_expression
identifier "event"
. "."
field_identifier "Type"
) ")"
) ")"
expression_statement
call_expression
selector_expression
identifier "assert"
. "."
field_identifier "Equal"
argument_list
( "("
identifier "t"
, ","
selector_expression
identifier "v1"
. "."
field_identifier "PodRunning"
, ","
selector_expression
selector_expression
selector_expression
identifier "event"
. "."
field_identifier "Pod"
. "."
field_identifier "Status"
. "."
field_identifier "Phase"
) ")"
communication_case
case "case"
receive_statement
unary_expression
<- "<-"
call_expression
selector_expression
identifier "time"
. "."
field_identifier "After"
argument_list
( "("
binary_expression
int_literal "1"
* "*"
selector_expression
identifier "time"
. "."
field_identifier "Second"
) ")"
: ":"
statement_list
expression_statement
call_expression
selector_expression
identifier "t"
. "."
field_identifier "Fatal"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "Timeout waiting for event"
" "\""
) ")"
} "}"
expression_statement
call_expression
selector_expression
identifier "mockStatusProvider"
. "."
field_identifier "AssertExpectations"
argument_list
( "("
identifier "t"
) ")"
} "}"