public CoreControllerTests() { m_coreLinkMock = new Mock <ICoreLink>(); ICoreLink coreLink = m_coreLinkMock.Object; m_controller = new CoreController(coreLink, TimeoutMs / 5); }
public async Task GetsAsyncConversationError() { const string errorMessage = "Foo bar"; var conv = new CommandConversation(CommandType.Run); var responseMessage = ErrorResponseBuilder.Build(errorMessage); ICoreLink coreLink = GenerateCoreLink(responseMessage); var ex = await Assert.ThrowsAsync <RemoteCoreException>(() => coreLink.Request(conv, WaitMs)); Assert.Equal(errorMessage, ex.Message); }
public void GetsAsyncConversationResult() { var conversation = new CommandConversation(CommandType.Run); ResponseMessage responseMessage = StateResponseBuilder.Build(StateType.Running); ICoreLink coreLink = GenerateCoreLink(responseMessage); Task <StateResponse> futureResponse = coreLink.Request(conversation, WaitMs); StateResponse receivedResponse = ReadResponse(futureResponse); Assert.Equal(StateType.Running, receivedResponse.State); }
public async Task ConnectToCoreAsync(ICoreConnectionParams connectionParams) { EndPoint endPoint = connectionParams.EndPoint; if (CoreProxy != null) { Log.Error("Cannot connect to core, there is still a core proxy present"); throw new InvalidOperationException( "There is still a core proxy present"); } if (connectionParams.IsCoreLocal) { if (m_process == null) { await m_charmdRunner.StartIfNotRunningAndWaitAsync( Path.Combine(connectionParams.CoreProcessParams.WorkingDirectory, CharmdRelativePath), CharmdStartWaitMs); // TODO(HonzaS): Move this elsewhere when we have finer local process control. Log.Info("Starting a local core process"); m_process = m_coreProcessFactory.Create(connectionParams.CoreProcessParams); } endPoint = m_process.EndPoint; } if (endPoint == null) { Log.Error("Endpoint not set up, cannot connect to core"); throw new InvalidOperationException("Endpoint not set"); } m_isCoreLocal = connectionParams.IsCoreLocal; Log.Info("Connecting to Core running at {hostname:l}:{port}", endPoint.Hostname, endPoint.Port); ICoreLink coreLink = m_coreLinkFactory.Create(endPoint); // TODO(HonzaS): Check if the endpoint exists (handshake), await the response. // TODO(HonzaS): Move these inside the factory method. ICoreController coreController = m_coreControllerFactory.Create(coreLink); IModelUpdater modelUpdater = m_modelUpdaterFactory.Create(coreLink, coreController); CoreProxy = m_coreProxyFactory.Create(coreController, modelUpdater); RegisterCoreEvents(); }
public ModelUpdater(ICoreLink coreLink, ICoreController coreController, IModelDiffApplier modelDiffApplier) { m_coreLink = coreLink; m_coreController = coreController; m_modelDiffApplier = modelDiffApplier; }
public CoreController(ICoreLink coreLink, int keepaliveIntervalMs = DefaultKeepaliveIntervalMs) { m_coreLink = coreLink; m_keepaliveIntervalMs = keepaliveIntervalMs; m_cancellationTokenSource = new CancellationTokenSource(); }
public ICoreController Create(ICoreLink coreLink) { return(InjectProperties(new CoreController(coreLink))); }
public IModelUpdater Create(ICoreLink coreLink, ICoreController coreController) { //return InjectProperties(new ModelUpdater(coreLink, coreController, m_modelDiffApplier)); return(InjectProperties(new LockingModelUpdater(coreLink, coreController, m_modelDiffApplier))); }