druid/web-console
Vadim Ogievetsky 3c8eacb2d4
Web console: improve query manager (convert to React hook) (#10360)
* Better query running

* update licenses

* update tests

* updated tests v2

* fade in cancel

* add exemplary tests

* update mkcomp

* fix inconsistent state update

* remove lastParsedQuery

* work if not a valid literal

* remove unused params

* fix licenses

* better state update

* get error message

* isEmpty tidy

* add tests around error message highlighting

* pull live query selector into a component

* add LiveQueryModeSelector tests

* update snapshots
2020-09-11 19:42:50 -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 add flag to flattenSpec to keep null columns (#9814) 2020-05-08 21:53:39 -07:00
lib Web console: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
script Web console: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
src Web console: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
.gitignore Web console: Better build experience (#8389) 2019-08-24 11:35:30 -07:00
.stylelintrc.json Add scss linter in web console (#7365) 2019-03-28 17:32:01 -07:00
README.md Console E2E test docs (#9864) 2020-05-13 16:41:04 -07:00
babel.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00
console-config.js Web console: Save query context also (#8395) 2019-08-25 16:56:27 -07:00
favicon.png [ImgBot] Optimize images (#7873) 2019-06-24 21:27:48 -07:00
jest.common.config.js split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
jest.e2e.config.js split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -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: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
package.json Web console: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
pom.xml split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
sasslint.json Web-console: add Supervisor statistics table and show json query manager (#8176) 2019-07-30 12:53:46 -07:00
tsconfig.json Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
tslint.json Web console: Improve data loader styling, enforce stricter TS types (#8001) 2019-06-30 19:33:16 -07:00
unified-console.html split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
webpack.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00

README.md

Apache Druid web console

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

How to watch and run for development

  1. You need to be withing the web-console directory
  2. Install the modules with npm install
  3. 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

Description of the directory structure

A lot of the directory structure was created to preserve the existing console structure as much as possible.

As part of this repo:

  • 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 of the file 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

Generated/copied dynamically

  • index.html - Entry file for the coordinator console
  • pages/ - The files for the older coordinator console
  • coordinator-console/ - Files for the coordinator 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

Updating the list of license files

From the web-console directory run script/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

Debugging

Screenshots

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/tutotrial-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. One way of doing this is by using e2e-tests/util/playwright:createBrowserDebug(). For example, the test can be modified to change

import { createBrowserNormal as createBrowser } from './util/playwright'

to

import { createBrowserDebug as createBrowser } from './util/playwright'`