Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: go/buildbot/db.go

Issue 796883002: buildbot package: actually find commits for each build during ingestion (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Pretty format the JSON Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « go/buildbot/buildbot_test.go ('k') | go/buildbot/ingest.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: go/buildbot/db.go
diff --git a/go/buildbot/db.go b/go/buildbot/db.go
index 06c2aef925b68359104c78aba838f684023012e6..4ec327c50fa59f7be55806462fdab02b03e1f150 100644
--- a/go/buildbot/db.go
+++ b/go/buildbot/db.go
@@ -1,6 +1,7 @@
package buildbot
import (
+ "database/sql"
"encoding/json"
"fmt"
@@ -41,6 +42,38 @@ func (b BuildStep) ReplaceIntoDB() error {
return nil
}
+// GetCommitsForBuild retrieves the list of commits first built in the given
+// build from the database.
+func GetCommitsForBuild(master, builder string, buildNumber int) ([]string, error) {
+ stmt, err := DB.Preparex(fmt.Sprintf("SELECT revision FROM %s WHERE master = ? AND builder = ? AND number = ?", TABLE_BUILD_REVISIONS))
+ if err != nil {
+ return nil, fmt.Errorf("Unable to retrieve build revisions from database - failed to prepare query: %v", err)
+ }
+ commits := []string{}
+ if err := stmt.Select(&commits, master, builder, buildNumber); err != nil {
+ return nil, fmt.Errorf("Unable to retrieve build revisions from database: %v", err)
+ }
+ return commits, nil
+}
+
+// GetBuildForCommit retrieves the build number of the build which first
+// included the given commit.
+func GetBuildForCommit(master, builder, commit string) (int, error) {
+ stmt, err := DB.Preparex(fmt.Sprintf("SELECT number FROM %s WHERE master = ? AND builder = ? AND revision = ?", TABLE_BUILD_REVISIONS))
+ if err != nil {
+ return -1, fmt.Errorf("Unable to retrieve build number from database - failed to repare query: %v", err)
+ }
+ n := -1
+ if err := stmt.Get(&n, master, builder, commit); err != nil {
+ if err == sql.ErrNoRows {
+ // No build includes this commit.
+ return -1, nil
+ }
+ return -1, fmt.Errorf("Unable to retrieve build number from database: %v", err)
+ }
+ return n, nil
+}
+
// GetBuildFromDB retrieves the given build from the database as specified by
// the given master, builder, and build number.
func GetBuildFromDB(master, builder string, buildNumber int) (*Build, error) {
@@ -82,15 +115,10 @@ func GetBuildFromDB(master, builder string, buildNumber int) (*Build, error) {
build.Steps = steps
// Get the commits associated with this build.
- cmtStmt, err := DB.Preparex(fmt.Sprintf("SELECT revision FROM %s where master = ? and builder = ? and number = ?", TABLE_BUILD_REVISIONS))
+ build.Commits, err = GetCommitsForBuild(master, builder, buildNumber)
if err != nil {
- return nil, fmt.Errorf("Unable to retrieve build revisions from database - failed to prepare query: %v", err)
- }
- commits := []string{}
- if err := cmtStmt.Select(&commits, master, builder, buildNumber); err != nil {
- return nil, fmt.Errorf("Unable to retrieve build revisions from database: %v", err)
+ return nil, fmt.Errorf("Could not retrieve commits for build: %v", err)
}
- build.Commits = commits
return &build, nil
}
« no previous file with comments | « go/buildbot/buildbot_test.go ('k') | go/buildbot/ingest.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698