From ae08e371069be7e4bc9c69ad289b2a9710493108 Mon Sep 17 00:00:00 2001 From: Konrad Hanff Date: Mon, 21 Jun 2021 11:51:33 +0200 Subject: [PATCH] Add end to end test for inactivity timeout --- tests/e2e/runners_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/e2e/runners_test.go b/tests/e2e/runners_test.go index 28cd99c..d606f13 100644 --- a/tests/e2e/runners_test.go +++ b/tests/e2e/runners_test.go @@ -12,6 +12,7 @@ import ( "io" "net/http" "strings" + "time" ) 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) { stdout, stderr := s.PrintContentOfFileOnRunner(runnerID, fileName) s.Equal(expectedContent, stdout)