public void GetStateData_ReturnsCorrectData() { UseJobStorageConnectionWithSession((session, jobStorage) => { var data = new Dictionary <string, string> { { "Key", "Value" } }; var newJob = new _Job { InvocationData = string.Empty, Arguments = string.Empty, StateName = string.Empty, CreatedAt = session.Storage.UtcNow }; session.Insert(newJob); session.Insert(new _JobState { Job = newJob, Name = "old-state", CreatedAt = session.Storage.UtcNow }); var lastState = new _JobState { Job = newJob, Name = "Name", Reason = "Reason", CreatedAt = session.Storage.UtcNow, Data = JobHelper.ToJson(data) }; session.Insert(lastState); session.Flush(); newJob.StateName = lastState.Name; newJob.StateReason = lastState.Reason; newJob.StateData = lastState.Data; newJob.LastStateChangedAt = session.Storage.UtcNow; session.Update(newJob); session.Flush(); session.Clear(); var jobId = newJob.Id; var result = jobStorage.GetStateData(jobId.ToString()); Assert.NotNull(result); Assert.Equal("Name", result.Name); Assert.Equal("Reason", result.Reason); Assert.Equal("Value", result.Data["Key"]); }); }
public void GetStateData_ReturnsCorrectData_WhenPropertiesAreCamelcased() { UseJobStorageConnectionWithSession((session, jobStorage) => { var data = new Dictionary <string, string> { { "Key", "Value" } }; var newJob = FluentNHibernateWriteOnlyTransactionTests.InsertNewJob(session); session.Insert(new _JobState { Job = newJob, Name = "old-state", CreatedAt = session.Storage.UtcNow }); var jobState = new _JobState { Job = newJob, Name = "Name", Reason = "Reason", CreatedAt = session.Storage.UtcNow, Data = JobHelper.ToJson(data) }; session.Insert(jobState); session.Flush(); newJob.StateName = jobState.Name; newJob.StateReason = jobState.Reason; newJob.StateData = jobState.Data; session.Update(newJob); session.Flush(); session.Clear(); var jobId = newJob.Id; var result = jobStorage.GetStateData(jobId.ToString()); Assert.NotNull(result); Assert.Equal("Value", result.Data["Key"]); }); }
public override void SetJobState(string jobId, IState state) { Logger.TraceFormat("SetJobState jobId={0}", jobId); var converter = StringToInt32Converter.Convert(jobId); if (!converter.Valid) { return; } AcquireStateLock(); AcquireJobLock(); QueueCommand(session => { var job = session.Query <_Job>().SingleOrDefault(i => i.Id == converter.Value); if (job != null) { var jobState = new _JobState { Job = job, Reason = state.Reason, Name = state.Name, CreatedAt = session.Storage.UtcNow, Data = JobHelper.ToJson(state.SerializeData()) }; session.Insert(jobState); session.Flush(); job.StateData = jobState.Data; job.StateReason = jobState.Reason; job.StateName = jobState.Name; job.LastStateChangedAt = session.Storage.UtcNow; session.Update(job); session.Flush(); } }); }