MCPcopy Create free account
hub / github.com/cli/cli / TestServiceRecordingDoesNotWaitForDelivery

Function TestServiceRecordingDoesNotWaitForDelivery

internal/telemetry/service_test.go:92–126  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

90}
91
92func TestServiceRecordingDoesNotWaitForDelivery(t *testing.T) {
93 t.Cleanup(stubDeviceID("test-device"))
94
95 // Given an invocation whose delivery is blocked
96 sendStarted := make(chan struct{})
97 allowSend := make(chan struct{})
98 service := NewService(func(SendTelemetryPayload) {
99 close(sendStarted)
100 <-allowSend
101 })
102 service.Record(ghtelemetry.Event{Type: "test"})
103 deliveryDone := make(chan struct{})
104 go func() {
105 service.Finish()
106 close(deliveryDone)
107 }()
108 <-sendStarted
109
110 // When another recording is attempted
111 recordingDone := make(chan struct{})
112 go func() {
113 service.Record(ghtelemetry.Event{Type: "too_late"})
114 close(recordingDone)
115 }()
116
117 // Then recording returns without waiting for delivery
118 select {
119 case <-recordingDone:
120 case <-time.After(5 * time.Second):
121 t.Error("recording blocked while telemetry was being sent")
122 }
123 close(allowSend)
124 <-deliveryDone
125 <-recordingDone
126}
127
128func TestServiceCollectsConcurrentFacts(t *testing.T) {
129 t.Cleanup(stubDeviceID("test-device"))

Callers

nothing calls this directly

Calls 5

FinishMethod · 0.95
stubDeviceIDFunction · 0.85
NewServiceFunction · 0.85
RecordMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected