From 7aa29068ff0762095419762bdc115bb68d42d475 Mon Sep 17 00:00:00 2001 From: Roberto D'Auria Date: Tue, 17 May 2022 04:04:50 +0200 Subject: [PATCH] Simplify error handling in goroutines. Just use t.Error() --- internal/download/download_test.go | 71 +++++++++--------------------- internal/upload/upload_test.go | 49 +++++++-------------- 2 files changed, 36 insertions(+), 84 deletions(-) diff --git a/internal/download/download_test.go b/internal/download/download_test.go index ccb5f10..ad006d0 100644 --- a/internal/download/download_test.go +++ b/internal/download/download_test.go @@ -92,10 +92,12 @@ func TestReadBinary(t *testing.T) { NextReaderMessageType: websocket.BinaryMessage, MessageByteArray: []byte("12345678"), } - errch := make(chan error, 1) - go func(errch chan<- error) { - errch <- Run(ctx, &conn, outch) - }(errch) + go func() { + err := Run(ctx, &conn, outch) + if err != nil { + t.Errorf("error: %v", err) + } + }() prev := spec.Measurement{ AppInfo: &spec.AppInfo{}, } @@ -117,9 +119,6 @@ func TestReadBinary(t *testing.T) { } prev = m } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestSetReadDeadlineError(t *testing.T) { @@ -134,21 +133,15 @@ func TestSetReadDeadlineError(t *testing.T) { MessageByteArray: []byte("{}"), SetReadDeadlineResult: mockedErr, } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("We didn't expect measurements here") - return + t.Error("We didn't expect measurements here") } - errch <- nil - }(errch) + }() err := Run(ctx, &conn, outch) if err != mockedErr { t.Fatal("Not the error that we were expecting") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestReadMessageError(t *testing.T) { @@ -163,21 +156,15 @@ func TestReadMessageError(t *testing.T) { MessageByteArray: []byte("{}"), NextReaderResult: mockedErr, } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("We didn't expect measurements here") - return + t.Error("We didn't expect measurements here") } - errch <- nil - }(errch) + }() err := Run(ctx, &conn, outch) if err != mockedErr { t.Fatal("Not the error that we were expecting") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestReaderError(t *testing.T) { @@ -191,21 +178,16 @@ func TestReaderError(t *testing.T) { NextReaderMessageType: websocket.TextMessage, NextReaderMustFail: true, } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("We didn't expect measurements here") + t.Error("We didn't expect measurements here") return } - errch <- nil - }(errch) + }() err := Run(ctx, &conn, outch) if err != mocks.ErrReadFailed { t.Fatal("Not the error that we were expecting") } - if err := <-errch; err != nil { - t.Fatal(err) - } // Test when type is websocket.BinaryMessage outch = make(chan spec.Measurement) ctx, cancel = context.WithTimeout( @@ -216,21 +198,15 @@ func TestReaderError(t *testing.T) { NextReaderMessageType: websocket.BinaryMessage, NextReaderMustFail: true, } - errch = make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("We didn't expect measurements here") - return + t.Error("We didn't expect measurements here") } - errch <- nil - }(errch) + }() err = Run(ctx, &conn, outch) if err != mocks.ErrReadFailed { t.Fatal("Not the error that we were expecting") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestReadInvalidJSON(t *testing.T) { @@ -243,19 +219,14 @@ func TestReadInvalidJSON(t *testing.T) { NextReaderMessageType: websocket.TextMessage, MessageByteArray: []byte("{"), } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("We didn't expect measurements here") + t.Error("We didn't expect measurements here") return } - errch <- nil - }(errch) + }() err := Run(ctx, &conn, outch) if err == nil { t.Fatal("We expected to have an error here") } - if err := <-errch; err != nil { - t.Fatal(err) - } } diff --git a/internal/upload/upload_test.go b/internal/upload/upload_test.go index 46319de..d07e14e 100644 --- a/internal/upload/upload_test.go +++ b/internal/upload/upload_test.go @@ -22,10 +22,12 @@ func TestNormal(t *testing.T) { MessageByteArray: []byte("{}"), ReadMessageType: websocket.TextMessage, } - errch := make(chan error) - go func(errch chan<- error) { - errch <- Run(ctx, &conn, outch) - }(errch) + go func() { + err := Run(ctx, &conn, outch) + if err != nil { + t.Errorf("error: %v", err) + } + }() tot := 0 // Drain the channel and count the number of Measurements read. for range outch { @@ -34,9 +36,6 @@ func TestNormal(t *testing.T) { if tot <= 0 { t.Fatal("Expected at least one message") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestSetReadDeadlineError(t *testing.T) { @@ -130,22 +129,16 @@ func TestMakePreparedMessageError(t *testing.T) { return nil, mockedErr } conn := mocks.Conn{} - errch := make(chan error) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("Did not expect messages here") - return + t.Error("Did not expect messages here") } - errch <- nil - }(errch) + }() err := upload(ctx, &conn, outch) makePreparedMessage = savedFunc if err != mockedErr { t.Fatal("Not the error we expected") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestSetWriteDeadlineError(t *testing.T) { @@ -158,21 +151,15 @@ func TestSetWriteDeadlineError(t *testing.T) { conn := mocks.Conn{ SetWriteDeadlineResult: mockedErr, } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("Did not expect messages here") - return + t.Error("Did not expect messages here") } - errch <- nil - }(errch) + }() err := upload(ctx, &conn, outch) if err != mockedErr { t.Fatal("Not the error we expected") } - if err := <-errch; err != nil { - t.Fatal(err) - } } func TestWritePreparedMessageError(t *testing.T) { @@ -185,19 +172,13 @@ func TestWritePreparedMessageError(t *testing.T) { conn := mocks.Conn{ WritePreparedMessageResult: mockedErr, } - errch := make(chan error, 1) - go func(errch chan<- error) { + go func() { for range outch { - errch <- errors.New("Did not expect messages here") - return + t.Error("Did not expect messages here") } - errch <- nil - }(errch) + }() err := upload(ctx, &conn, outch) if err != mockedErr { t.Fatal("Not the error we expected") } - if err := <-errch; err != nil { - t.Fatal(err) - } }