mirror of
https://github.com/qdm12/gluetun.git
synced 2025-12-14 20:58:39 -06:00
- `internal/wireguard` client package with unit tests - Implementation works with kernel space or user space if unavailable - `WIREGUARD_PRIVATE_KEY` - `WIREGUARD_ADDRESS` - `WIREGUARD_PRESHARED_KEY` - `WIREGUARD_PORT` - `internal/netlink` package used by `internal/wireguard`
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package wireguard
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_closers(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ctrl := gomock.NewController(t)
|
|
|
|
var ACloseCalled, BCloseCalled, CCloseCalled bool
|
|
var (
|
|
AErr error
|
|
BErr = errors.New("B failed")
|
|
CErr = errors.New("C failed")
|
|
)
|
|
|
|
var closers closers
|
|
closers.add("closing A", stepFive, func() error {
|
|
ACloseCalled = true
|
|
return AErr
|
|
})
|
|
|
|
closers.add("closing B", stepThree, func() error {
|
|
BCloseCalled = true
|
|
return BErr
|
|
})
|
|
|
|
closers.add("closing C", stepTwo, func() error {
|
|
CCloseCalled = true
|
|
return CErr
|
|
})
|
|
|
|
logger := NewMockLogger(ctrl)
|
|
prevCall := logger.EXPECT().Debug("closing C...")
|
|
prevCall = logger.EXPECT().Error("failed closing C: C failed").After(prevCall)
|
|
prevCall = logger.EXPECT().Debug("closing B...").After(prevCall)
|
|
prevCall = logger.EXPECT().Error("failed closing B: B failed").After(prevCall)
|
|
logger.EXPECT().Debug("closing A...").After(prevCall)
|
|
|
|
closers.cleanup(logger)
|
|
|
|
closers.cleanup(logger) // run twice should not close already closed
|
|
|
|
for _, closer := range closers {
|
|
assert.True(t, closer.closed)
|
|
}
|
|
|
|
assert.True(t, ACloseCalled)
|
|
assert.True(t, BCloseCalled)
|
|
assert.True(t, CCloseCalled)
|
|
}
|