235 Commits

Author SHA1 Message Date
Tim Buckley
d27c01fb6a Add new configuration file format
This enables a new "artifact"-based configuration file format,
intended to work natively with the deployer and to aid future efforts
to visualize additional data sources.

Among other tweaks, dataset indices are no longer used as the primary
differentiator between data files, and instead artifact names (such as
`testrepository.subunit`) are used to group related artfacts of various
types, such as 'subunit', 'subunit-stats', and 'subunit-details'.

Additionally, datasets and artifacts now have access to substantially
more metadata about the job that generated the output data. In future
patches, this metadata will be used to display and link to additional
information about visualized data. This metadata is made available
automatically by the deployer, and can be optionally gathered from
environment variables when using `stackviz-export` via a new `--env`
flag.

Change-Id: I3e16cc314624a1b7b4f6bf43fa4d5cdeedcdba0c
2016-04-21 16:21:52 -06:00
Jenkins
d92719c169 Merge "Add to stackviz-export and stackviz-front docs" 2016-04-19 05:27:33 +00:00
Austin Clark
e3af3b2bd3 Add to stackviz-export and stackviz-front docs
Adds additional information to the stackviz-export and stackviz-front
technical documents. Info about `stackviz-export` output files is
now included in the corresponding document. Directive and service
descriptions were added to stackviz-front, alongside inline comments
in the appropriate .js files.

Due to the unique structure of GitHub's RST renderer, includes will
no longer be used in the main README.

Change-Id: Iaebf1f1c3b5e4cbb4ea5e262f85672bc082bbe2f
2016-04-14 10:18:28 -06:00
Tim Buckley
72a3317656 Add canvas timeline implementation
This adds a new timeline renderer using a plain canvas element,
replacing the d3 and svg-based renderer. This new implementation
greatly improves timeline performance, especially on less powerful
graphics cards, and more than doubles the resulting framerate while
panning the view by aggressively caching previously rendered chart
regions. Additionally, worst-case memory usage is greatly reduced
during heavier periods of user interaction.

This new implementation also removes several previous limitations.
Due to cached rendering a nearly unlimited number of objects can be
shown at any time with no performance impact, so small objects never
need to be hidden from view at any zoom level. Also, view transitions
can now be smoothly animated, and reach a stable framerate even on
older mobile devices.

Change-Id: Ib883e056270eff688b4b4a0c340eaea20cceb181
2016-04-06 19:03:31 -06:00
Austin Clark
d096ef67b7 Change nesting API calls to promise chain in test-details controller
TestDetailsCtrl previously used a series of nesting API calls to
dataset-service in order to get dataset, raw json, and details json
for the test details page. This replaces the nesting calls with a
promise chain to make the code more 'Angular-y'.

Change-Id: I82ab7935280d657dc556d72159f5d1b84ca83c0d
2016-03-24 18:52:23 +00:00
Jenkins
b0e5edca74 Merge "Restructure Stackviz docs" 2016-03-24 18:42:53 +00:00
Jenkins
01e0c29edc Merge "Use Chrome for unit tests and update dependencies" 2016-03-24 15:24:31 +00:00
Jenkins
2dfaf4663d Merge "Add gitignore files" 2016-03-23 07:33:50 +00:00
Tim Buckley
3df8815852 Use Chrome for unit tests and update dependencies
This adds karma-chrome-launcher and uses it instead of phantomjs for
running all unit tests. Currently, the 'phantomjs-prebuilt' package
downloads binaries from bitbucket, and gate job have been failing due
to rate limiting from their servers. Since Chrome is already being
installed from local mirrors as part of the 'npm run' job template,
this should avoid further problems.

Additionally, this bumps all npm dependencies to their latest
versions and removes several (such as babel) that are unused. Some
minor tweaks to gulp tasks were needed to account for changes, but
these are fairly minimal.

Change-Id: Ia003280ab30f2912935140ecd4734ae8a08dd44d
2016-03-22 17:59:55 -06:00
Austin Clark
f3848085e1 Restructure Stackviz docs
This patch changes the format of Stackviz docs so that all information
is stored in the appropriate doc/source/ directory rather than all
in README.rst. README.rst now just uses the RST include directive to
get its text from doc/source/readme.rst. Usage and installation are
now in their own RST files for increased modularity, and are included
in doc/source/readme.rst.

Additional developer documentation has also been created at
doc/source/man/ and includes more information on stackviz-export
as well as the AngularJS front-end.

