示例#1
0
        /// <summary>
        /// Handle request to Run a Job
        /// </summary>
        internal async Task HandleJobActionRequest(AgentJobActionParams parameters, RequestContext <ResultStatus> requestContext)
        {
            await Task.Run(async() =>
            {
                var result = new ResultStatus();
                try
                {
                    ConnectionInfo connInfo;
                    ConnectionServiceInstance.TryFindConnection(
                        parameters.OwnerUri,
                        out connInfo);
                    if (connInfo != null)
                    {
                        var sqlConnection    = ConnectionService.OpenSqlConnection(connInfo);
                        var serverConnection = new ServerConnection(sqlConnection);
                        var jobHelper        = new JobHelper(serverConnection);
                        jobHelper.JobName    = parameters.JobName;
                        switch (parameters.Action)
                        {
                        case "run":
                            jobHelper.Start();
                            break;

                        case "stop":
                            jobHelper.Stop();
                            break;

                        case "delete":
                            jobHelper.Delete();
                            break;

                        case "enable":
                            jobHelper.Enable(true);
                            break;

                        case "disable":
                            jobHelper.Enable(false);
                            break;

                        default:
                            break;
                        }
                        result.Success = true;
                        await requestContext.SendResult(result);
                    }
                }
                catch (Exception e)
                {
                    result.Success      = false;
                    result.ErrorMessage = e.Message;
                    await requestContext.SendResult(result);
                }
            });
        }
示例#2
0
        public async Task TestHandleAgentJobActionRequest()
        {
            using (SelfCleaningTempFile queryTempFile = new SelfCleaningTempFile())
            {
                var connectionResult = await LiveConnectionHelper.InitLiveConnectionInfoAsync("master", queryTempFile.FilePath);

                var requestParams = new AgentJobActionParams()
                {
                    OwnerUri = connectionResult.ConnectionInfo.OwnerUri,
                    JobName  = "Agent history clean up: distribution"
                };

                var requestContext = new Mock <RequestContext <ResultStatus> >();

                AgentService service = new AgentService();
                await service.HandleJobActionRequest(requestParams, requestContext.Object);

                requestContext.VerifyAll();
            }
        }