Skip to content

Commit

Permalink
pkg/signal: Replace gocheck with built-in go test
Browse files Browse the repository at this point in the history
Signed-off-by: Tam Mach <tam.mach@cilium.io>
  • Loading branch information
sayboras committed May 3, 2024
1 parent 5b1c7c6 commit 0344d7c
Showing 1 changed file with 66 additions and 75 deletions.
141 changes: 66 additions & 75 deletions pkg/signal/signal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,14 @@ import (
"testing"
"time"

. "github.com/cilium/checkmate"
"github.com/cilium/ebpf/perf"
"github.com/stretchr/testify/require"

"github.com/cilium/cilium/pkg/byteorder"
"github.com/cilium/cilium/pkg/logging"
fakesignalmap "github.com/cilium/cilium/pkg/maps/signalmap/fake"
)

// Hook up gocheck into the "go test" runner.
type signalSuite struct{}

var _ = Suite(&signalSuite{})

func Test(t *testing.T) {
TestingT(t)
}

type testReader struct {
paused bool
closed bool
Expand Down Expand Up @@ -60,91 +51,91 @@ func (r *testReader) Close() error {
return nil
}

func (t *signalSuite) TestSignalSet(c *C) {
func TestSignalSet(t *testing.T) {
buf := new(bytes.Buffer)
binary.Write(buf, byteorder.Native, SignalNatFillUp)

events := &testReader{cpu: 1, data: buf.Bytes()}
sm := &signalManager{events: events}
c.Assert(sm.isMuted(), Equals, true)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Equal(t, true, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

// invalid signal, nothing changes
err := sm.UnmuteSignals(SignalType(16))
c.Assert(err, NotNil)
c.Assert(err, ErrorMatches, "signal number not supported: 16")
c.Assert(sm.isMuted(), Equals, true)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Error(t, err)
require.ErrorContains(t, err, "signal number not supported: 16")
require.Equal(t, true, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

// 2 active signals
err = sm.UnmuteSignals(SignalNatFillUp, SignalCTFillUp)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())
require.Equal(t, false, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

c.Assert(events.paused, Equals, false)
c.Assert(events.closed, Equals, false)
require.Equal(t, false, events.paused)
require.Equal(t, false, events.closed)

// Mute one, one still active
err = sm.MuteSignals(SignalNatFillUp)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

c.Assert(events.paused, Equals, false)
c.Assert(events.closed, Equals, false)
require.Equal(t, false, events.paused)
require.Equal(t, false, events.closed)

// Nothing happens if the signal is already muted
err = sm.MuteSignals(SignalNatFillUp)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

c.Assert(events.paused, Equals, false)
c.Assert(events.closed, Equals, false)
require.Equal(t, false, events.paused)
require.Equal(t, false, events.closed)

// Unmute one more
err = sm.UnmuteSignals(SignalAuthRequired)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, false)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalAuthRequired))

c.Assert(events.paused, Equals, false)
c.Assert(events.closed, Equals, false)
require.Equal(t, false, events.paused)
require.Equal(t, false, events.closed)

// Last signala are muted
err = sm.MuteSignals(SignalCTFillUp, SignalAuthRequired)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, true)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)
require.Nil(t, err)
require.Equal(t, true, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

c.Assert(events.paused, Equals, true)
c.Assert(events.closed, Equals, false)
require.Equal(t, true, events.paused)
require.Equal(t, false, events.closed)

// A signal is unmuted again
err = sm.UnmuteSignals(SignalCTFillUp)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
c.Assert(sm.isSignalMuted(SignalNatFillUp), Equals, true)
c.Assert(sm.isSignalMuted(SignalCTFillUp), Equals, false)
c.Assert(sm.isSignalMuted(SignalAuthRequired), Equals, true)

c.Assert(events.paused, Equals, false)
c.Assert(events.closed, Equals, false)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())
require.Equal(t, true, sm.isSignalMuted(SignalNatFillUp))
require.Equal(t, false, sm.isSignalMuted(SignalCTFillUp))
require.Equal(t, true, sm.isSignalMuted(SignalAuthRequired))

require.Equal(t, false, events.paused)
require.Equal(t, false, events.closed)
}

type SignalData uint32
Expand All @@ -167,7 +158,7 @@ func (d SignalData) String() string {
return signalProto[d]
}

func (t *signalSuite) TestLifeCycle(c *C) {
func TestLifeCycle(t *testing.T) {
logging.SetLogLevelToDebug()

buf1 := new(bytes.Buffer)
Expand All @@ -181,20 +172,20 @@ func (t *signalSuite) TestLifeCycle(c *C) {
messages := [][]byte{buf1.Bytes(), buf2.Bytes()}

sm := newSignalManager(fakesignalmap.NewFakeSignalMap(messages, time.Second))
c.Assert(sm.isMuted(), Equals, true)
require.Equal(t, true, sm.isMuted())

wakeup := make(chan SignalData, 1024)
err := sm.RegisterHandler(ChannelHandler(wakeup), SignalNatFillUp, SignalCTFillUp)
c.Assert(err, IsNil)
c.Assert(sm.isMuted(), Equals, false)
require.Nil(t, err)
require.Equal(t, false, sm.isMuted())

err = sm.start()
c.Assert(err, IsNil)
require.Nil(t, err)

select {
case x := <-wakeup:
sm.MuteSignals(SignalNatFillUp, SignalCTFillUp)
c.Assert(sm.isMuted(), Equals, true)
require.Equal(t, true, sm.isMuted())

ipv4 := false
ipv6 := false
Expand All @@ -214,16 +205,16 @@ func (t *signalSuite) TestLifeCycle(c *C) {
}
}

c.Assert(ipv4, Equals, true)
c.Assert(ipv6, Equals, false)
require.Equal(t, true, ipv4)
require.Equal(t, false, ipv6)

case <-time.After(5 * time.Second):
sm.MuteSignals(SignalNatFillUp, SignalCTFillUp)
c.Assert(sm.isMuted(), Equals, true)
require.Equal(t, true, sm.isMuted())

c.Fatal("No signals received on time.")
t.Fatal("No signals received on time.")
}

err = sm.stop()
c.Assert(err, IsNil)
require.Nil(t, err)
}

0 comments on commit 0344d7c

Please sign in to comment.