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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
This adds links to pre-select failed tests cases on the timeline
for each test failue listed on the front page.
Change-Id: I3cd96f10bddf5aaff9797273c02f9fb53528e836
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
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