Change-Id: I1d37194add998cf83a66d380ec7390e31184bdb3
2016-03-22 11:54:57 -06:00
Tim Buckley
e631b8c62c Fix sourcemap generation
This fixes slightly broken sourcemap generation, and fully enables
sourcemaps for all builds. Previously, browserify would generate
its own sourcemaps and embed them directly in 'main.js' which often
confused Chrome. Additionally, partial sourcemaps were written to
'main.js.map' during production builds, but these did not include
browserify's inline sourcemaps which mapped library sources, causing
even more confusion for Chrome. This standardizes sourcemaps so they
are all written to a single output file, and generated regardless of
build type.

Change-Id: I1e676cae27082cb81d808d78fd600f09d6449498
2016-03-16 15:15:47 -06:00
Masayuki Igawa
0aae726f4f Add gitignore files
This commit adds some gitignore files same as 'cookiecutter'[1].

[1] http://git.openstack.org/cgit/openstack-dev/cookiecutter/tree/%7b%7bcookiecutter.repo_name%7d%7d/.gitignore

Change-Id: Ic5c673bb318bd25024bba90bfd4b6fb142f340a9
2016-03-11 14:45:55 +09:00
Jenkins
146fa55933 Merge "Fix phantomjs package error and update eslint-config-openstack" 2016-03-10 23:58:47 +00:00
Austin Clark
bd6e4a2a96 Fix phantomjs package error and update eslint-config-openstack
Patches prior to this failed the `npm run lint` and `gulp unit` gate
tests due to a new versioning of eslint-config-openstack and renaming
of the phantomjs browser to `phantomjs-prebuilt`. This patches updates
the necessary deps in package.json so that gate tests can now run
successfully.

Change-Id: I8ad54b29d91801d09991496b1e5eb90680ace8e3
2016-03-10 13:34:03 -07:00
Jenkins
4261a7a377 Merge "Fix lint errors and update eslint" 2016-02-11 03:50:47 +00:00
Austin Clark
093c02d0b9 Fix lint errors and update eslint
Fixes a couple of lint errors caught by `npm run lint` in timeline-
overview.js and timeline-viewport.js. Also restructures the test-
details controller to use appropriate `this.` syntax instead of
`$scope.`

In addition, eslint and eslint-config-openstack have been updated,
and a new .eslintrc.json config file has been created to tweak some
specific rules for stackviz.

Change-Id: I9e1fe5121621730eb3efda4b99e9fe182f399aee
2016-02-04 13:52:12 -07:00
Tim Buckley
d42aed0935 Improve handling of dstat load failures.
This tweaks how Dstat data is loaded to handle errors more cleanly.
Attempts to load dstat data for datasets that don't have it configured
will fail early and avoid making a request, and 404 errors are now
handled appropriately. Also, the Dstat parser now validates
headers to make sure it is actually parsing Dstat CSV data. Lastly,
the chart is now hidden until data is loaded successfully, removing
the large blank area previously shown for missing datasets.

Change-Id: I96b8d038af1cc718ae9c43a078679a04533fddc5
2016-01-27 16:54:38 -07:00
Tim Buckley
6fab4c7e3f Show warning for hidden tests on timeline.
Previously, tests hidden due to their small (< 2px) size would be
silently hidden from view, and navigating to a hidden test (via direct
link, search, or keyboard) would move the timeline to the correct
position, but would show only empty space, even though the details
panel would be updated. This adds a label and a warning message to the
details panel to inform users that the selected test is too small to
show in the view.

Additionally, when the selection is changed to a hidden item, any
previously-selected rect will now be properly restored to its original
color.

Change-Id: I3f6ee9313db64472ce8f6ce7d929c4d464f12ab5
2016-01-25 19:13:46 -07:00
Tim Buckley
ff939428d7 Add nprogress progress bars to timeline and test-details.
This adds support for loading progress bars from the nprogress library
and displays progress bars while loading the larger datasets on the
timeline and test details pages.

Change-Id: Ica10d348f67abc348aed2df0b158383ad035e604
2016-01-25 17:50:30 -07:00
Jenkins
8f09d69786 Merge "Show last two traceback lines in failure summary stats" 2016-01-20 00:24:48 +00:00
Austin Clark
98cb04f1dd Show last two traceback lines in failure summary stats
Presently, the failure tracebacks displayed on the tempest summary
directive only show the last line of the failing test's traceback.
After analyzing some sample logs, it was determined that the last
two lines provide a more full picture of the failure, including
exception codes. This patchs adds code to the stackviz-export parser
to include the last two traceback lines for display on the summary
page.

