cbd9ac8592
Add an E2E test for the common case web console workflow of setting up autocompaction that changes the partitions from dynamic to hashed. Also fix an issue with the async test setup to properly wait for the web console to be ready. |
||
---|---|---|
.. | ||
assets | ||
e2e-tests | ||
lib | ||
script | ||
src | ||
.gitignore | ||
.stylelintrc.json | ||
README.md | ||
babel.config.js | ||
console-config.js | ||
favicon.png | ||
jest.common.config.js | ||
jest.e2e.config.js | ||
jest.unit.config.js | ||
package-lock.json | ||
package.json | ||
pom.xml | ||
sasslint.json | ||
tsconfig.json | ||
tslint.json | ||
unified-console.html | ||
webpack.config.js |
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
- You need to be withing the
web-console
directory - Install the modules with
npm install
- Run
npm start
will start in development mode and will proxy druid requests tolocalhost: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 consolee2e-tests/
- End-to-end tests for the consolelib/
- 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 consolescript/
- Some helper bash scripts for running this consolesrc/
- This directory (together withlib
) constitutes all the source code for this console
Generated/copied dynamically
index.html
- Entry file for the coordinator consolepages/
- The files for the older coordinator consolecoordinator-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:
- Build druid distribution:
script/druid build
- Start druid cluster:
script/druid start
- Run end-to-end tests:
npm run test-e2e
- 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'`