Skip to content

Commit

Permalink
fixing run ids
Browse files Browse the repository at this point in the history
  • Loading branch information
krzysied committed Apr 12, 2019
1 parent 803a03e commit 24c5d26
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 12 deletions.
18 changes: 10 additions & 8 deletions benchmark/pkg/metricsfetcher/runselector/schemes/last_n_hours.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ limitations under the License.
package schemes

import (
"sort"
"time"

"k8s.io/perf-tests/benchmark/pkg/metricsfetcher/util"
Expand All @@ -26,22 +27,23 @@ import (
// that've finished. If it cannot find n runs, returns as many runs as it could collect.
// Note: We check if start time of the run is not earlier than 'n' hours from now.
func GetJobRunsFromLastNHours(job string, n int, utils util.JobLogUtils) ([]int, error) {
latestRunNumber, err := utils.GetLatestBuildNumberForJob(job)
buildNumbers, err := utils.GetBuildNumbersForJob(job)
if err != nil {
return nil, err
}
sort.Sort(sort.Reverse(sort.IntSlice(buildNumbers)))

var runs []int
currentTime := uint64(time.Now().Unix())
for runNumber := latestRunNumber; runNumber > 0; runNumber-- {
if startTimestamp, err := utils.GetJobRunStartTimestamp(job, runNumber); err == nil {
if (currentTime - startTimestamp) < uint64(3600*n) {
if _, err := utils.GetJobRunFinishedStatus(job, runNumber); err == nil {
runs = append(runs, runNumber)
}
} else {
for index := 0; index < len(buildNumbers); index++ {
buildNumber := buildNumbers[index]
if startTimestamp, err := utils.GetJobRunStartTimestamp(job, buildNumber); err == nil {
if (currentTime - startTimestamp) >= uint64(3600*n) {
break
}
if _, err := utils.GetJobRunFinishedStatus(job, buildNumber); err == nil {
runs = append(runs, buildNumber)
}
}
}
return runs, nil
Expand Down
12 changes: 8 additions & 4 deletions benchmark/pkg/metricsfetcher/runselector/schemes/last_n_runs.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,25 @@ limitations under the License.
package schemes

import (
"sort"

"k8s.io/perf-tests/benchmark/pkg/metricsfetcher/util"
)

// GetLastNJobRuns returns a list of run numbers of last 'n' completed runs of
// 'job'. If it cannot find n runs, returns as many runs as it could collect.
func GetLastNJobRuns(job string, n int, utils util.JobLogUtils) ([]int, error) {
latestRunNumber, err := utils.GetLatestBuildNumberForJob(job)
buildNumbers, err := utils.GetBuildNumbersForJob(job)
if err != nil {
return nil, err
}
sort.Sort(sort.Reverse(sort.IntSlice(buildNumbers)))

var runs []int
for runNumber := latestRunNumber; runNumber > 0 && len(runs) < n; runNumber-- {
if _, err := utils.GetJobRunFinishedStatus(job, runNumber); err == nil {
runs = append(runs, runNumber)
for index := 0; index < len(buildNumbers) && len(runs) < n; index++ {
buildNumber := buildNumbers[index]
if _, err := utils.GetJobRunFinishedStatus(job, buildNumber); err == nil {
runs = append(runs, buildNumber)
}
}
return runs, nil
Expand Down
5 changes: 5 additions & 0 deletions benchmark/pkg/metricsfetcher/util/mock_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ func (utils MockJobLogUtils) GetLatestBuildNumberForJob(job string) (int, error)
return utils.MockBuildNumbers[length-1], nil
}

// GetBuildNumbersForJob return list of build numbers.
func (utils MockJobLogUtils) GetBuildNumbersForJob(job string) ([]int, error) {
return utils.MockBuildNumbers, nil
}

// GetJobRunStartTimestamp returns start timestamp for the job run.
func (utils MockJobLogUtils) GetJobRunStartTimestamp(job string, run int) (uint64, error) {
value, ok := utils.MockStartTimestamps[run]
Expand Down
6 changes: 6 additions & 0 deletions benchmark/pkg/metricsfetcher/util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ const (
// for obtaining metrics for a given source mode (GCS/local/...).
type JobLogUtils interface {
GetLatestBuildNumberForJob(string) (int, error)
GetBuildNumbersForJob(string) ([]int, error)
GetJobRunStartTimestamp(string, int) (uint64, error)
GetJobRunFinishedStatus(string, int) (bool, error)
GetJobRunFileContents(string, int, string) ([]byte, error)
Expand All @@ -57,6 +58,11 @@ func (utils GCSLogUtils) GetLatestBuildNumberForJob(job string) (int, error) {
return utils.googleGCSBucketUtils.GetLastestBuildNumberFromJenkinsGoogleBucket(job)
}

// GetBuildNumbersForJob return list of build numbers.
func (utils GCSLogUtils) GetBuildNumbersForJob(job string) ([]int, error) {
return utils.googleGCSBucketUtils.GetBuildNumbersFromJenkinsGoogleBucket(job)
}

// GetJobRunStartTimestamp returns start timestamp for the job run.
func (utils GCSLogUtils) GetJobRunStartTimestamp(job string, run int) (uint64, error) {
startStatus, err := utils.googleGCSBucketUtils.CheckStartedStatus(job, run)
Expand Down

0 comments on commit 24c5d26

Please sign in to comment.