Change-Id: Ib0bffd5b402093adbf1ff6618413df8e8a138670
2016-01-19 12:44:34 -07:00
Austin Clark
6b80ea8fa2 Add filter functionality to test-details pythonlogging
On tests with pythonlogging, the DEBUG headers can be quite long and
make finding useful information difficult. This patch adds a small,
four-button filter to the test-details page that allows a user to
select which levels of logging to be displayed (INFO, WARNING, ERROR,
DEBUG). This patch will likely serve as the base for additional search
functionality for test details (e.g. queries).

Change-Id: Ia4286861268de0e43313d3b8d7f966e94697a495
2016-01-15 13:20:21 -07:00
Jenkins
728eb59ae8 Merge "Handle invalid input to list filter functions safely." 2016-01-14 23:25:34 +00:00
Tim Buckley
a96875e606 Handle invalid input to list filter functions safely.
Previously list filter functions did not handle invalid input safely.
This adds a check for null or undefined input and returns a default safe
value.

Change-Id: I59ea3be8b3d8413851204046890121bda3a44e04
2016-01-14 15:59:45 -07:00
Austin Clark
0ffb605e13 Add test-details page
Patch for test-details page. Includes new page, directives,
controller, and route for navigation. The detail page URL follows
the same format as the timeline URL. Currently tabs are used to
display detail information, but this may be replaced in a future
revision. The page is navigated to from the timeline details
panel via a button in the bottom-right corner.

Change-Id: I003125a33f87aa7e4c8251756e1fe5f447abac56
2016-01-14 15:30:39 -07:00
Jenkins
da45dab63c Merge "Add axis to the timeline viewport." 2016-01-13 21:20:49 +00:00
Jenkins
2bba37769c Merge "Add search and filtering support to the timeline." 2016-01-13 21:20:26 +00:00
Jenkins
5282a94436 Merge "Update Angular and UI Bootstrap to latest versions." 2016-01-13 21:20:00 +00:00
Jenkins
2c483c10de Merge "Redesign the timeline details panel." 2016-01-13 21:19:05 +00:00
Tim Buckley
19c85d503f Add axis to the timeline viewport.
This adds a labeled time axis to the main viewport chart. Previously
time was only displayed as part of the cursor, but now it is also
visible at all times on the chart itself.

Change-Id: I8f2379ef50a1d4f4ea2869aa26f1a7e5744bdb8a
2016-01-12 14:27:06 -07:00
Tim Buckley
81c59489f3 Add search and filtering support to the timeline.
This adds a new UI for searching and filtering through tests in a
timeline. A new dropdown for filter options is added to the timeline
panel header, where users can query and select tests based on name and
metadata (pass/fail/skip). A list of results is displayed which can
be selected from directly, but results are also highlighted on the
timeline directly.

Some rearchitecting of the HTML layout for the timeline directive was
needed to allow part of the timeline to be inside a panel header, so
the entire panel layout was moved inside the timeline directive.
A new `filterFunction` field was added to the main timeline controller
to support communicating the filtering parameters to other components
of the timeline. Additionally, a new `contextClass` filter was added
to avoid excessive code duplication for highlighting element color
based on test status - existing uses were replaced with this.

Change-Id: I5f35091ab2b605e0821125e79de47c4c6067f644
2016-01-12 13:28:45 -07:00
Tim Buckley
3a4683b8be Update Angular and UI Bootstrap to latest versions.
This updates `angular` and `angular-ui-bootstrap` to their latest
versions. Upcoming changes rely on several bugfixes and features
introduced in the newer versions, and this should encompass all of
the necessary preparation.

Change-Id: Iddc210ef64e913babbbd409747fecf3bbd8f2d5e
2016-01-11 17:04:15 -07:00
Tim Buckley
d13506d750 Update README.rst to include Python and testing instructions.
This updates the README to include missing instructions for
installing the Python module and basic information on testing.
Additionally, a link to the planning etherpad is also included.

Change-Id: I75795888bd19eb8116d86ee9647a2eeb6f3119be
2016-01-11 11:08:09 -07:00
Tim Buckley
f1a1f1a650 Redesign the timeline details panel.
This redesigns the aspects of the timeline, particularly relating to
the details panel. First, selection mechanics are greatly simplified,
so items can be hovered while one is selected. Additionally, hovered
item names are now shown as part of the cursor. The details panel
now only shows details for selected items, and is moved to fill the
bottom of the screen; similarly, the timeline now fills the full width
of the screen.

