Exemplo n.º 1
0
        public CategoryResponse UpdateJob([FromBody] JobApiModel job)
        {
            Job dbJob = new Job();

            PropertyCopier <JobApiModel, Job> .Copy(job, dbJob);

            CategoryResponse apiResponse = new CategoryResponse();

            try
            {
                if (!_unityOfWork.Job.IsUpdatable(dbJob))
                {
                    _unityOfWork.Job.Update(dbJob);
                    _unityOfWork.Save();
                    apiResponse.Message     = "Successfully Updated ";
                    apiResponse.Code        = 200;
                    apiResponse.Description = $"{job.PostShortName} successfully Updated in database";
                    return(apiResponse);
                }
                apiResponse.Message     = "This is Already Available in Database";
                apiResponse.Code        = 409;
                apiResponse.Description = $"{job.PostShortName} Already Available in Database";
                return(apiResponse);
            }
            catch (Exception ex)
            {
                _logger.LogInformation(ex.StackTrace);
                return(apiResponse);
            }
        }
Exemplo n.º 2
0
        public async Task <JobApiModel> ScheduleAsync([FromBody] JobApiModel parameter)
        {
            if (parameter.UpdateTwin != null)
            {
                var result = await this.jobs.ScheduleTwinUpdateAsync(parameter.JobId, parameter.QueryCondition, parameter.UpdateTwin.ToServiceModel(), parameter.StartTimeUtc ?? DateTime.UtcNow, parameter.MaxExecutionTimeInSeconds ?? 0);

                return(new JobApiModel(result));
            }

            if (parameter.MethodParameter != null)
            {
                var result = await this.jobs.ScheduleDeviceMethodAsync(parameter.JobId, parameter.QueryCondition, parameter.MethodParameter.ToServiceModel(), parameter.StartTimeUtc ?? DateTime.UtcNow, parameter.MaxExecutionTimeInSeconds ?? 0);

                return(new JobApiModel(result));
            }

            throw new NotSupportedException();
        }
Exemplo n.º 3
0
        public CategoryResponse DeleteJob([FromBody] JobApiModel job)
        {
            CategoryResponse apiResponse = new CategoryResponse();

            try
            {
                var dbJob = _unityOfWork.Job.GetFirstOrDefault(el => el.Id == job.Id, "ImportantLinks,ImportantDates");
                _unityOfWork.Job.Remove(dbJob);
                _unityOfWork.Save();
                apiResponse.Message     = "Successfully delete Job ";
                apiResponse.Code        = 200;
                apiResponse.Description = $"{job.PostName} successfully delete";
                return(apiResponse);
            }
            catch (Exception ex)
            {
                _logger.LogInformation(ex.StackTrace);
                return(apiResponse);
            }
        }
        public async Task ScheduleJobIsHealthy()
        {
            Skip.IfNot(this.credentialsAvailable, "Skipping this test for Travis pull request as credentials are not available");

            var deviceId    = "scheduleJobTestDevice1";
            var oldTagValue = "oldTagValue";
            var newTagValue = "newTagValue";

            var tags = new Dictionary <string, string>();

            tags.Add("testTag", oldTagValue);
            var device = this.CreateDeviceIfNotExists(deviceId);

            try
            {
                var updateTwin = new JobUpdateTwinApiModel();
                updateTwin.Tags["testTag"] = newTagValue;

                var jobId  = "jobTest" + DateTime.Now.Ticks;
                var jobApi = new JobApiModel()
                {
                    JobId                     = jobId,
                    QueryCondition            = $"deviceId = '{deviceId}'",
                    UpdateTwin                = updateTwin,
                    MaxExecutionTimeInSeconds = 30
                };

                var request = new HttpRequest();
                request.SetUriFromString(AssemblyInitialize.Current.WsHostname + "/v1/jobs");
                request.SetContent(jobApi);
                var response = this.httpClient.PostAsync(request).Result;

                // Check
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                var job = JsonConvert.DeserializeObject <JobApiModel>(response.Content);
                Assert.Equal(jobId, job.JobId);
                Assert.Equal(JobStatus.Queued, job.Status);
                Assert.Equal(JobType.ScheduleUpdateTwin, job.Type);
                await this.WaitForJobAsync(job.JobId);

                // query job
                request = new HttpRequest();
                request.SetUriFromString(AssemblyInitialize.Current.WsHostname + $"/v1/jobs/{jobId}");
                response = this.httpClient.GetAsync(request).Result;

                // Assert
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                job = JsonConvert.DeserializeObject <JobApiModel>(response.Content);
                Assert.Equal(jobId, job.JobId);

                // query job with device details
                request = new HttpRequest();
                request.SetUriFromString(AssemblyInitialize.Current.WsHostname + $"/v1/jobs/{jobId}?includeDeviceDetails=true");
                response = this.httpClient.GetAsync(request).Result;

                // Assert
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                job = JsonConvert.DeserializeObject <JobApiModel>(response.Content);
                Assert.Equal(JobStatus.Completed, job.Status);
                Assert.Equal(job.Devices.Single().DeviceId, deviceId);
                Assert.True(job.Devices.All(j => j.Status == DeviceJobStatus.Completed));
            }
            finally
            {
                this.DeleteDeviceIfExists(deviceId);
            }
        }