diff --git a/internal/mocks/gen.go b/internal/mocks/gen.go index 79d3e2fe5..33df5c995 100644 --- a/internal/mocks/gen.go +++ b/internal/mocks/gen.go @@ -4,6 +4,7 @@ package mocks //go:generate sh -c "./mockgen_internal.sh mocks tls_extension_handler.go github.com/lucas-clemente/quic-go/internal/handshake TLSExtensionHandler" //go:generate sh -c "./mockgen_internal.sh mocks stream_flow_controller.go github.com/lucas-clemente/quic-go/internal/flowcontrol StreamFlowController" //go:generate sh -c "./mockgen_internal.sh mocks sent_packet_handler.go github.com/lucas-clemente/quic-go/ackhandler SentPacketHandler" +//go:generate sh -c "./mockgen_internal.sh mocks received_packet_handler.go github.com/lucas-clemente/quic-go/ackhandler ReceivedPacketHandler" //go:generate sh -c "./mockgen_internal.sh mocks connection_flow_controller.go github.com/lucas-clemente/quic-go/internal/flowcontrol ConnectionFlowController" //go:generate sh -c "./mockgen_internal.sh mockcrypto crypto/aead.go github.com/lucas-clemente/quic-go/internal/crypto AEAD" //go:generate sh -c "./mockgen_stream.sh mocks stream.go github.com/lucas-clemente/quic-go StreamI" diff --git a/internal/mocks/received_packet_handler.go b/internal/mocks/received_packet_handler.go new file mode 100644 index 000000000..a47424c79 --- /dev/null +++ b/internal/mocks/received_packet_handler.go @@ -0,0 +1,82 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/lucas-clemente/quic-go/ackhandler (interfaces: ReceivedPacketHandler) + +package mocks + +import ( + reflect "reflect" + time "time" + + gomock "github.com/golang/mock/gomock" + protocol "github.com/lucas-clemente/quic-go/internal/protocol" + wire "github.com/lucas-clemente/quic-go/internal/wire" +) + +// MockReceivedPacketHandler is a mock of ReceivedPacketHandler interface +type MockReceivedPacketHandler struct { + ctrl *gomock.Controller + recorder *MockReceivedPacketHandlerMockRecorder +} + +// MockReceivedPacketHandlerMockRecorder is the mock recorder for MockReceivedPacketHandler +type MockReceivedPacketHandlerMockRecorder struct { + mock *MockReceivedPacketHandler +} + +// NewMockReceivedPacketHandler creates a new mock instance +func NewMockReceivedPacketHandler(ctrl *gomock.Controller) *MockReceivedPacketHandler { + mock := &MockReceivedPacketHandler{ctrl: ctrl} + mock.recorder = &MockReceivedPacketHandlerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use +func (_m *MockReceivedPacketHandler) EXPECT() *MockReceivedPacketHandlerMockRecorder { + return _m.recorder +} + +// GetAckFrame mocks base method +func (_m *MockReceivedPacketHandler) GetAckFrame() *wire.AckFrame { + ret := _m.ctrl.Call(_m, "GetAckFrame") + ret0, _ := ret[0].(*wire.AckFrame) + return ret0 +} + +// GetAckFrame indicates an expected call of GetAckFrame +func (_mr *MockReceivedPacketHandlerMockRecorder) GetAckFrame() *gomock.Call { + return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetAckFrame", reflect.TypeOf((*MockReceivedPacketHandler)(nil).GetAckFrame)) +} + +// GetAlarmTimeout mocks base method +func (_m *MockReceivedPacketHandler) GetAlarmTimeout() time.Time { + ret := _m.ctrl.Call(_m, "GetAlarmTimeout") + ret0, _ := ret[0].(time.Time) + return ret0 +} + +// GetAlarmTimeout indicates an expected call of GetAlarmTimeout +func (_mr *MockReceivedPacketHandlerMockRecorder) GetAlarmTimeout() *gomock.Call { + return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetAlarmTimeout", reflect.TypeOf((*MockReceivedPacketHandler)(nil).GetAlarmTimeout)) +} + +// IgnoreBelow mocks base method +func (_m *MockReceivedPacketHandler) IgnoreBelow(_param0 protocol.PacketNumber) { + _m.ctrl.Call(_m, "IgnoreBelow", _param0) +} + +// IgnoreBelow indicates an expected call of IgnoreBelow +func (_mr *MockReceivedPacketHandlerMockRecorder) IgnoreBelow(arg0 interface{}) *gomock.Call { + return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "IgnoreBelow", reflect.TypeOf((*MockReceivedPacketHandler)(nil).IgnoreBelow), arg0) +} + +// ReceivedPacket mocks base method +func (_m *MockReceivedPacketHandler) ReceivedPacket(_param0 protocol.PacketNumber, _param1 bool) error { + ret := _m.ctrl.Call(_m, "ReceivedPacket", _param0, _param1) + ret0, _ := ret[0].(error) + return ret0 +} + +// ReceivedPacket indicates an expected call of ReceivedPacket +func (_mr *MockReceivedPacketHandlerMockRecorder) ReceivedPacket(arg0, arg1 interface{}) *gomock.Call { + return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ReceivedPacket", reflect.TypeOf((*MockReceivedPacketHandler)(nil).ReceivedPacket), arg0, arg1) +} diff --git a/session_test.go b/session_test.go index 80462e090..ba69137e2 100644 --- a/session_test.go +++ b/session_test.go @@ -70,26 +70,6 @@ func (m *mockUnpacker) Unpack(headerBinary []byte, hdr *wire.Header, data []byte }, nil } -type mockReceivedPacketHandler struct { - nextAckFrame *wire.AckFrame - ackAlarm time.Time -} - -func (m *mockReceivedPacketHandler) GetAckFrame() *wire.AckFrame { - f := m.nextAckFrame - m.nextAckFrame = nil - return f -} -func (m *mockReceivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumber, shouldInstigateAck bool) error { - panic("not implemented") -} -func (m *mockReceivedPacketHandler) IgnoreBelow(protocol.PacketNumber) { - panic("not implemented") -} -func (m *mockReceivedPacketHandler) GetAlarmTimeout() time.Time { return m.ackAlarm } - -var _ ackhandler.ReceivedPacketHandler = &mockReceivedPacketHandler{} - func areSessionsRunning() bool { var b bytes.Buffer pprof.Lookup("goroutine").WriteTo(&b, 1) @@ -1000,10 +980,14 @@ var _ = Describe("Session", func() { }) It("sets the timer to the ack timer", func() { - rph := &mockReceivedPacketHandler{ackAlarm: time.Now().Add(10 * time.Millisecond)} - rph.nextAckFrame = &wire.AckFrame{LargestAcked: 0x1337} + rph := mocks.NewMockReceivedPacketHandler(mockCtrl) + rph.EXPECT().GetAckFrame().Return(&wire.AckFrame{LargestAcked: 0x1337}) + rph.EXPECT().GetAlarmTimeout().Return(time.Now().Add(10 * time.Millisecond)).MinTimes(1) sess.receivedPacketHandler = rph - go sess.run() + go func() { + defer GinkgoRecover() + sess.run() + }() defer sess.Close(nil) time.Sleep(10 * time.Millisecond) Eventually(func() int { return len(mconn.written) }).ShouldNot(BeZero())