Skip to content

Commit

Permalink
Merge pull request kubernetes#497 from krzysied/benchmark_run_id_fix
Browse files Browse the repository at this point in the history
Benchmark - Run id fix
  • Loading branch information
k8s-ci-robot committed Apr 12, 2019
2 parents 0d13c0b + 24c5d26 commit 9e184d2
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 40 deletions.
13 changes: 5 additions & 8 deletions benchmark/Godeps/Godeps.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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
78 changes: 63 additions & 15 deletions benchmark/vendor/k8s.io/contrib/test-utils/utils/bucket.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 32 additions & 4 deletions benchmark/vendor/k8s.io/contrib/test-utils/utils/utils.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9e184d2

Please sign in to comment.