Skip to content

Commit

Permalink
upstream: fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
EugeneOne1 committed Jan 29, 2024
1 parent 72a08d7 commit ae73171
Showing 1 changed file with 36 additions and 24 deletions.
60 changes: 36 additions & 24 deletions upstream/quicconnector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,49 +25,56 @@ func (tco *testConnOpener) openConnection(conf *quic.Config) (conn quic.Connecti
return tco.OnOpenConnection(conf)
}

// testQUICConn is used to mock QUIC connections.
type testQUICConn struct {
quic.Connection
}

// CloseWithError implements the [quic.Connection] interface for
// [*testQUICConn].
func (tqc *testQUICConn) CloseWithError(code quic.ApplicationErrorCode, msg string) (err error) {
return nil
}

func TestQUICConnector(t *testing.T) {
const (
routineNum = 100
triesNum = 10
)

type testConn struct {
quic.Connection
}

var connTriesNum atomic.Int32
var beforeGet, afterGet sync.WaitGroup

pt := testutil.PanicT{}

opener := &testConnOpener{}
sf := newQUICConnector(opener, &quic.Config{
KeepAlivePeriod: QUICKeepAlivePeriod,
TokenStore: newQUICTokenStore(),
})

t.Run("success", func(t *testing.T) {
t.Cleanup(func() { connTriesNum.Store(0) })

emptyConn := &testConn{}
emptyConn := &testQUICConn{}

opener.OnOpenConnection = func(_ *quic.Config) (conn quic.Connection, err error) {
beforeGet.Wait()
opener := &testConnOpener{
OnOpenConnection: func(_ *quic.Config) (conn quic.Connection, err error) {
beforeGet.Wait()
connTriesNum.Add(1)

connTriesNum.Add(1)

return emptyConn, nil
return emptyConn, nil
},
}
qc := newQUICConnector(opener, &quic.Config{
KeepAlivePeriod: QUICKeepAlivePeriod,
TokenStore: newQUICTokenStore(),
})

for i := 0; i < triesNum; i++ {
sf.reset()
t.Logf("try %d", i)
qc.reset()
beforeGet.Add(routineNum)
afterGet.Add(routineNum)

for j := 0; j < routineNum; j++ {
go func() {
beforeGet.Done()
conn, err := sf.get()
conn, err := qc.get()
afterGet.Done()

require.NoError(pt, err)
Expand All @@ -83,13 +90,18 @@ func TestQUICConnector(t *testing.T) {
t.Run("error", func(t *testing.T) {
t.Cleanup(func() { connTriesNum.Store(0) })

opener.OnOpenConnection = func(_ *quic.Config) (conn quic.Connection, err error) {
beforeGet.Wait()

connTriesNum.Add(1)
opener := &testConnOpener{
OnOpenConnection: func(_ *quic.Config) (conn quic.Connection, err error) {
beforeGet.Wait()
connTriesNum.Add(1)

return nil, assert.AnError
return nil, assert.AnError
},
}
qc := newQUICConnector(opener, &quic.Config{
KeepAlivePeriod: QUICKeepAlivePeriod,
TokenStore: newQUICTokenStore(),
})

for i := 0; i < triesNum; i++ {
beforeGet.Add(routineNum)
Expand All @@ -98,7 +110,7 @@ func TestQUICConnector(t *testing.T) {
for j := 0; j < routineNum; j++ {
go func() {
beforeGet.Done()
conn, err := sf.get()
conn, err := qc.get()
afterGet.Done()

require.Nil(pt, conn)
Expand Down

0 comments on commit ae73171

Please # to comment.