more fixes!

This commit is contained in:
JackDoan
2026-07-13 18:55:44 -05:00
parent 1aca2f75ae
commit ae17513bbf
5 changed files with 34 additions and 21 deletions
+17 -8
View File
@@ -114,7 +114,8 @@ func TestControl_StopBeforeStart(t *testing.T) {
require.NoError(t, c.Wait())
// A stopped control can never be started
require.ErrorIs(t, c.Start(), ErrAlreadyStopped)
_, err := c.Start()
require.ErrorIs(t, err, ErrAlreadyStopped)
// A second Stop is a harmless no-op
c.Stop()
@@ -190,7 +191,8 @@ func TestControl_StartMultiqueueFailureReleases(t *testing.T) {
}
// The second reader fails to open, everything must be released
require.Error(t, c.Start())
_, err := c.Start()
require.Error(t, err)
assert.Equal(t, StateStopped, c.State())
assert.True(t, dev.closed, "the tun device should have been closed")
assert.True(t, conn.closed, "the udp socket should have been closed")
@@ -247,7 +249,7 @@ func TestControl_ConcurrentStopAndStart(t *testing.T) {
for i := 0; i < 2; i++ {
wg.Go(func() { c.Stop() })
}
wg.Go(func() { _ = c.Start() })
wg.Go(func() { _, _ = c.Start() })
wg.Go(func() {
_ = c.Wait()
// A returned Wait must always observe the final state, no matter how
@@ -260,15 +262,19 @@ func TestControl_ConcurrentStopAndStart(t *testing.T) {
// panic and Wait must observe the final state
require.NoError(t, c.Wait())
assert.Equal(t, StateStopped, c.State())
require.ErrorIs(t, c.Start(), ErrAlreadyStopped)
_, err := c.Start()
require.ErrorIs(t, err, ErrAlreadyStopped)
}
func TestControl_StartStopLifecycle(t *testing.T) {
c, dev, conn := newReadyControl(t)
require.NoError(t, c.Start())
wait, err := c.Start()
require.NoError(t, err)
require.NotNil(t, wait, "a successful Start must return a block function")
assert.Equal(t, StateStarted, c.State())
require.ErrorIs(t, c.Start(), ErrAlreadyStarted)
_, err = c.Start()
require.ErrorIs(t, err, ErrAlreadyStarted)
// Stop must unpark the reader blocked in the device and release everything
c.Stop()
@@ -279,7 +285,8 @@ func TestControl_StartStopLifecycle(t *testing.T) {
// The reader drained off a closed device, that is not a fatal error
require.NoError(t, c.Wait())
require.ErrorIs(t, c.Start(), ErrAlreadyStopped)
_, err = c.Start()
require.ErrorIs(t, err, ErrAlreadyStopped)
}
func TestControl_RebindIsGatedByState(t *testing.T) {
@@ -289,7 +296,9 @@ func TestControl_RebindIsGatedByState(t *testing.T) {
c.RebindUDPServer()
assert.Equal(t, 0, conn.rebinds, "rebind before start must be a no-op")
require.NoError(t, c.Start())
wait, err := c.Start()
require.NoError(t, err)
require.NotNil(t, wait, "a successful Start must return a block function")
c.RebindUDPServer()
assert.Equal(t, 1, conn.rebinds, "rebind while started must reach the conn")