Ignite Web Console Build Instructions
=====================================
1. Install MongoDB (version >=3.2.0 <=3.4.15) using instructions from http://docs.mongodb.org/manual/installation.
2. Install Node.js (version >=8.0.0) using installer from https://nodejs.org/en/download/current for your OS.
3. Change directory to 'modules/web-console/backend' and
 run "npm install --no-optional" for download backend dependencies.
4. Change directory to 'modules/web-console/frontend' and
 run "npm install --no-optional" for download frontend dependencies.
5. Build ignite-web-agent module follow instructions from 'modules/web-console/web-agent/README.txt'.
6. Copy ignite-web-agent-<version>.zip from 'modules/web-console/web-agent/target'
 to 'modules/web-console/backend/agent_dists' folder.

Steps 1 - 4 should be executed once.

Ignite Web Console Run In Development Mode
==========================================
1. Configure MongoDB to run as service or in terminal change dir to $MONGO_INSTALL_DIR/server/3.2/bin
  and start MongoDB by executing "mongod".

2. In new terminal change directory to 'modules/web-console/backend'.
   If needed run "npm install --no-optional" (if dependencies changed) and run "npm start" to start backend.

3. In new terminal change directory to 'modules/web-console/frontend'.
  If needed run "npm install --no-optional" (if dependencies changed) and start webpack in development mode "npm run dev".

4. In browser open: http://localhost:9000

How to migrate model:

1. Model will be upgraded on first start.
2. To downgrade model execute in terminal following command: "./node_modules/.bin/migrate down <migration-name> -d <dbConnectionUri>".
   Example: "./node_modules/.bin/migrate down add_index -d mongodb://localhost/console".


Ignite Web Console Direct-Install Maven Build Instructions
==========================================================
To build direct-install archive from sources run following command in Ignite project root folder:
"mvn clean package -pl :ignite-web-console -am -P web-console,direct-install,lgpl -DskipTests=true -DskipClientDocs -Dmaven.javadoc.skip=true"

Assembled archive can be found here: `modules/web-console/target/ignite-web-console-direct-install-*.zip`.


Ignite Web Console Docker Images Build Instructions
===================================================
Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.

To build docker images from sources run following command in Ignite project root folder:

"mvn clean package -pl :ignite-web-console -am -P web-console,docker-image -DskipTests=true -DskipClientDocs -Dmaven.javadoc.skip=true"

Prepared image can be listed with `docker images` command.


Ignite Web Console Backend Docker Image Build Manual Instructions
====================================================================
Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.

1. Build Apache Ignite Web Agent archive as described in `modules/web-console/web-agent/README.txt`.
2. Goto Web Console's module directory: `cd modules/web-console`
3. Build docker image:

"docker build . -t apacheignite/web-console-backend[:<version>] -f docker/compose/backend/Dockerfile"

Prepared image can be listed in `docker images` command output.


Ignite Web Console Frontend Docker Image Build Manual Instructions
====================================================================
Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.

1. Build Apache Ignite Web Agent archive as described in `modules/web-console/web-agent/README.txt`.
2. Goto Web Console's module directory: `cd modules/web-console`
3. Build docker image:

"docker build . -t apacheignite/web-console-frontend[:<version>] -f docker/compose/frontend/Dockerfile"

Prepared image can be listed in `docker images` command output.


End-to-end tests
================
E2E tests are performed with TestCafe framework - https://testcafe.devexpress.com

To launch tests on your local machine you will need:
1. Install and launch MongoDB.
2. Optionally install Chromium (https://www.chromium.org/getting-involved/download-chromium or https://chromium.woolyss.com).
   You may use any other browser, just set 'BROWSERS' constant in 'modules/web-console/e2e/testcafe/index.js'.
3. In new terminal change directory to 'modules/web-console/e2e/testcafe' folder and execute: "npm install".
4. To start test environment and tests execute: "npm run test".

During developing tests you may need to run some particular tests without running all suites.
For this case you need to run environment and test separately.
To perform it do the following:
1. Ensure that MongoDB is up and running and all dependencies for backend and frontend are installed.
2. Open directory "modules/web-console/e2e/testcafe" in terminal. Install dependencies for E2E testing with "npm install" command.
3. Execute command "npm run env". This will start backend and frontend environment.
4. Open another terminal window and run command "node index.js" in the same directory. This will run only tests without launching environment.

Please refer to TestCafe documentation at https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#skipping-tests
 upon how to specify which particular test should be run or skipped.

You can modify the following params with environment variables:
- DB_URL - connection string to test MongoDB. Default: mongodb://localhost/console-e2e
- APP_URL - URL for test environment applications. Default: http://localhost:9001
- REPORTER - Which "TestCafe" reporter to use. Set to 'teamcity' to use Teamcity reporter. Default: "spec" (native Testcafe reporter)

You can run tests in docker:
1. Install docker and docker-compose.
2. Execute in terminal: "docker-compose up --build --abort-on-container-exit" in directory "modules/web-console/e2e".
3. If you need to cleanup docker container then execute "docker-compose down".


Frontend unit tests
===================
Unit tests are performed with Mocha framework - https://mochajs.org

To launch tests on your local machine you will need:
1. In new terminal change directory to 'modules/web-console/frontend' folder and execute: "npm install".
2. To start test environment and tests execute: "npm run test".


Backend unit tests
==================
Unit tests are performed with Mocha framework - https://mochajs.org

To launch tests on your local machine you will need:
1. In new terminal change directory to 'modules/web-console/backend' folder and execute: "npm install".
2. To start test environment and tests execute: "npm run test".


Web Console settings
====================
Web Console backend could be configured with custom parameters.

See "backend/config/settings.json.sample" for list of parameters with example value.

If you need custom parameters, you will need create "backend/config/settings.json" and adjust values.

Web Console settings for Docker
===============================
Web Console backend could be configured with custom parameters.

You may pass custom parameters with help of "-e" option.

For example: docker run -e "server_disable_signup=true" -p 9090:80 $IMAGE_ID
