import (
"sync"
+ "time"
+
+ "git.tizen.org/tools/boruta"
"git.tizen.org/tools/weles"
)
looper sync.WaitGroup
}
+// NewJobManager creates and initializes a new instance of Controller with
+// internal submodules and returns JobManager interface.
+// It is the only valid way to get JobManager interface.
+func NewJobManager(arm weles.ArtifactManager, yap weles.Parser, bor boruta.Requests,
+ borutaRefreshPeriod time.Duration, djm weles.DryadJobManager) weles.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,
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/ginkgo/extensions/table"
. "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.NewMockParser(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