Improve test coverage reporting / accuracy (#7819)
* improve test coverage reporting / accuracy * handle absolute coverpaths * move tests into multiple files * rename codecov.yml (https://github.com/codecov/support/issues/426)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
1329aa51b6
Коммит
865f9f83a7
@@ -48,6 +48,7 @@ func TestMain(m *testing.M) {
|
||||
func TestAppRace(t *testing.T) {
|
||||
for i := 0; i < 10; i++ {
|
||||
a := New()
|
||||
a.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = ":0" })
|
||||
a.StartServer()
|
||||
a.Shutdown()
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ func (a *App) NewWebHub() *Hub {
|
||||
connections: make([]*WebConn, 0, model.SESSION_CACHE_SIZE),
|
||||
broadcast: make(chan *model.WebSocketEvent, BROADCAST_QUEUE_SIZE),
|
||||
stop: make(chan struct{}),
|
||||
didStop: make(chan struct{}, 1),
|
||||
didStop: make(chan struct{}),
|
||||
invalidateUser: make(chan string),
|
||||
ExplicitStop: false,
|
||||
}
|
||||
@@ -446,7 +446,7 @@ func (h *Hub) Start() {
|
||||
|
||||
h.connections = make([]*WebConn, 0, model.SESSION_CACHE_SIZE)
|
||||
h.ExplicitStop = true
|
||||
h.didStop <- struct{}{}
|
||||
close(h.didStop)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
60
app/web_hub_test.go
Обычный файл
60
app/web_hub_test.go
Обычный файл
@@ -0,0 +1,60 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
goi18n "github.com/nicksnyder/go-i18n/i18n"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
)
|
||||
|
||||
func dummyWebsocketHandler(t *testing.T) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, req *http.Request) {
|
||||
upgrader := &websocket.Upgrader{
|
||||
ReadBufferSize: 1024,
|
||||
WriteBufferSize: 1024,
|
||||
}
|
||||
conn, err := upgrader.Upgrade(w, req, nil)
|
||||
for err == nil {
|
||||
_, _, err = conn.ReadMessage()
|
||||
}
|
||||
if _, ok := err.(*websocket.CloseError); !ok {
|
||||
require.NoError(t, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func registerDummyWebConn(t *testing.T, a *App, addr net.Addr, userId string) *WebConn {
|
||||
session, appErr := a.CreateSession(&model.Session{
|
||||
UserId: userId,
|
||||
})
|
||||
require.Nil(t, appErr)
|
||||
|
||||
d := websocket.Dialer{}
|
||||
c, _, err := d.Dial("ws://"+addr.String()+"/ws", nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
wc := a.NewWebConn(c, *session, goi18n.IdentityTfunc(), "en")
|
||||
a.HubRegister(wc)
|
||||
go wc.Pump()
|
||||
return wc
|
||||
}
|
||||
|
||||
func TestHubStopWithMultipleConnections(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
s := httptest.NewServer(http.HandlerFunc(dummyWebsocketHandler(t)))
|
||||
defer s.Close()
|
||||
|
||||
th.App.HubStart()
|
||||
registerDummyWebConn(t, th.App, s.Listener.Addr(), th.BasicUser.Id)
|
||||
registerDummyWebConn(t, th.App, s.Listener.Addr(), th.BasicUser.Id)
|
||||
registerDummyWebConn(t, th.App, s.Listener.Addr(), th.BasicUser.Id)
|
||||
th.App.HubStop()
|
||||
}
|
||||
Ссылка в новой задаче
Block a user