From eabff1d6b2f777f5fa2a2e0077b13aa0bdca6486 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Mon, 24 Feb 2020 12:30:24 +0000 Subject: [PATCH] [perf] test/acceptance: DrainManagerTests: cleanup previous clients ...before starting to drain. --- .../acceptance/coffee/DrainManagerTests.coffee | 14 ++++++++++++-- .../coffee/helpers/RealTimeClient.coffee | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/services/real-time/test/acceptance/coffee/DrainManagerTests.coffee b/services/real-time/test/acceptance/coffee/DrainManagerTests.coffee index cffae6fda6..b5b192cf88 100644 --- a/services/real-time/test/acceptance/coffee/DrainManagerTests.coffee +++ b/services/real-time/test/acceptance/coffee/DrainManagerTests.coffee @@ -29,6 +29,18 @@ describe "DrainManagerTests", -> }, (e, {@project_id, @user_id}) => done() return null + before (done) -> + # cleanup to speedup reconnecting + @timeout(10000) + RealTimeClient.disconnectAllClients done + + # trigger and check cleanup + it "should have disconnected all previous clients", (done) -> + RealTimeClient.getConnectedClients (error, data) -> + return done(error) if error + expect(data.length).to.equal(0) + done() + describe "with two clients in the project", -> beforeEach (done) -> async.series [ @@ -48,8 +60,6 @@ describe "DrainManagerTests", -> ], done describe "starting to drain", () -> - # there is an internal delay of 1000ms, shift accordingly - @timeout(5000) beforeEach (done) -> async.parallel [ (cb) => diff --git a/services/real-time/test/acceptance/coffee/helpers/RealTimeClient.coffee b/services/real-time/test/acceptance/coffee/helpers/RealTimeClient.coffee index e3254a79a5..7d54e23b3c 100644 --- a/services/real-time/test/acceptance/coffee/helpers/RealTimeClient.coffee +++ b/services/real-time/test/acceptance/coffee/helpers/RealTimeClient.coffee @@ -1,5 +1,6 @@ XMLHttpRequest = require("../../libs/XMLHttpRequest").XMLHttpRequest io = require("socket.io-client") +async = require("async") request = require "request" Settings = require "settings-sharelatex" @@ -55,3 +56,20 @@ module.exports = Client = }, (error, response, data) -> callback error, data + + disconnectClient: (client_id, callback) -> + request.post { + url: "http://localhost:3026/client/#{client_id}/disconnect" + auth: { + user: Settings.internal.realTime.user, + pass: Settings.internal.realTime.pass + } + }, (error, response, data) -> + callback error, data + return null + + disconnectAllClients: (callback) -> + Client.getConnectedClients (error, clients) -> + async.each clients, (clientView, cb) -> + Client.disconnectClient clientView.client_id, cb + , callback