Change-Id: I0acb88f898dcfd0a0327a38aa5eb995f118e1a1e
2016-01-08 17:24:03 -07:00
Jenkins
acfbad02df Merge "Fix timeline rendering in Firefox." 2016-01-06 21:13:27 +00:00
Tim Buckley
bc0a043657 Fix timeline rendering in Firefox.
Firefox appears to behave differently than Chrome when computing CSS
sizes for SVG elements, causing the timeline elements to have
incorrect widths. This modifies layout behavior to use only attribute
sizes instead of CSS sizes, which works around the issue.

Change-Id: I6af2d9502ba7881c630197494382c0bc7eec8283
2016-01-06 12:53:50 -07:00
Austin Clark
a419142cb7 Add key-listener to refactored timeline
This change adds a key-listener to navigate between test rectangles on
the timeline. When an out-of-view test is selected, the timeline will
refocus and bring it into view. Functionality for left and right arrow
keys is supported, up and down (to navigate between workers) key are
not supported, but may be added in a future patch.

Change-Id: I4a187a1c048d5e6552316d10db0c677432aa8f7e
2016-01-06 11:05:00 -07:00
Jenkins
408168bd60 Merge "Refactor the timeline directive." 2016-01-06 16:22:28 +00:00
Tim Buckley
e7473f7f01 Refactor the timeline directive.
Presently the timeline directive is a single gigantic directive
containing all of the timeline code. Given the amount of code
involved, this complicates maintenance and makes it excessively
difficult to improve.

This refactors the single timeline directive into four separate
collaborating directives: a controller, an overview, a viewport,
and dstat charts. Each child directive is functionally separate
from the others, but can communicate with other chart components
via the controller. This separation should greatly improve future
maintenance, and has already led to several (included) bug fixes.

Change-Id: Id11d15a34466e42c5ebc9808717d52b468245e3a
2016-01-05 18:57:28 -07:00
Jenkins
dbaeb47248 Merge "remove python 2.6 trove classifier" 2016-01-05 18:34:30 +00:00
Jenkins
42a7cc6182 Merge "py26/py33 are no longer supported by Infra's CI" 2016-01-05 18:34:17 +00:00
Tim Buckley
a22de1964c Add missing DI annotations and enable strictDi.
This adds missing `@ngInject` annotations to 2 directives and enables
angular's strictDi mode. This patch should fix bulids produced with
`gulp prod` that were unusable due to DI errors.

Change-Id: Ib3c8810c24afb3c859029d2f8eaf9044416b6fa3
2016-01-04 17:03:03 -07:00
janonymous
ac44dbffc3 py26/py33 are no longer supported by Infra's CI
Python 3.3/2.6 support would be dropped by
Infra team from mitaka,CI would no longer be testing it,
so projects should drop it also.

Change-Id: Ie03c422818c505d0ae979a8db9f3b0c8d8e2397e
2015-12-26 14:39:24 +05:30
Doug Hellmann
b0b1cb2fd8 remove python 2.6 trove classifier
OpenStack projects are no longer being tested under Python 2.6, so
remove the trove classifier implying that this project supports 2.6.

Change-Id: I09a29345722507bed182819e0bd99e3da9d19683
2015-12-23 01:31:16 +00:00
Jenkins
fe6f75a271 Merge "Directly link to timeline details for failed tests." 2015-12-01 18:19:10 +00:00
Tim Buckley
1d0e0af79f Directly link to timeline details for failed tests.
This adds links to pre-select failed tests cases on the timeline
for each test failue listed on the front page.

Change-Id: I3cd96f10bddf5aaff9797273c02f9fb53528e836
2015-11-30 23:41:07 +00:00
Tim Buckley
2bad445737 Fix the timeline clipping path.
The use of <base> prevented the clip-path from working as intended,
causing rects in the timeline to overflow onto the worker labels.
This patch removes the <base> tag and disables HTML5 links (which
would have been needed anyway) to fix the issue.

Change-Id: Ia36abfc4f7f2a0d755c16f9d3c825e33a1c9269a
2015-11-30 23:40:42 +00:00
Tim Buckley
756d281ee4 Allow sharing of selected item by page URL.
This patch adds the ability for users to share a selected timeline
item via the page URL. When an item is selected, the page address
is updated to include the current test name as a parameter. If
this link is shared, the test named in the URL will automatically
be highlighed when the page is loaded.

Change-Id: I228d58e68ee986f621a3763bba1a565300c79023
2015-11-30 16:39:45 -07:00
Jenkins
bf35250595 Merge "Use consistent dataset IDs in URLs." 2015-11-30 19:20:44 +00:00
Jenkins
d334778212 Merge "Removed unused node dependencies." 2015-11-30 19:15:01 +00:00