Setup job when request processing starts
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Wed, 18 Oct 2017 10:14:57 +0000 (12:14 +0200)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Fri, 27 Apr 2018 15:43:52 +0000 (17:43 +0200)
In this patch timeout for Job is set to one hour.
It should be changed when proper timeout can be read from configuration
of boruta or user capabilities.

Change-Id: Iefe93f436a481797958d6563b2708b8f29c9652e
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
requests/requests.go
requests/requests_requestsmanager_test.go

index 995e286..5592e31 100644 (file)
@@ -408,12 +408,19 @@ func (reqs *ReqsCollection) Run(rid ReqID, worker WorkerUUID) error {
        }
        req.State = INPROGRESS
 
+       req.Job = &JobInfo{WorkerUUID: worker}
+
        if reqs.iterating {
                reqs.queue.releaseIterator()
                reqs.iterating = false
        }
        reqs.queue.removeRequest(req)
 
-       // TODO(lwojciechow) assign req.Job.
+       // TODO(mwereski) Get timeout period from default config / user capabilities.
+       timeoutPeriod := time.Hour
+
+       req.Job.Timeout = time.Now().Add(timeoutPeriod)
+       reqs.timeoutTimes.insert(requestTime{time: req.Job.Timeout, req: rid})
+
        return nil
 }
index 1b338da..1a23ce7 100644 (file)
@@ -301,11 +301,13 @@ var _ = Describe("Requests as RequestsManager", func() {
                                })
                        })
                        Describe("Run", func() {
+                               testWorker := WorkerUUID("TestWorker")
+
                                It("should fail if reqID is unknown", func() {
                                        R.mutex.Lock()
                                        defer R.mutex.Unlock()
                                        Expect(R.queue.length).To(Equal(uint(1)))
-                                       err := R.Run(noreq, WorkerUUID("TestWorker"))
+                                       err := R.Run(noreq, testWorker)
                                        Expect(err).To(Equal(NotFoundError("Request")))
                                        Expect(R.queue.length).To(Equal(uint(1)))
                                })
@@ -314,7 +316,7 @@ var _ = Describe("Requests as RequestsManager", func() {
                                        defer R.TerminateIteration()
                                        Expect(R.iterating).To(BeTrue())
                                        Expect(R.queue.length).To(Equal(uint(1)))
-                                       err := R.Run(noreq, WorkerUUID("TestWorker"))
+                                       err := R.Run(noreq, testWorker)
                                        Expect(err).To(Equal(NotFoundError("Request")))
                                        Expect(R.iterating).To(BeTrue())
                                        Expect(R.queue.length).To(Equal(uint(1)))
@@ -335,9 +337,10 @@ var _ = Describe("Requests as RequestsManager", func() {
                                        R.InitIteration()
                                        defer R.TerminateIteration()
                                        Expect(R.queue.length).To(Equal(uint(1)))
-                                       err := R.Run(req, WorkerUUID("TestWorker"))
+                                       err := R.Run(req, testWorker)
                                        Expect(err).NotTo(HaveOccurred())
                                        Expect(rinfo.State).To(Equal(INPROGRESS))
+                                       Expect(rinfo.Job.Timeout).To(BeTemporally(">", time.Now()))
                                        Expect(R.queue.length).To(BeZero())
                                })
                                It("should start progress and break iterations when iterating", func() {
@@ -345,13 +348,13 @@ var _ = Describe("Requests as RequestsManager", func() {
                                        defer R.TerminateIteration()
                                        Expect(R.queue.length).To(Equal(uint(1)))
                                        Expect(R.iterating).To(BeTrue())
-                                       err := R.Run(req, WorkerUUID("TestWorker"))
+                                       err := R.Run(req, testWorker)
                                        Expect(err).NotTo(HaveOccurred())
                                        Expect(rinfo.State).To(Equal(INPROGRESS))
+                                       Expect(rinfo.Job.Timeout).To(BeTemporally(">", time.Now()))
                                        Expect(R.iterating).To(BeFalse())
                                        Expect(R.queue.length).To(BeZero())
                                })
-                               // TODO use and verify Job when Run's implementation is complete.
                        })
                })
        })