Пример #1
0
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)
}
Пример #2
0
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)
}
Пример #3
0
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)
}
Пример #4
0
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)
}
Пример #5
0
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)
}
Пример #6
0
// 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
}
Пример #7
0
func generateJobAndCache() (*job.MemoryJobCache, *job.Job) {
	cache := job.NewMockCache()
	job := job.GetMockJobWithGenericSchedule()
	job.Init(cache)
	return cache, job
}