Add end to end test for inactivity timeout
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *E2ETestSuite) TestProvideRunnerRoute() {
|
func (s *E2ETestSuite) TestProvideRunnerRoute() {
|
||||||
@@ -210,6 +211,35 @@ func (s *E2ETestSuite) TestCopyFilesRoute() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *E2ETestSuite) TestRunnerGetsDestroyedAfterInactivityTimeout() {
|
||||||
|
inactivityTimeout := 5 // seconds
|
||||||
|
runnerID, err := ProvideRunner(&dto.RunnerRequest{
|
||||||
|
ExecutionEnvironmentId: tests.DefaultEnvironmentIDAsInteger,
|
||||||
|
InactivityTimeout: inactivityTimeout,
|
||||||
|
})
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
executionTerminated := make(chan bool)
|
||||||
|
var lastMessage *dto.WebSocketMessage
|
||||||
|
go func() {
|
||||||
|
webSocketURL, err := ProvideWebSocketURL(&s.Suite, runnerID, &dto.ExecutionRequest{Command: "sleep infinity"})
|
||||||
|
s.Require().NoError(err)
|
||||||
|
connection, err := ConnectToWebSocket(webSocketURL)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
messages, err := helpers.ReceiveAllWebSocketMessages(connection)
|
||||||
|
if !s.Equal(&websocket.CloseError{Code: websocket.CloseNormalClosure}, err) {
|
||||||
|
s.Fail("websocket abnormal closure")
|
||||||
|
}
|
||||||
|
controlMessages := helpers.WebSocketControlMessages(messages)
|
||||||
|
s.Require().NotEmpty(controlMessages)
|
||||||
|
lastMessage = controlMessages[len(controlMessages)-1]
|
||||||
|
executionTerminated <- true
|
||||||
|
}()
|
||||||
|
s.Require().True(tests.ChannelReceivesSomething(executionTerminated, time.Duration(inactivityTimeout+5)*time.Second))
|
||||||
|
s.Equal(dto.WebSocketMetaTimeout, lastMessage.Type)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *E2ETestSuite) assertFileContent(runnerID, fileName string, expectedContent string) {
|
func (s *E2ETestSuite) assertFileContent(runnerID, fileName string, expectedContent string) {
|
||||||
stdout, stderr := s.PrintContentOfFileOnRunner(runnerID, fileName)
|
stdout, stderr := s.PrintContentOfFileOnRunner(runnerID, fileName)
|
||||||
s.Equal(expectedContent, stdout)
|
s.Equal(expectedContent, stdout)
|
||||||
|
Reference in New Issue
Block a user