open-consul/ui/packages/consul-ui
John Cowen 4515d6141b
ui: Replace NaN and undefined metrics values with - (#9200)
* ui: Add functionality to metrics mocks:

1. More randomness during blocking queries
2. NaN and undefined values that come from prometheus
3. General trivial amends to bring things closer to the style of the
project

* Provider should always provide data as a string or undefined

* Use a placeholder `-` if the metrics endpoint responds with undefined data
2020-11-16 15:22:24 +00:00
..
.storybook ui: Move AppError and ErrorState to glimmer components (#9095) 2020-11-06 09:24:17 +00:00
app ui: Search/sort improvements (#9183) 2020-11-13 15:55:40 +00:00
blueprints
config ui: Move mocks into the ui project (#9084) 2020-11-05 16:03:49 +00:00
lib ui: Fix up typo for the UI config template url (#9109) 2020-11-05 14:04:40 -05:00
mock-api ui: Replace NaN and undefined metrics values with - (#9200) 2020-11-16 15:22:24 +00:00
node-tests/config
public
server
tests ui: Search/sort improvements (#9183) 2020-11-13 15:55:40 +00:00
vendor/metrics-providers ui: Replace NaN and undefined metrics values with - (#9200) 2020-11-16 15:22:24 +00:00
.dev.eslintrc.js
.editorconfig
.ember-cli ui: Default to glimmer components (#9121) 2020-11-06 14:54:44 +00:00
.eslintignore
.eslintrc.js ui: Add vendor directory as a target for JS linting and lint (#9157) 2020-11-11 16:59:15 +00:00
.istanbul.yml
.nvmrc
.prettierrc
.template-lintrc.js ui: Add vendor directory as a target for JS linting and lint (#9157) 2020-11-11 16:59:15 +00:00
.watchmanconfig
_redirects
ember-cli-build.js ui: Add vendor directory as a target for JS linting and lint (#9157) 2020-11-11 16:59:15 +00:00
GNUmakefile ui: Update node_modules deps path in GNUMakefile (#9066) 2020-10-29 13:28:55 -05:00
package.json ui: Topology Intentions Popovers (#9137) 2020-11-12 10:40:15 -05:00
README.md
testem.js ui: Add vendor directory as a target for JS linting and lint (#9157) 2020-11-11 16:59:15 +00:00

consul-ui

Prerequisites

You will need the following things properly installed on your computer.

Installation

  • git clone https://github.com/hashicorp/consul.git this repository
  • cd ui-v2
  • yarn install

All tooling scripts below primarily use make which in turn call node package scripts.

Running / Development

The source code comes with a small development mode that runs enough of the consul API as a set of mocks/fixtures to be able to run the UI without having to run consul.

To enable ACLs using the mock API, use Web Inspector to set a cookie as follows:

CONSUL_ACLS_ENABLE=1

This will enable the ACLs login page, to which you can login with any ACL token/secret.

You can also use a number of other cookie key/values to set various things whilst developing the UI, such as (but not limited to):

CONSUL_SERVICE_COUNT=1000
CONSUL_NODE_CODE=1000
// etc etc

See ./node_modules/@hashicorp/consul-api-double for more details.

If you wish to run the UI code against a running consul instance, uncomment the proxy line in .ember-cli to point ember-cli to your consul instance.

You can also run the UI against a normal Consul installation.

make start-consul or yarn run start:consul will use the CONSUL_HTTP_ADDR environment variable to locate the Consul installation. If that it not set start-consul will use http://localhost:8500.

Example usage:

CONSUL_HTTP_ADDR=http://10.0.0.1:8500 make start-consul

Code Generators

Make use of the many generators for code, try ember help generate for more details

Running Tests

Please note: You do not need to run make start-api/yarn run start:api to run the tests, but the same mock consul API is used.

  • make test or yarn run test
  • make test-view or yarn run test:view to view the tests running in Chrome

Linting

make lint currently runs linting on the majority of js files and hbs files (using ember-template-lint).

See .eslintrc.js and .eslintignore for specific configuration.

Building

  • make build builds the UI for production usage (env=production)
  • make build-ci builds the UI for CI/test usage (env=test)

Static files are built into ./dist

Running Tests in Parallel

Alternatively, ember-exam can be used to split the tests across multiple browser instances for faster results. Most options are the same as ember test. To see a full list of options, run ember exam --help.

Note: The EMBER_EXAM_PARALLEL environment variable must be set to override the default parallel value of 1 browser instance in testem.js.

To quickly run the tests across 4 parallel browser instances:

make test-parallel

To run manually:

$ EMBER_EXAM_PARALLEL=true ./node_modules/.bin/ember exam --split <num> --parallel

More ways to split tests can be found in the ember-exam README.md.