druid/web-console
John Gozde fdc3c2f362
Web console: update dev dependencies (#11119)
* Update some dev dependencies, prettify, tslint-fix

* Sort tsconfig keys for easy comparison

* Set noImplicitThis

* Slightly more accurate types

* Bump Jest and related

* Bump react to latest on v16

* Bump node-sass, sass-loader for node14 support

* Remove node-sass-chokidar (unused)

* More unused dependencies

* Fix blueprint imports

* Webpack 5

* Update webpack config for 'process' usage

* Update playwright-chromium

* Emit esnext modules for tree shaking

* Enable source maps in development

* Dedupe

* Bump babel and things

* npm audit fix

* Add .editorconfig file to match prettier settings

* Update licenses (tslib is 0BSD as of 1.11.2)

https://github.com/microsoft/tslib/pull/96

* Require node >= 10

* Use Node 10 to run e2e tests

* Use 'ws' transport mode for dev server (will be default in next version)

* Remove an 'any'

* No sourcemaps in prod

* Exclude .editorconfig from license checks

* Try nvm for setting node version
2021-04-16 20:15:19 -07:00
..
assets Web console: add tile for Azure Event Hubs (via Kafka API) (#10317) 2020-08-31 20:58:52 -07:00
e2e-tests Web console: Do not put __time in the dimensions list (#11085) 2021-04-12 09:48:10 -07:00
lib Web console: improve make type preservation in ingestion configs in the data loader (#10533) 2020-10-30 19:02:44 -07:00
script Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
src Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
.editorconfig Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
.gitignore Web console: show segment sizes in rows not bytes (#10496) 2020-10-13 13:19:39 -07:00
.stylelintrc.json
README.md Web console: Do not put __time in the dimensions list (#11085) 2021-04-12 09:48:10 -07:00
babel.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00
console-config.js use new example manifest (#10787) 2021-01-24 12:38:13 -08:00
favicon.png Web console: refresh and tighten up the console styles 💅💫 (#10515) 2020-10-20 22:11:29 -07:00
jest.common.config.js Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
jest.e2e.config.js Web console autocompaction E2E test (#10425) 2020-09-25 18:28:25 -07:00
jest.unit.config.js split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
package-lock.json Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
package.json Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
pom.xml Bump dev version to 0.22.0-SNAPSHOT (#10759) 2021-01-15 13:16:23 -08:00
sasslint.json
tsconfig.json Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
tsconfig.test.json Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00
tslint.json
unified-console.html Bump dev version to 0.22.0-SNAPSHOT (#10759) 2021-01-15 13:16:23 -08:00
webpack.config.js Web console: update dev dependencies (#11119) 2021-04-16 20:15:19 -07:00

README.md

Apache Druid web console

This is the Druid web console that servers as a data management interface for Druid.

Developing the console

Getting started

  1. You need to be within the web-console directory
  2. Install the modules with npm install
  3. Run npm run compile to compile the scss files (this usually needs to be done only once)
  4. Run npm start will start in development mode and will proxy druid requests to localhost:8888

Note: you can provide an environment variable to proxy to a different Druid host like so: druid_host=1.2.3.4:8888 npm start Note: you can provide an environment variable use webpack-bundle-analyzer as a plugin in the build script or like so: BUNDLE_ANALYZER_PLUGIN='TRUE' npm start

To try the console in (say) coordinator mode you could run it as such:

druid_host=localhost:8081 npm start

Developing

You should use a TypeScript friendly IDE (such as WebStorm, or VS Code) to develop the web console.

The console relies on tslint, sass-lint, and prettier to enforce the code style.

If you are going to do any non-trivial development you should set up file watchers in your IDE to automatically fix your code as you type.

If you do not set up auto file watchers then even a trivial change such as a typo fix might draw the ire of the code style enforcement (it might require some lines to be re-wrapped). If you find yourself in that position you should run on or more of:

  • npm run tslint-fix
  • npm run sasslint-fix
  • npm run prettify

To get your code into an acceptable state.

Updating the list of license files

If you change the dependencies of the console in any way please run script/licenses (from the web-console directory). It will analyze the changes and update the ../licenses file as needed.

Please be conscious of not introducing dependencies on packages with Apache incompatible licenses.

Running end-to-end tests

From the web-console directory:

  1. Build druid distribution: script/druid build
  2. Start druid cluster: script/druid start
  3. Run end-to-end tests: npm run test-e2e
  4. Stop druid cluster: script/druid stop

If you already have a druid cluster running on the standard ports, the steps to build/start/stop a druid cluster can be skipped.

Screenshots for debugging

e2e-tests/util/debug.ts:saveScreenshotIfError() is used to save a screenshot of the web console when the test fails. For example, if e2e-tests/tutorial-batch.spec.ts fails, it will create load-data-from-local-disk-error-screenshot.png.

Disabling headless mode

Disabling headless mode while running the tests can be helpful. This can be done via the DRUID_E2E_TEST_HEADLESS environment variable, which defaults to true.

Like so: DRUID_E2E_TEST_HEADLESS=false npm run test-e2e

Running against alternate web console

The environment variable DRUID_E2E_TEST_UNIFIED_CONSOLE_PORT can be used to target a web console running on a non-default port (i.e., not port 8888). For example, this environment variable can be used to target the development mode of the web console (started via npm start), which runs on port 18081.

Description of the directory structure

As part of this directory:

  • assets/ - The images (and other assets) used within the console
  • e2e-tests/ - End-to-end tests for the console
  • lib/ - A place where some overrides to the react-table stylus files live, this is outside of the normal SCSS build system.
  • public/ - The compiled destination for the files powering this console
  • script/ - Some helper bash scripts for running this console
  • src/ - This directory (together with lib) constitutes all the source code for this console

List of non SQL data reading APIs used

GET /status
GET /druid/indexer/v1/supervisor?full
POST /druid/indexer/v1/worker
GET /druid/indexer/v1/workers
GET /druid/indexer/v1/tasks
GET /druid/coordinator/v1/loadqueue?simple
GET /druid/coordinator/v1/config
GET /druid/coordinator/v1/metadata/datasources?includeUnused
GET /druid/coordinator/v1/rules
GET /druid/coordinator/v1/config/compaction
GET /druid/coordinator/v1/tiers