Bug 146210 - Allow other projects to display on the dashboard
Summary: Allow other projects to display on the dashboard
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-22 12:10 PDT by Jason Marcell
Modified: 2015-08-27 17:17 PDT (History)
4 users (show)

See Also:


Attachments
Patch to allow for projects other than open source and internal on the dashboard. (9.12 KB, patch)
2015-06-28 11:59 PDT, Jason Marcell
dbates: review-
Details | Formatted Diff | Diff
Patch to allow for projects other than open source and internal on the dashboard. (8.46 KB, patch)
2015-07-13 16:49 PDT, Jason Marcell
dbates: review-
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jason Marcell 2015-06-22 12:10:06 PDT
Currently on projects with an opensource or internal SVN revision are able to be displayed on the bot watcher's dashboard. There are other projects that do not exist in either of those two repositories (iOS git projects, in particular) which should be allowed to have an entry on the bot-watcher's dashboard.
Comment 1 Jason Marcell 2015-06-28 11:59:53 PDT
Created attachment 255728 [details]
Patch to allow for projects other than open source and internal on the dashboard.
Comment 2 Daniel Bates 2015-06-29 18:33:20 PDT
Comment on attachment 255728 [details]
Patch to allow for projects other than open source and internal on the dashboard.

View in context: https://bugs.webkit.org/attachment.cgi?id=255728&action=review

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:116
> +    if (isGitGotRevisonProperty(property, value))
> +        return value;
> +    else
> +        return parseInt(value);

We should have this function return a string and make it the caller's responsibility to parse the string for a number if needed. Then we can remove the function isGitGotRevisonProperty().

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:212
> +        for (project in this.queue.branch) {

This code is assuming that this.queue.branch represents a dictionary of (project, branch name)-pairs. Currently, this.queue.branch represents a dictionary of (repository, branch name)-pairs. Is this acceptable?

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:215
> +            var revisionProperty = data.properties.findFirst(function(property) {
> +                return isMultiCodebaseGotRevisionProperty(property) || property[0] === "got_revision";
> +            });

Notice that we compute this on each iteraiton. I suggest we move this out of the loop.

Also, the first disjunct is unnecessary by definition of isMultiCodebaseGotRevisionProperty().

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:222
> +                this.otherRevision = parseRevisionProperty(revisionProperty, project, "Tools");

Is it correct to fallback to using key Tools?

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:211
> +        if (iteration.otherRevision)
> +            content.textContent = iteration.otherRevision.substring(0, 8);

This code assumes that iteration.otherRevision is always a Git revision. Is this correct?

How did you choose 8?

Did you mean to use String.substring() which takes a from and to argument for the indices?

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:267
> +            return this._revisionContentWithPopoverForIteration(iteration, previousDisplayedIteration, true);

How does this work if previousDisplayedIteration is non-null?
Comment 3 Jason Marcell 2015-07-13 16:49:08 PDT
Created attachment 256746 [details]
Patch to allow for projects other than open source and internal on the dashboard.

Dan, I think I've addressed most of your concerns.

One that I'm not sure how to address is this question:
This code is assuming that this.queue.branch represents a dictionary of (project, branch name)-pairs. Currently, this.queue.branch represents a dictionary of (repository, branch name)-pairs. Is this acceptable?

I'm not sure whether this is an issue, but it might be worth discussing.
Comment 4 Daniel Bates 2015-07-16 11:25:04 PDT
Comment on attachment 256746 [details]
Patch to allow for projects other than open source and internal on the dashboard.

View in context: https://bugs.webkit.org/attachment.cgi?id=256746&action=review

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:74
> -            var status = new StatusLineView(message, StatusLineView.Status.Good, "all tests passed", null, null);
> +            var statusMessagePassed = "all " + (queue.builder ? "builds" : "tests") + " passed"
> +            var status = new StatusLineView(message, StatusLineView.Status.Good, statusMessagePassed, null, null);

I'm unclear how this change relates to the purpose of this bug. Although this change is straightforward, we may want to consider making this change in a separate bug/patch.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:202
>          // revision. Therefore, we only look at got_revision to extract the Internal revision when it's
>          // a dictionary.

The last paragraph of comment block above is out-of-date with the proposed code change. Either we should update the comment or remove the last paragraph from the comment block above.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:213
> +        for (project in this.queue.branch) {
> +            if (project === "openSource")
> +                this.openSourceRevision = parseInt(parseRevisionProperty(revisionProperty, "WebKit", "opensource"));
> +            else if (project === "internal")
> +                this.internalRevision = parseInt(parseRevisionProperty(revisionProperty, "Internal", "internal"));
> +            else
> +                this.otherRevision = parseRevisionProperty(revisionProperty, project, "Internal");

This does not seem correct. Assume this.queue.branch := {openSource: "trunk, internal: "trunk"} (which it is for all WebKit OpenSource Project queues by (*) and (**). Suppose revisionProperty = "2468". Then this.openSourceRevision, this.internalRevision = 2468. How does the dashboard behave?

(*) Tthere is no WebKit OpenSource Project queues that explicitly specify the property branch in <http://trac.webkit.org/browser/trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js?rev=184879>.
(**) <http://trac.webkit.org/browser/trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js#L105>

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:212
> +            // Using substr for Git Short-SHA

Either elaborate further on the non-obviousness of using String.substr() to truncate a SHA or remove this coment.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:215
> +                content.textContent = content.textContent.substr(0, 8);

How did you choose 8? I mean, did you compute the collision probability as part of coming up with 8. Throughout <http://git-scm.com/book/ca/v1/Git-Tools-Revision-Selection#Short-SHA> and in various Git literature and tool output I see SHAs of length 7.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:271
> +            return this._revisionContentWithPopoverForIteration(iteration, previousDisplayedIteration, true);

It is not clear here what the purpose of the boolean true is in the last argument. I suggest we define a local variable, say isInternalRevision, defined to be true and pass this named local variable instead of using the keyword true directly in the call to BuildbotQueueView.prototype._revisionContentWithPopoverForIteration().

> Tools/ChangeLog:3
> +        https://bugs.webkit.org/show_bug.cgi?id=146210

Missing bug title, which should be above this line.