Add NewJobManager function 68/162368/2
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Thu, 30 Nov 2017 12:29:14 +0000 (13:29 +0100)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Mon, 4 Dec 2017 10:01:24 +0000 (11:01 +0100)
NewJobManager function creates new instance of Controller
with all internal submodules. The created structure is returned
as JobManager interface.

This is the ponly valid method for creation whole Controller module
in Weles and should be used to create Weles service.

Change-Id: I8ff2051a23f714a99fc2642c94e34d247ec164d7
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
controller/controller.go
controller/controller_test.go

index 691c720..8bcdf46 100644 (file)
@@ -24,6 +24,9 @@ package controller
 
 import (
        "sync"
+       "time"
+
+       "git.tizen.org/tools/boruta"
 
        . "git.tizen.org/tools/weles"
 )
@@ -53,8 +56,23 @@ type Controller struct {
        looper sync.WaitGroup
 }
 
+// NewJobManager creates and initializes a new instance of Controller with
+// inetrnal submodules and return JobManager interface.
+// It is the only valid way of JobManager struct creation.
+func NewJobManager(arm ArtifactManager, yap YamlParser, bor boruta.Requests,
+       borutaRefreshPeriod time.Duration, djm DryadJobManager) JobManager {
+
+       js := NewJobsController()
+       pa := NewParser(js, arm, yap)
+       do := NewDownloader(js, arm)
+       bo := NewBoruter(js, bor, borutaRefreshPeriod)
+       dr := NewDryader(js, djm)
+
+       return NewController(js, pa, do, bo, dr)
+}
+
 // NewController creates and initializes a new instance of Controller.
-// It is the only valid way of Controller struct creation.
+// It requires internal Controller's submodules.
 func NewController(js JobsController, pa Parser, do Downloader, bo Boruter, dr Dryader) *Controller {
        c := &Controller{
                jobs:       js,
index 3867271..26255eb 100644 (file)
@@ -19,15 +19,35 @@ package controller
 import (
        "errors"
        "sync"
+       "time"
 
        . "git.tizen.org/tools/weles"
        cmock "git.tizen.org/tools/weles/controller/mock"
        "git.tizen.org/tools/weles/controller/notifier"
+       mock "git.tizen.org/tools/weles/mock"
        gomock "github.com/golang/mock/gomock"
        . "github.com/onsi/ginkgo"
        . "github.com/onsi/gomega"
 )
 
+var _ = Describe("JobManager", func() {
+       It("should create a new object", func() {
+               ctrl := gomock.NewController(GinkgoT())
+
+               arm := mock.NewMockArtifactManager(ctrl)
+               yap := mock.NewMockYamlParser(ctrl)
+               bor := cmock.NewMockRequests(ctrl)
+               djm := mock.NewMockDryadJobManager(ctrl)
+
+               bor.EXPECT().ListRequests(nil).AnyTimes()
+
+               jm := NewJobManager(arm, yap, bor, time.Second, djm)
+               Expect(jm).NotTo(BeNil())
+
+               ctrl.Finish()
+       })
+})
+
 var _ = Describe("Controller", func() {
        var jc *cmock.MockJobsController
        var par *cmock.MockParser