Perfomatic:UI: Difference between revisions
Jump to navigation
Jump to search
(hg repo now) |
|||
(48 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Design= | =Perf-O-Matic 2.0= | ||
* [http://graphs.allizom.org/ Perf-o-Matic staging] | |||
* [http://hg.mozilla.org/graphs hg.m.o/graphs] | |||
* Implement new graphserver interface - {{Bug|601796}} | |||
==Problem?== | |||
[https://bugzilla.mozilla.org/enter_bug.cgi?product=Webtools&component=Graph%20Server&version=2.0 File a bug in product Webtools component Graphserver version 2.0] | |||
/connect irc.mozilla.org | |||
/join #perfomatic | |||
==Design== | |||
Designed by Chris Howse | Designed by Chris Howse | ||
[http://people.mozilla.com/~chowse/drop/webtools/graph-server/v2/00_chart_demo.html# Original UI Prototype] | |||
== Missing features from current design == | === Missing features from current design === | ||
* dashboard -> | * dashboard -> | ||
** toolbar -> | ** toolbar -> | ||
*** product - not implemented | *** <strike>product - not implemented</strike> | ||
*** platforms - not implemented | *** <strike>platforms - not implemented</strike> | ||
*** top tests - not implemented | *** <strike>top tests - not implemented</strike> | ||
*** <strike>set pulldowns based on URL</strike> | |||
** data grid -> | ** data grid -> | ||
*** row/column should not scroll | *** row/column should not scroll | ||
* custom chart -> | * custom chart -> | ||
** toolbar -> | ** toolbar -> | ||
*** running time - time delta/time delta % not implemented | *** <strike>running time - time delta/time delta % not implemented</strike> | ||
*** show changesets - needs design work | *** <strike>show changesets - needs design work</strike> | ||
**** may need hgpushlog work to link directly to changesets | **** <strike>may need hgpushlog work to link directly to changesets</strike> | ||
*** export CSV - server broken | *** export CSV - server broken {{bug|489775}} | ||
*** link - needs url shortener | *** link - needs url shortener | ||
**** url/embed styling [https://github.com/chowse/perfomatic-prototype/commit/57da73e6532d8e127900d98b17d7cd4ed999bd13 prototype changes] | **** <strike>url/embed styling [https://github.com/chowse/perfomatic-prototype/commit/57da73e6532d8e127900d98b17d7cd4ed999bd13 prototype changes]</strike> | ||
*** embed - not implemented | *** <strike>embed - not implemented</strike> | ||
** set selection range based on URL | ** <strike>set selection range based on URL</strike> | ||
** add test data -> | ** add test data -> | ||
*** put popular branches/tests/platforms on top | *** put popular branches/tests/platforms on top | ||
* plot | * plot -> | ||
** <strike>y-axis should always be 0-based</strike> | ** <strike>y-axis should always be 0-based</strike> | ||
* <strike>need mapping between branches and hg repos</strike> | |||
== Performance optimizations == | == Performance optimizations == | ||
Line 38: | Line 51: | ||
* split up JSON files as discussed in [[Perfomatic/Status_Meetings/2010-Nov-24|status meeting]] | * split up JSON files as discussed in [[Perfomatic/Status_Meetings/2010-Nov-24|status meeting]] | ||
** look into constraining by date range | ** look into constraining by date range | ||
* mini-manifest, return only requested testid/branchid/platformid | |||
** e.g. http://graphs-stage2.mozilla.org/api/test?attribute=short&testid=1&branchid=1&platformid=1 | |||
* <strike>set Last-Modified headers on all JSON feeds</strike> | * <strike>set Last-Modified headers on all JSON feeds</strike> | ||
** <strike>especially the manifest!</strike> | ** <strike>especially the manifest!</strike> | ||
Line 43: | Line 58: | ||
* <strike>add caching proxy (varnish, etc)</strike> | * <strike>add caching proxy (varnish, etc)</strike> | ||
* improve charting performance | * improve charting performance | ||
** <strike>forcing lineWidth to 1 seems to make a huge difference | |||
*** started [https://groups.google.com/forum/#!topic/flot-graphs/tJDCYMe-0Nw discussion on the flot list], fixed in flot and backported to graphs flot 0.6 | |||
*** however does not look as good, not pushing to stage until further investigation</strike> | |||
** "double-buffering" canvas for flot | ** "double-buffering" canvas for flot | ||
*** [http://stackoverflow.com/questions/2795269/does-html5-canvas-support-double-buffering/2864533#2864533 stack overflow discussion] | *** [http://stackoverflow.com/questions/2795269/does-html5-canvas-support-double-buffering/2864533#2864533 stack overflow discussion] | ||
*** custom chart is much faster if each series is written to a hidden canvas then shown when they are all complete | *** custom chart is much faster if each series is written to a hidden canvas then shown when they are all complete | ||
** use node.js to generate static images for dashboard? | ** <strike>use node.js to generate static images for dashboard? | ||
*** [http://groups.google.com/d/topic/flot-graphs/GLGCCoJlRYg flot group post] | *** [http://groups.google.com/d/topic/flot-graphs/GLGCCoJlRYg flot group post] | ||
** look into reducing number of points | **** this actually works pretty well | ||
*** flot plots way more than is actually useful when graphs are very dense, [https://groups.google.com/forum/#topic/flot-graphs/n4ErDe4Q2Rc flot group discussion] | **** spoke to author (John Schulz, jsno.de/) who linked [https://gist.github.com/752371 the code] behind http://jsno.de./flot/ | ||
**** requires a [http://www.lessaworld.com/projects/flotCanvasText/ text plugin for flot], to get the ticks into the canvas instead of flot's default of appending styled divs</strike> | |||
** <strike>look into reducing number of points | |||
*** flot plots way more than is actually useful when graphs are very dense, [https://groups.google.com/forum/#topic/flot-graphs/n4ErDe4Q2Rc flot group discussion]</strike> | |||
** look into flot alternatives | ** look into flot alternatives | ||
*** [http://highcharts.com/ highcharts] | *** [http://highcharts.com/ highcharts] | ||
Line 59: | Line 79: | ||
* stand up vhost with old graphserver, pointing at nightly database, for QA comparison | * stand up vhost with old graphserver, pointing at nightly database, for QA comparison | ||
* set up lint and tests on [https://hudson.mozilla.org/job/graphs/? Hudson] | * <strike>set up lint and tests on [https://hudson.mozilla.org/job/graphs/? Hudson]</strike> | ||
* stand up auto-update for code (5 minutes) | * selenium tests (in progress) | ||
* qUnit/env.js unit tests for JS code | |||
* stand up auto-update for code (5 minutes) | |||
* <strike>stand up auto-update for DB (nightly)</strike> | |||
* (QA) compare actual submitted data to JSON, and confirm in interface | * (QA) compare actual submitted data to JSON, and confirm in interface | ||
* make sure proper changeset range is shown for checkins | * <strike>make sure proper changeset range is shown for checkins</strike> | ||
** | |||
** | == Bugs == | ||
* custom chart -> | |||
** {{bug|643892}} "show changesets" with multiple data series loads multiple hg.m.o tabs | |||
** embed -> | |||
*** need loading indicator for individual series | |||
*** tooltips can be hidden by top of screen | |||
** series controls change plot daterange | |||
*** str: add multiple data series and change daterange pulldown before all are loaded | |||
** selection range set when "sel=none" | |||
* charts (general) | |||
** {{bug|643897}} all axes should be labeled, units should be specified | |||
** {{bug|651690}} y-axis is relative to entire dataset, not just current view | |||
** selection range ("sel" in URL) is very confusing if it is not in current view, or older than 365 days | |||
*** could check this in JS, error if it's too old, and select 365-day view if it's not? | |||
* "add more test data" dialog | |||
** {{bug|641414}} branch, test, platforms should be sorted | |||
== Discussion == | |||
* [http://www.reddit.com/r/programming/comments/ffook/arewefastyetcom_is_just_the_beginning_see_how_we/ reddit /r/programming thread] | |||
** label axes (see [https://wiki.mozilla.org/Perfomatic:UI#Bugs Bugs section]) | |||
** [http://areweslimyet.com areweslimyet.com] launched by jrmuizel ;) | |||
* [http://news.ycombinator.com/item?id=2183559 Hacker News thread] | |||
** missing data from other browsers | |||
*** how can we instrument Chrome, Safari, IE, Opera, etc.? | |||
**** can we publish this data? | |||
* old-style URLs are not compatible, primarily because the new graphserver automatically shows the average of all machines in a platform rather than a separate line for each, and the old-style URLs refer to individual machines. Problem? |
Latest revision as of 14:54, 3 September 2012
Perf-O-Matic 2.0
- Implement new graphserver interface - bug 601796
Problem?
File a bug in product Webtools component Graphserver version 2.0
/connect irc.mozilla.org
/join #perfomatic
Design
Designed by Chris Howse
Missing features from current design
- dashboard ->
- toolbar ->
product - not implementedplatforms - not implementedtop tests - not implementedset pulldowns based on URL
- data grid ->
- row/column should not scroll
- toolbar ->
- custom chart ->
- toolbar ->
running time - time delta/time delta % not implementedshow changesets - needs design workmay need hgpushlog work to link directly to changesets
- export CSV - server broken bug 489775
- link - needs url shortener
url/embed styling prototype changes
embed - not implemented
set selection range based on URL- add test data ->
- put popular branches/tests/platforms on top
- toolbar ->
- plot ->
y-axis should always be 0-based
need mapping between branches and hg repos
Performance optimizations
- split up JSON files as discussed in status meeting
- look into constraining by date range
- mini-manifest, return only requested testid/branchid/platformid
set Last-Modified headers on all JSON feedsespecially the manifest!already setting 15m Expires/Cache-control max-age
add caching proxy (varnish, etc)- improve charting performance
forcing lineWidth to 1 seems to make a huge difference- started discussion on the flot list, fixed in flot and backported to graphs flot 0.6
however does not look as good, not pushing to stage until further investigation
- "double-buffering" canvas for flot
- stack overflow discussion
- custom chart is much faster if each series is written to a hidden canvas then shown when they are all complete
use node.js to generate static images for dashboard?flot group post- this actually works pretty well
- spoke to author (John Schulz, jsno.de/) who linked the code behind http://jsno.de./flot/
requires a text plugin for flot, to get the ticks into the canvas instead of flot's default of appending styled divs
look into reducing number of pointsflot plots way more than is actually useful when graphs are very dense, flot group discussion
- look into flot alternatives
Testing
- stand up vhost with old graphserver, pointing at nightly database, for QA comparison
set up lint and tests on Hudson- selenium tests (in progress)
- qUnit/env.js unit tests for JS code
- stand up auto-update for code (5 minutes)
stand up auto-update for DB (nightly)- (QA) compare actual submitted data to JSON, and confirm in interface
make sure proper changeset range is shown for checkins
Bugs
- custom chart ->
- bug 643892 "show changesets" with multiple data series loads multiple hg.m.o tabs
- embed ->
- need loading indicator for individual series
- tooltips can be hidden by top of screen
- series controls change plot daterange
- str: add multiple data series and change daterange pulldown before all are loaded
- selection range set when "sel=none"
- charts (general)
- bug 643897 all axes should be labeled, units should be specified
- bug 651690 y-axis is relative to entire dataset, not just current view
- selection range ("sel" in URL) is very confusing if it is not in current view, or older than 365 days
- could check this in JS, error if it's too old, and select 365-day view if it's not?
- "add more test data" dialog
- bug 641414 branch, test, platforms should be sorted
Discussion
- reddit /r/programming thread
- label axes (see Bugs section)
- areweslimyet.com launched by jrmuizel ;)
- Hacker News thread
- missing data from other browsers
- how can we instrument Chrome, Safari, IE, Opera, etc.?
- can we publish this data?
- how can we instrument Chrome, Safari, IE, Opera, etc.?
- missing data from other browsers
- old-style URLs are not compatible, primarily because the new graphserver automatically shows the average of all machines in a platform rather than a separate line for each, and the old-style URLs refer to individual machines. Problem?