func (a *ApiTestSuite) TestHandleKalaStatsRequest() { cache, _ := generateJobAndCache() jobTwo := job.GetMockJobWithGenericSchedule() jobTwo.Init(cache) jobTwo.Run(cache) r := mux.NewRouter() r.HandleFunc(ApiUrlPrefix+"stats", HandleKalaStatsRequest(cache)).Methods("GET") ts := httptest.NewServer(r) _, req := setupTestReq(a.T(), "GET", ts.URL+ApiUrlPrefix+"stats", nil) client := &http.Client{} resp, err := client.Do(req) a.NoError(err) now := time.Now() var statsResp KalaStatsResponse unmarshallRequestBody(a.T(), resp, &statsResp) a.Equal(statsResp.Stats.Jobs, 2) a.Equal(statsResp.Stats.ActiveJobs, 2) a.Equal(statsResp.Stats.DisabledJobs, 0) a.Equal(statsResp.Stats.ErrorCount, uint(0)) a.Equal(statsResp.Stats.SuccessCount, uint(1)) a.WithinDuration(statsResp.Stats.LastAttemptedRun, now, 2*time.Second) a.WithinDuration(statsResp.Stats.CreatedAt, now, 2*time.Second) }
func (a *ApiTestSuite) TestHandleListJobsRequest() { cache, jobOne := generateJobAndCache() jobTwo := job.GetMockJobWithGenericSchedule() jobTwo.Init(cache) r := mux.NewRouter() r.HandleFunc(ApiJobPath, HandleListJobsRequest(cache)).Methods("GET") ts := httptest.NewServer(r) _, req := setupTestReq(a.T(), "GET", ts.URL+ApiJobPath, nil) client := &http.Client{} resp, err := client.Do(req) a.NoError(err) var jobsResp ListJobsResponse unmarshallRequestBody(a.T(), resp, &jobsResp) a.Equal(len(jobsResp.Jobs), 2) a.Equal(jobsResp.Jobs[jobOne.Id].Schedule, jobOne.Schedule) a.Equal(jobsResp.Jobs[jobOne.Id].Name, jobOne.Name) a.Equal(jobsResp.Jobs[jobOne.Id].Owner, jobOne.Owner) a.Equal(jobsResp.Jobs[jobOne.Id].Command, jobOne.Command) a.Equal(jobsResp.Jobs[jobTwo.Id].Schedule, jobTwo.Schedule) a.Equal(jobsResp.Jobs[jobTwo.Id].Name, jobTwo.Name) a.Equal(jobsResp.Jobs[jobTwo.Id].Owner, jobTwo.Owner) a.Equal(jobsResp.Jobs[jobTwo.Id].Command, jobTwo.Command) }
func TestDeleteJob(t *testing.T) { setupTest(t) db := GetBoltDB(testDbPath) cache := job.NewMemoryJobCache(db) defer db.Close() genericMockJob := job.GetMockJobWithGenericSchedule() genericMockJob.Init(cache) db.Save(genericMockJob) // Make sure its there j, err := db.Get(genericMockJob.Id) assert.Nil(t, err) assert.Equal(t, j.Name, genericMockJob.Name) retrievedJob, err := cache.Get(genericMockJob.Id) assert.NoError(t, err) assert.NotNil(t, retrievedJob) // Delete it genericMockJob.Delete(cache, db) k, err := db.Get(genericMockJob.Id) assert.Error(t, err) assert.Nil(t, k) retrievedJobTwo, err := cache.Get(genericMockJob.Id) assert.Error(t, err) assert.Nil(t, retrievedJobTwo) genericMockJob.Delete(cache, db) }
func TestSaveAndGetAllJobs(t *testing.T) { setupTest(t) db := GetBoltDB(testDbPath) cache := job.NewMemoryJobCache(db) defer db.Close() genericMockJobOne := job.GetMockJobWithGenericSchedule() genericMockJobOne.Init(cache) err := db.Save(genericMockJobOne) assert.NoError(t, err) genericMockJobTwo := job.GetMockJobWithGenericSchedule() genericMockJobTwo.Init(cache) err = db.Save(genericMockJobTwo) assert.NoError(t, err) jobs, err := db.GetAll() assert.Nil(t, err) assert.Equal(t, len(jobs), 2) }
func TestSaveAndGetJob(t *testing.T) { db := GetBoltDB(testDbPath) cache := job.NewMemoryJobCache(db, time.Second*60) defer db.Close() genericMockJob := job.GetMockJobWithGenericSchedule() genericMockJob.Init(cache) db.Save(genericMockJob) j, err := db.Get(genericMockJob.Id) assert.Nil(t, err) assert.WithinDuration(t, j.NextRunAt, genericMockJob.NextRunAt, 100*time.Microsecond) assert.Equal(t, j.Name, genericMockJob.Name) assert.Equal(t, j.Id, genericMockJob.Id) assert.Equal(t, j.Command, genericMockJob.Command) assert.Equal(t, j.Schedule, genericMockJob.Schedule) assert.Equal(t, j.Owner, genericMockJob.Owner) assert.Equal(t, j.SuccessCount, genericMockJob.SuccessCount) }
// testJobs initializes n testJobs func initTestJobs(n int) []testJob { testJobs := []testJob{} for i := 0; i < n; i++ { j := job.GetMockJobWithGenericSchedule() j.Init(cache) bytes, err := j.Bytes() if err != nil { panic(err) } t := testJob{ Job: j, Bytes: bytes, } testJobs = append(testJobs, t) } return testJobs }
func generateJobAndCache() (*job.MemoryJobCache, *job.Job) { cache := job.NewMockCache() job := job.GetMockJobWithGenericSchedule() job.Init(cache) return cache, job }