Skip to content

Commit

Permalink
Add bok choy coverage to dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
Jay Zoldak committed Mar 5, 2014
1 parent 931546a commit e2a533c
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 40 deletions.
76 changes: 36 additions & 40 deletions dashboards/edx.erb
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
<script type='text/javascript'>
$(function() {
Dashing.gridsterLayout('[{"col":11,"row":1},{"col":3,"row":4},{"col":1,"row":4},{"col":9,"row":4},{"col":3,"row":6},{"col":1,"row":6},{"col":5,"row":6},{"col":5,"row":4},{"col":3,"row":1},{"col":1,"row":1},{"col":5,"row":1},{"col":7,"row":1},{"col":9,"row":1}]')
});
</script>

<script type='text/javascript'>
$(function() {
Dashing.widget_base_dimensions = [105, 105]
Expand All @@ -14,59 +8,61 @@ Dashing.numColumns = 12
<% content_for(:title) { "edX Engineering" } %>
<div class="gridster">
<ul>
<li data-row="1" data-col="7" data-sizex="2" data-sizey="3">
<div data-view="Image" data-image="/logo.png"></div>
</li>
<li data-row="1" data-col="3" data-sizex="2" data-sizey="2">
<div data-id="mathworks_status" data-view="Status"></div>
</li>
<li data-row="1" data-col="1" data-sizex="2" data-sizey="2">
<div data-id="github_status" data-view="GithubStatus" data-title="GitHub Status"></div>
</li>
<li data-row="1" data-col="9" data-sizex="4" data-sizey="4">
<div data-id="jenkins_deploy_status" data-view="Jenkins" data-title="Deploy Tests"></div>
</li>
<!-- warm should be the threshold on the branch jobs and
cool should be 98 or 99% of it, depending on how aggressively
we want to lower the numbers. -->
<li data-row="5" data-col="9" data-sizex="2" data-sizey="2">
<div data-id="pep8" data-view="Hotness" data-title="PEP8 Violations" data-cool="881" data-warm="890">
</div>
</li>
<li data-row="5" data-col="11" data-sizex="2" data-sizey="2">
<div data-id="pylint" data-view="Hotness" data-title="Pylint Violations" data-cool="4752" data-warm="4800">
</div>
</li>
<li data-row="6" data-col="5" data-sizex="4" data-sizey="2">
<div data-id="mitx_hash_prod" data-view="MitxVersion" style="background-color:#b52967"></div>
</li>
<li data-row="4" data-col="5" data-sizex="4" data-sizey="2">
<div data-id="mitx_hash_stage" data-view="MitxVersion" style="background-color:#b52967"></div>
</li>
<li data-row="3" data-col="1" data-sizex="2" data-sizey="3">
<li data-row="1" data-col="1" data-sizex="2" data-sizey="3">
<div data-id="py_cms" data-view="Meter" data-title="CMS"
data-moreinfo="Python code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="3" data-col="3" data-sizex="2" data-sizey="3">
<li data-row="1" data-col="3" data-sizex="2" data-sizey="3">
<div data-id="py_lms" data-view="Meter" data-title="LMS"
data-moreinfo="Python code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="6" data-col="1" data-sizex="2" data-sizey="3">
<li data-row="1" data-col="5" data-sizex="2" data-sizey="3">
<div data-id="py_common_lib" data-view="Meter" data-title="Common Lib"
data-moreinfo="Python code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="6" data-col="1" data-sizex="2" data-sizey="3">
<li data-row="1" data-col="7" data-sizex="2" data-sizey="3">
<div data-id="py_common_apps" data-view="Meter" data-title="Common App"
data-moreinfo="Python code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="6" data-col="5" data-sizex="2" data-sizey="3">
<li data-row="1" data-col="9" data-sizex="2" data-sizey="3">
<div data-id="js_coverage" data-view="Meter" data-title="JavaScript"
data-moreinfo="JavaScript code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="1" data-col="11" data-sizex="2" data-sizey="3">
<div data-id="bok_coverage" data-view="Meter" data-title="Acceptance"
data-moreinfo="Bok-choy code coverage %"
data-min="0" data-max="100" style="background-color:#1aa1e0"></div>
</li>
<li data-row="4" data-col="1" data-sizex="2" data-sizey="2">
<div data-id="github_status" data-view="GithubStatus" data-title="GitHub Status"></div>
</li>
<li data-row="4" data-col="3" data-sizex="2" data-sizey="2">
<div data-id="mathworks_status" data-view="Status"></div>
</li>
<li data-row="4" data-col="5" data-sizex="4" data-sizey="2">
<div data-id="mitx_hash_stage" data-view="MitxVersion" style="background-color:#b52967"></div>
</li>
<li data-row="4" data-col="9" data-sizex="4" data-sizey="5">
<div data-id="jenkins_deploy_status" data-view="Jenkins" data-title="Deploy Tests"></div>
</li>
<!-- warm should be the threshold on the branch jobs and
cool should be 98 or 99% of it, depending on how aggressively
we want to lower the numbers. -->
<li data-row="6" data-col="1" data-sizex="2" data-sizey="3">
<div data-id="pylint" data-view="Hotness" data-title="Pylint Violations" data-cool="4752" data-warm="4800">
</div>
</li>
<li data-row="6" data-col="3" data-sizex="2" data-sizey="3">
<div data-id="pep8" data-view="Hotness" data-title="PEP8 Violations" data-cool="881" data-warm="890">
</div>
</li>
<li data-row="6" data-col="5" data-sizex="4" data-sizey="3">
<div data-id="mitx_hash_prod" data-view="MitxVersion" style="background-color:#b52967"></div>
</li>
</ul>
</div>
33 changes: 33 additions & 0 deletions jobs/bok-choy_coverage.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'open-uri'
require 'openssl'
require 'json'

# :first_in sets how long it takes before the job is first run. In this case, it is run immediately
SCHEDULER.every '5m', :first_in => 0 do |job|

# Retrieve the number of the last stable build
last_build_uri = JENKINS_JOB_URL + '/lastStableBuild/buildNumber'

# Once SSL certificates are set up correctly, we can remove the :ssl_verify_mode option
response = open(last_build_uri, :ssl_verify_mode=>OpenSSL::SSL::VERIFY_NONE).read
last_build_num = response.to_i

# Retrieve the coverage info as JSON
coverage_uri = JENKINS_JOB_URL + "/SHARD=1,TEST_SUITE=bok-choy/#{last_build_num}/cobertura/_default_/api/json?depth=2"
coverage_data = open(coverage_uri, :ssl_verify_mode=>OpenSSL::SSL::VERIFY_NONE).read

# Parse the JSON
json = JSON.parse(coverage_data)
result_elements = json["results"]["elements"]

line_coverage = nil
result_elements.each do |result|
# Result is a hash with keys 'ratio' and 'name'
# We're looking for the name 'Lines'
if result['name'] == 'Lines'
line_coverage = result['ratio'].to_i
end
end

send_event('bok_coverage', { value: line_coverage })
end

0 comments on commit e2a533c

Please sign in to comment.