public void KillWebConsole(string userId, string webConsoleId)
        {
            _logger.LogInformation($"Kill web console {webConsoleId}");
            try {
                Sessions.Instance.EnsureValidUser(userId);

                if (_userWebConsoles.Contains(userId, webConsoleId))
                {
                    _userWebConsoles.RemoveData(userId, webConsoleId);
                }

                _runspacesStatsMonitor.Unregister(webConsoleId);
                _runspaceProvider.KillWebConsole(webConsoleId);

                if (_userWebConsoles.List(userId) == null)
                {
                    _userWebConsoles.RemoveUser(userId);
                }
            } catch (Exception ex) {
                throw new RunspaceProviderException(
                          string.Format(
                              APIGatewayResources.MultiTenantRunspaceProvider_KillFailed,
                              userId,
                              ex.Message),
                          ex);
            }
        }
        public void RemoveRunspaceWhenNoUser()
        {
            // Arrange
            const string UserID1       = "user-id1";
            const string UserID2       = "user-id2";
            const string RunspaceID1   = "runspace-id1";
            const string RunspaceID2   = "runspace-id2";
            var          userRunspaces = new UserToIdentifiableData <string>();

            userRunspaces.Add(UserID1, RunspaceID1, RunspaceID1);
            userRunspaces.Add(UserID1, RunspaceID2, RunspaceID2);

            // Act && Assert
            Assert.DoesNotThrow(() => userRunspaces.RemoveData(UserID2, RunspaceID2));

            Assert.IsTrue(userRunspaces.Contains(UserID1));
            Assert.IsTrue(userRunspaces.Contains(UserID1, RunspaceID1));
            Assert.IsTrue(userRunspaces.Contains(UserID1, RunspaceID2));
        }
        public void AddContains()
        {
            // Arrange
            const string UserID1       = "user-id1";
            const string UserID2       = "user-id2";
            const string RunspaceID1   = "runspace-id1";
            const string RunspaceID2   = "runspace-id2";
            const string RunspaceID3   = "runspace-id3";
            var          userRunspaces = new UserToIdentifiableData <string>();

            // Act
            userRunspaces.Add(UserID1, RunspaceID1, RunspaceID1);
            userRunspaces.Add(UserID1, RunspaceID2, RunspaceID2);
            userRunspaces.Add(UserID2, RunspaceID3, RunspaceID3);

            // Assert
            Assert.IsTrue(userRunspaces.Contains(UserID1, RunspaceID1));
            Assert.IsTrue(userRunspaces.Contains(UserID1, RunspaceID2));
            Assert.IsTrue(userRunspaces.Contains(UserID2, RunspaceID3));
        }
Esempio n. 4
0
        public IRunspaceData Get(string userId, string runspaceId)
        {
            _logger.LogInformation($"Get runspace with id: {runspaceId}");
            IRunspaceData result = null;

            try {
                Sessions.Instance.EnsureValidUser(userId);

                if (!_userRunspaces.Contains(userId))
                {
                    throw new RunspaceProviderException(
                              string.Format(APIGatewayResources.MultiTenantRunspaceProvider_UserHasNoRunspaces, userId));
                }

                if (!_userRunspaces.Contains(userId, runspaceId))
                {
                    throw new RunspaceProviderException(
                              string.Format(APIGatewayResources.MultiTenantRunspaceProvider_UserHasNoRunspaceWithId, userId, runspaceId));
                }

                var runspaceInfo = _runspaceProvider.Get(runspaceId);
                var runspaceData = _userRunspaces.GetData(userId, runspaceId);
                if (runspaceInfo == null && runspaceData != null)
                {
                    _userRunspaces.RemoveData(userId, runspaceId);
                }
                else
                {
                    result = runspaceData;
                }
            } catch (Exception ex) {
                throw new RunspaceProviderException(
                          string.Format(
                              APIGatewayResources.MultiTenantRunspaceProvider_GetFailed,
                              userId,
                              ex.Message),
                          ex);
            }

            return(result);
        }
        public void RemoveRunspace()
        {
            // Arrange
            const string UserID        = "user-id";
            const string RunspaceID1   = "runspace-id1";
            const string RunspaceID2   = "runspace-id2";
            var          userRunspaces = new UserToIdentifiableData <string>();

            userRunspaces.Add(UserID, RunspaceID1, RunspaceID1);
            userRunspaces.Add(UserID, RunspaceID2, RunspaceID2);

            // Act
            userRunspaces.RemoveData(UserID, RunspaceID1);

            // Assert
            var listResult = userRunspaces.List(UserID);

            Assert.NotNull(listResult);
            Assert.AreEqual(1, listResult.Length);
            Assert.IsFalse(listResult.Contains(RunspaceID1));
            Assert.IsTrue(listResult.Contains(RunspaceID2));
            Assert.IsTrue(userRunspaces.Contains(UserID, RunspaceID2));
            Assert.IsFalse(userRunspaces.Contains(UserID, RunspaceID1));
        }
        public void RemoveUser()
        {
            // Arrange
            const string UserID1       = "user-id1";
            const string UserID2       = "user-id2";
            const string RunspaceID1   = "runspace-id1";
            const string RunspaceID2   = "runspace-id2";
            var          userRunspaces = new UserToIdentifiableData <string>();

            userRunspaces.Add(UserID1, RunspaceID1, RunspaceID1);
            userRunspaces.Add(UserID2, RunspaceID2, RunspaceID2);

            // Act
            userRunspaces.RemoveUser(UserID2);

            // Assert
            Assert.IsFalse(userRunspaces.Contains(UserID2));
        }
        public void ContainsWhenNoUser()
        {
            // Arrange
            const string UserID1       = "user-id1";
            const string UserID2       = "user-id2";
            const string RunspaceID1   = "runspace-id1";
            const string RunspaceID2   = "runspace-id2";
            var          userRunspaces = new UserToIdentifiableData <string>();

            userRunspaces.Add(UserID1, RunspaceID1, RunspaceID1);
            userRunspaces.Add(UserID1, RunspaceID2, RunspaceID2);

            // Act
            var containsResult = userRunspaces.Contains(UserID2);

            // Assert
            Assert.IsFalse(containsResult);
        }