Skip to content

Commit

Permalink
Merge pull request #35 from supplyon/add_mock_interface
Browse files Browse the repository at this point in the history
fix potential data race
  • Loading branch information
ThomasObenaus authored Jun 28, 2024
2 parents f7dc918 + 45eff01 commit 2884697
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 8 deletions.
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ gen-mocks: sep ## Generates test doubles (mocks).
@echo "--> generate mocks (github.com/golang/mock/gomock is required for this)"
@go install github.com/golang/mock/mockgen@latest
@mockgen -source=health/check.go -destination test/mocks/health/mock_check.go
@mockgen -source=shutdown/stopable.go -destination shutdown/mock_stopable_test.go -package shutdown
@mockgen -source=shutdown/stopable.go -destination test/mocks/shutdown/mock_stopable.go
@mockgen -source=shutdown/shutdownHandler.go -destination test/mocks/shutdown/mock_shutdownHandler.go

tools: sep ## Installs needed tools
@echo "--> Install needed tools"
Expand Down
4 changes: 3 additions & 1 deletion health/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ func (m *Monitor) Join() {
}

func (m *Monitor) String() string {
m.mux.Lock()
defer m.mux.Unlock()
return fmt.Sprintf("HealthMonitor (%d checks)", len(m.healthChecks))
}

Expand Down Expand Up @@ -132,7 +134,7 @@ func (m *Monitor) evaluateChecks(at time.Time) checkEvaluationResult {
}
logEvent.Err(err).
// don't propagate errors to alerting
Bool("no_alert",true).
Bool("no_alert", true).
Msgf("Check - '%s'", name)
}

Expand Down
62 changes: 62 additions & 0 deletions shutdown/mock_stopable_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions shutdown/shutdownHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ import (
"go.uber.org/atomic"
)

// ShutdownHandler is an helper interface to allow mocking and alternative
type ShutdownHandler interface {
Register(stoppable Stopable, front ...bool)
WaitUntilSignal()
}

// Handler represents a handler for shutdown events
type Handler struct {
logger zerolog.Logger
Expand Down
13 changes: 6 additions & 7 deletions shutdown/shutdownHandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"testing"
"time"

mock_shutdown "github.com/ThomasObenaus/go-base/test/mocks/shutdown"
"github.com/golang/mock/gomock"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
Expand All @@ -29,9 +28,9 @@ func Test_ShutdownHandler(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
var stopables []Stopable
stopable1 := mock_shutdown.NewMockStopable(mockCtrl)
stopable1 := NewMockStopable(mockCtrl)
stopables = append(stopables, stopable1)
stopable2 := mock_shutdown.NewMockStopable(mockCtrl)
stopable2 := NewMockStopable(mockCtrl)
stopables = append(stopables, stopable2)
var logger zerolog.Logger
h := Handler{
Expand Down Expand Up @@ -67,8 +66,8 @@ func Test_RegisterFront(t *testing.T) {
// GIVEN
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
stopable1 := mock_shutdown.NewMockStopable(mockCtrl)
stopable2 := mock_shutdown.NewMockStopable(mockCtrl)
stopable1 := NewMockStopable(mockCtrl)
stopable2 := NewMockStopable(mockCtrl)
var logger zerolog.Logger
h := Handler{
orderedStopables: make([]Stopable, 0),
Expand Down Expand Up @@ -108,8 +107,8 @@ func Test_RegisterBack(t *testing.T) {
// GIVEN
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
stopable1 := mock_shutdown.NewMockStopable(mockCtrl)
stopable2 := mock_shutdown.NewMockStopable(mockCtrl)
stopable1 := NewMockStopable(mockCtrl)
stopable2 := NewMockStopable(mockCtrl)
var logger zerolog.Logger
h := Handler{
orderedStopables: make([]Stopable, 0),
Expand Down
64 changes: 64 additions & 0 deletions test/mocks/shutdown/mock_shutdownHandler.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 2884697

Please sign in to comment.