コード例 #1
0
        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"]);
            });
        }
コード例 #2
0
        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"]);
            });
        }
コード例 #3
0
        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();
                }
            });
        }