private ExpandResponse CreateExpandResponse(ObjectExplorerSession session, ExpandParams expandParams) { return(new ExpandResponse() { SessionId = session.Uri, NodePath = expandParams.NodePath }); }
internal async Task HandleExpandRequest(ExpandParams expandParams, RequestContext <bool> context) { Logger.Write(LogLevel.Verbose, "HandleExpandRequest"); Func <Task <bool> > expandNode = async() => { Validate.IsNotNull(nameof(expandParams), expandParams); Validate.IsNotNull(nameof(context), context); string uri = expandParams.SessionId; ObjectExplorerSession session = null; if (!sessionMap.TryGetValue(uri, out session)) { Logger.Write(LogLevel.Verbose, $"Cannot expand object explorer node. Couldn't find session for uri. {uri} "); await serviceHost.SendEvent(ExpandCompleteNotification.Type, new ExpandResponse { SessionId = expandParams.SessionId, NodePath = expandParams.NodePath, ErrorMessage = $"Couldn't find session for session: {uri}" }); return(false); } else { RunExpandTask(session, expandParams); return(true); } }; await HandleRequestAsync(expandNode, context, "HandleExpandRequest"); }
private async Task ExpandNodeAsync(ObjectExplorerSession session, ExpandParams expandParams, CancellationToken cancellationToken, bool forceRefresh = false) { ExpandResponse response = null; response = await ExpandNode(session, expandParams.NodePath, forceRefresh); if (cancellationToken.IsCancellationRequested) { Logger.Write(LogLevel.Verbose, "OE expand canceled"); } else { await serviceHost.SendEvent(ExpandCompleteNotification.Type, response); } }
public async Task <ExpandResponse> RequestObjectExplorerExpand(ExpandParams expandParams, int timeoutMilliseconds = 5000) { var result = await Driver.SendRequest(ExpandRequest.Type, expandParams); if (result) { var eventResult = await Driver.WaitForEvent(ExpandCompleteNotification.Type, timeoutMilliseconds); return(eventResult); } else { return(null); } }
private async Task <ExpandResponse> CallServiceExpand(ExpandParams expandParams, RequestContext <bool> requestContext) { ExpandResponse result = null; serviceHostMock.AddEventHandling(ExpandCompleteNotification.Type, (et, p) => result = p); await service.HandleExpandRequest(expandParams, requestContext); Task task = service.ExpandTask; if (task != null) { await task; } return(result); }
public async Task ExpandNodeGivenInvalidSessionShouldReturnEmptyList() { ExpandParams expandParams = new ExpandParams() { SessionId = "invalid session is", NodePath = "Any path" }; // when expanding // then expect the nodes are server children await RunAndVerify <bool, ExpandResponse>( test : (requestContext) => CallServiceExpand(expandParams, requestContext), verify : (actual => { Assert.Equal(actual.SessionId, expandParams.SessionId); Assert.Null(actual.Nodes); })); }
private void RunExpandTask(ObjectExplorerSession session, ExpandParams expandParams, bool forceRefresh = false) { CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); Task task = ExpandNodeAsync(session, expandParams, cancellationTokenSource.Token, forceRefresh); ExpandTask = task; Task.Run(async() => { ObjectExplorerTaskResult result = await RunTaskWithTimeout(task, settings?.ExpandTimeout ?? ObjectExplorerSettings.DefaultExpandTimeout); if (result != null && !result.IsCompleted) { cancellationTokenSource.Cancel(); ExpandResponse response = CreateExpandResponse(session, expandParams); response.ErrorMessage = result.Exception != null ? result.Exception.Message: $"Failed to expand node: {expandParams.NodePath} in session {session.Uri}"; await serviceHost.SendEvent(ExpandCompleteNotification.Type, response); } return(result); }).ContinueWithOnFaulted(null); }
private async Task ExpandAndVerifyServerNodes() { var session = await CreateSession(); ExpandParams expandParams = new ExpandParams() { SessionId = session.SessionId, NodePath = session.RootNode.NodePath }; // when expanding // then expect the nodes are server children await RunAndVerify <bool, ExpandResponse>( test : (requestContext) => CallServiceExpand(expandParams, requestContext), verify : (actual => { Assert.Equal(actual.SessionId, session.SessionId); Assert.NotNull(actual.SessionId); VerifyServerNodeChildren(actual.Nodes); })); }