15a0b4ffe2
* Filter http requests by http method Add a config that allows a user which http methods to allow against their Druid server. Druid will only accept http requests with the method: GET, PUT, POST, DELETE and OPTIONS. If a Druid admin wants to allow other methods, they can do so by using the ServerConfig#allowedHttpMethods config. If a Druid user would like to disallow OPTIONS, this can be done by changing the AuthConfig#allowUnauthenticatedHttpOptions config * Exclude OPTIONS from always supported HTTP methods Add HEAD as an allowed method for web console e2e tests * fix docs * fix security IT * Actually fix the web console e2e tests * Ignore icode coverage for nitialization classes * code review |
||
---|---|---|
.. | ||
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'`