(t *testing.T)
| 677 | } |
| 678 | |
| 679 | func TestBasicTelemetryController_Unimplemented(t *testing.T) { |
| 680 | t.Parallel() |
| 681 | ctx := testutil.Context(t, testutil.WaitShort) |
| 682 | logger := testutil.Logger(t) |
| 683 | |
| 684 | ft := newFakeTelemetryClient() |
| 685 | |
| 686 | uut := tailnet.NewBasicTelemetryController(logger) |
| 687 | uut.New(ft) |
| 688 | |
| 689 | // bad code, doesn't count |
| 690 | telemetryError := drpcerr.WithCode(xerrors.New("Unimplemented"), 0) |
| 691 | |
| 692 | sendDone := make(chan struct{}) |
| 693 | go func() { |
| 694 | defer close(sendDone) |
| 695 | uut.SendTelemetryEvent(&proto.TelemetryEvent{}) |
| 696 | }() |
| 697 | |
| 698 | call := testutil.TryReceive(ctx, t, ft.calls) |
| 699 | testutil.RequireSend(ctx, t, call.errCh, telemetryError) |
| 700 | testutil.TryReceive(ctx, t, sendDone) |
| 701 | |
| 702 | sendDone = make(chan struct{}) |
| 703 | go func() { |
| 704 | defer close(sendDone) |
| 705 | uut.SendTelemetryEvent(&proto.TelemetryEvent{}) |
| 706 | }() |
| 707 | |
| 708 | // we get another call since it wasn't really the Unimplemented error |
| 709 | call = testutil.TryReceive(ctx, t, ft.calls) |
| 710 | |
| 711 | // for real this time |
| 712 | telemetryError = errUnimplemented |
| 713 | testutil.RequireSend(ctx, t, call.errCh, telemetryError) |
| 714 | testutil.TryReceive(ctx, t, sendDone) |
| 715 | |
| 716 | // now this returns immediately without a call, because unimplemented error disables calling |
| 717 | sendDone = make(chan struct{}) |
| 718 | go func() { |
| 719 | defer close(sendDone) |
| 720 | uut.SendTelemetryEvent(&proto.TelemetryEvent{}) |
| 721 | }() |
| 722 | testutil.TryReceive(ctx, t, sendDone) |
| 723 | |
| 724 | // getting a "new" client resets |
| 725 | uut.New(ft) |
| 726 | sendDone = make(chan struct{}) |
| 727 | go func() { |
| 728 | defer close(sendDone) |
| 729 | uut.SendTelemetryEvent(&proto.TelemetryEvent{}) |
| 730 | }() |
| 731 | call = testutil.TryReceive(ctx, t, ft.calls) |
| 732 | testutil.RequireSend(ctx, t, call.errCh, nil) |
| 733 | testutil.TryReceive(ctx, t, sendDone) |
| 734 | } |
| 735 | |
| 736 | func TestBasicTelemetryController_NotRecognised(t *testing.T) { |
nothing calls this directly
no test coverage detected