diff --git a/compose.yaml b/compose.yaml index db66954f..84a7296b 100644 --- a/compose.yaml +++ b/compose.yaml @@ -10,6 +10,7 @@ services: environment: - USER_ID=${USER_ID} - TORRUST_INDEX_CONFIG=${TORRUST_INDEX_CONFIG} + - TORRUST_INDEX_DATABASE=${TORRUST_INDEX_DATABASE:-e2e_testing_sqlite3} - TORRUST_INDEX_DATABASE_DRIVER=${TORRUST_INDEX_DATABASE_DRIVER:-sqlite3} - TORRUST_INDEX_TRACKER_API_TOKEN=${TORRUST_INDEX_TRACKER_API_TOKEN:-MyAccessToken} networks: @@ -31,6 +32,7 @@ services: environment: - USER_ID=${USER_ID} - TORRUST_TRACKER_CONFIG=${TORRUST_TRACKER_CONFIG} + - TORRUST_TRACKER_DATABASE=${TORRUST_TRACKER_DATABASE:-e2e_testing_sqlite3} - TORRUST_TRACKER_DATABASE_DRIVER=${TORRUST_TRACKER_DATABASE_DRIVER:-sqlite3} - TORRUST_TRACKER_API_ADMIN_TOKEN=${TORRUST_TRACKER_API_ADMIN_TOKEN:-MyAccessToken} networks: diff --git a/contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh b/contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh index 9db1ca2f..d21e953b 100755 --- a/contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh +++ b/contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh @@ -1,6 +1,5 @@ #!/bin/bash -TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.mysql.toml) \ - TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.container.mysql.toml) \ +TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.mysql.toml) \ + TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.e2e.container.sqlite.toml) \ docker compose down - diff --git a/contrib/dev-tools/container/e2e/mysql/e2e-env-reset.sh b/contrib/dev-tools/container/e2e/mysql/e2e-env-reset.sh deleted file mode 100755 index 75408e4d..00000000 --- a/contrib/dev-tools/container/e2e/mysql/e2e-env-reset.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# Delete the databases and recreate them. - -./contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh - -# Index - -# Database credentials -MYSQL_USER="root" -MYSQL_PASSWORD="root_secret_password" -MYSQL_HOST="localhost" -MYSQL_DATABASE="torrust_index_e2e_testing" - -# Create the MySQL database for the index. Assumes MySQL client is installed. -echo "Creating MySQL database $MYSQL_DATABASE for E2E testing ..." -mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "DROP DATABASE IF EXISTS $MYSQL_DATABASE; CREATE DATABASE $MYSQL_DATABASE;" - -# Tracker - -# Delete tracker database -rm -f ./storage/tracker/lib/database/torrust_tracker_e2e_testing.db - -# Generate storage directory if it does not exist -mkdir -p "./storage/tracker/lib/database" - -# Generate the sqlite database for the tracker if it does not exist -if ! [ -f "./storage/tracker/lib/database/torrust_tracker_e2e_testing.db" ]; then - sqlite3 ./storage/tracker/lib/database/torrust_tracker_e2e_testing.db "VACUUM;" -fi - -./contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh diff --git a/contrib/dev-tools/container/e2e/mysql/e2e-env-restart.sh b/contrib/dev-tools/container/e2e/mysql/e2e-env-restart.sh deleted file mode 100755 index 48163040..00000000 --- a/contrib/dev-tools/container/e2e/mysql/e2e-env-restart.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -./contrib/dev-tools/container/e2e/mysql/e2e-env-downp.sh -./contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh diff --git a/contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh b/contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh index e2af81f8..cb941681 100755 --- a/contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh +++ b/contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh @@ -1,15 +1,16 @@ #!/bin/bash -TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.mysql.toml) \ +TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.mysql.toml) \ docker compose build USER_ID=${USER_ID:-1000} \ - TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.mysql.toml) \ + TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.mysql.toml) \ + TORRUST_INDEX_DATABASE="torrust_index_e2e_testing" \ TORRUST_INDEX_DATABASE_DRIVER="mysql" \ TORRUST_INDEX_TRACKER_API_TOKEN="MyAccessToken" \ TORRUST_INDEX_MYSQL_DATABASE="torrust_index_e2e_testing" \ - TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.container.sqlite3.toml) \ + TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.e2e.container.sqlite3.toml) \ + TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" \ TORRUST_TRACKER_DATABASE_DRIVER="sqlite3" \ TORRUST_TRACKER_API_ADMIN_TOKEN="MyAccessToken" \ - docker compose up -d - + docker compose up --detach --pull always --remove-orphans diff --git a/contrib/dev-tools/container/e2e/mysql/install.sh b/contrib/dev-tools/container/e2e/mysql/install.sh index de8e1cf3..5cbb5a09 100755 --- a/contrib/dev-tools/container/e2e/mysql/install.sh +++ b/contrib/dev-tools/container/e2e/mysql/install.sh @@ -2,14 +2,26 @@ # This script is only intended to be used for E2E testing environment. +## Index + # Database credentials MYSQL_USER="root" MYSQL_PASSWORD="root_secret_password" MYSQL_HOST="127.0.0.1" -MYSQL_DATABASE="torrust_index_e2e_testing" +MYSQL_DATABASE=$TORRUST_INDEX_DATABASE # Create the MySQL database for the index. Assumes MySQL client is installed. # The docker compose configuration already creates the database the first time # the container is created. -echo "Creating MySQL database $MYSQL_DATABASE for for E2E testing ..." +echo "Creating MySQL database '$MYSQL_DATABASE' for for E2E testing ..." MYSQL_PWD=$MYSQL_PASSWORD mysql -h $MYSQL_HOST -u $MYSQL_USER -e "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE;" + +## Tracker + +# Generate the Tracker sqlite database directory and file if it does not exist +mkdir -p ./storage/tracker/lib/database + +if ! [ -f "./storage/tracker/lib/database/${TORRUST_TRACKER_DATABASE}.db" ]; then + echo "Creating tracker database '${TORRUST_TRACKER_DATABASE}.db'" + sqlite3 "./storage/tracker/lib/database/${TORRUST_TRACKER_DATABASE}.db" "VACUUM;" +fi diff --git a/contrib/dev-tools/container/e2e/mysql/run-e2e-tests.sh b/contrib/dev-tools/container/e2e/mysql/run-e2e-tests.sh index 03f23079..74bf602b 100755 --- a/contrib/dev-tools/container/e2e/mysql/run-e2e-tests.sh +++ b/contrib/dev-tools/container/e2e/mysql/run-e2e-tests.sh @@ -10,6 +10,9 @@ TORRUST_TRACKER_USER_UID=$CURRENT_USER_ID export USER_ID export TORRUST_TRACKER_USER_UID +export TORRUST_INDEX_DATABASE="torrust_index_e2e_testing" +export TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" + # Install tool to create torrent files. # It's needed by some tests to generate and parse test torrent files. cargo install imdl || exit 1 @@ -38,7 +41,7 @@ docker ps ./contrib/dev-tools/container/e2e/mysql/install.sh || exit 1 # Run E2E tests with shared app instance -TORRUST_INDEX_E2E_SHARED=true TORRUST_INDEX_E2E_PATH_CONFIG="./share/default/config/index.container.mysql.toml" cargo test || exit 1 +TORRUST_INDEX_E2E_SHARED=true TORRUST_INDEX_E2E_PATH_CONFIG="./share/default/config/index.e2e.container.mysql.toml" cargo test || exit 1 # Stop E2E testing environment ./contrib/dev-tools/container/e2e/mysql/e2e-env-down.sh || exit 1 diff --git a/contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh b/contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh index 1a2aebed..74ed5e77 100755 --- a/contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh +++ b/contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh @@ -1,5 +1,5 @@ #!/bin/bash -TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.sqlite3.toml) \ - TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.container.sqlite3.toml) \ +TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.sqlite3.toml) \ + TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.e2e.container.sqlite3.toml) \ docker compose down diff --git a/contrib/dev-tools/container/e2e/sqlite/e2e-env-reset.sh b/contrib/dev-tools/container/e2e/sqlite/e2e-env-reset.sh deleted file mode 100755 index e5890ac1..00000000 --- a/contrib/dev-tools/container/e2e/sqlite/e2e-env-reset.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Delete the databases and recreate them. - -./contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh - -rm -f ./storage/database/torrust_index_e2e_testing.db -rm -f ./storage/tracker/lib/database/torrust_tracker_e2e_testing.db - -# Generate storage directory if it does not exist -mkdir -p "./storage/database" - -# Generate the sqlite database for the index if it does not exist -if ! [ -f "./storage/database/torrust_index_e2e_testing.db" ]; then - sqlite3 ./storage/database/torrust_index_e2e_testing.db "VACUUM;" -fi - -# Generate the sqlite database for the tracker if it does not exist -if ! [ -f "./storage/tracker/lib/database/torrust_tracker_e2e_testing.db" ]; then - sqlite3 ./storage/tracker/lib/database/torrust_tracker_e2e_testing.db "VACUUM;" -fi - -./contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh diff --git a/contrib/dev-tools/container/e2e/sqlite/e2e-env-restart.sh b/contrib/dev-tools/container/e2e/sqlite/e2e-env-restart.sh deleted file mode 100755 index 7a9e55d2..00000000 --- a/contrib/dev-tools/container/e2e/sqlite/e2e-env-restart.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -./contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh -./contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh diff --git a/contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh b/contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh index 7d2d224f..952d1738 100755 --- a/contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh +++ b/contrib/dev-tools/container/e2e/sqlite/e2e-env-up.sh @@ -1,14 +1,15 @@ #!/bin/bash -TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.sqlite3.toml) \ +TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.sqlite3.toml) \ docker compose build USER_ID=${USER_ID:-1000} \ - TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.container.sqlite3.toml) \ + TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.e2e.container.sqlite3.toml) \ + TORRUST_INDEX_DATABASE="e2e_testing_sqlite3" \ TORRUST_INDEX_DATABASE_DRIVER="sqlite3" \ TORRUST_INDEX_TRACKER_API_TOKEN="MyAccessToken" \ - TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.container.sqlite3.toml) \ + TORRUST_TRACKER_CONFIG=$(cat ./share/default/config/tracker.e2e.container.sqlite3.toml) \ + TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" \ TORRUST_TRACKER_DATABASE_DRIVER="sqlite3" \ TORRUST_TRACKER_API_ADMIN_TOKEN="MyAccessToken" \ - docker compose up -d - + docker compose up --detach --pull always --remove-orphans diff --git a/contrib/dev-tools/container/e2e/sqlite/install.sh b/contrib/dev-tools/container/e2e/sqlite/install.sh index a1b800e6..24bb5cd7 100755 --- a/contrib/dev-tools/container/e2e/sqlite/install.sh +++ b/contrib/dev-tools/container/e2e/sqlite/install.sh @@ -2,12 +2,22 @@ # This script is only intended to be used for E2E testing environment. -# Generate storage directory if it does not exist +## Index + +# Generate the Index sqlite database directory and file if it does not exist mkdir -p ./storage/index/lib/database -# Generate the sqlite database if it does not exist -if ! [ -f "./storage/index/lib/database/sqlite3.db" ]; then - # todo: it should get the path from tracker.toml and only do it when we use sqlite - sqlite3 ./storage/index/lib/database/sqlite3.db "VACUUM;" +if ! [ -f "./storage/index/lib/database/${TORRUST_INDEX_DATABASE}.db" ]; then + echo "Creating index database '${TORRUST_INDEX_DATABASE}.db'" + sqlite3 "./storage/index/lib/database/${TORRUST_INDEX_DATABASE}.db" "VACUUM;" fi +## Tracker + +# Generate the Tracker sqlite database directory and file if it does not exist +mkdir -p ./storage/tracker/lib/database + +if ! [ -f "./storage/tracker/lib/database/${TORRUST_TRACKER_DATABASE}.db" ]; then + echo "Creating tracker database '${TORRUST_TRACKER_DATABASE}.db'" + sqlite3 "./storage/tracker/lib/database/${TORRUST_TRACKER_DATABASE}.db" "VACUUM;" +fi diff --git a/contrib/dev-tools/container/e2e/sqlite/run-e2e-tests.sh b/contrib/dev-tools/container/e2e/sqlite/run-e2e-tests.sh index afedc5f6..d6d38f60 100755 --- a/contrib/dev-tools/container/e2e/sqlite/run-e2e-tests.sh +++ b/contrib/dev-tools/container/e2e/sqlite/run-e2e-tests.sh @@ -10,6 +10,9 @@ TORRUST_TRACKER_USER_UID=$CURRENT_USER_ID export USER_ID export TORRUST_TRACKER_USER_UID +export TORRUST_INDEX_DATABASE="e2e_testing_sqlite3" +export TORRUST_TRACKER_DATABASE="e2e_testing_sqlite3" + # Install tool to create torrent files. # It's needed by some tests to generate and parse test torrent files. cargo install imdl || exit 1 @@ -36,7 +39,7 @@ sleep 20s docker ps # Run E2E tests with shared app instance -TORRUST_INDEX_E2E_SHARED=true TORRUST_INDEX_E2E_PATH_CONFIG="./share/default/config/index.container.sqlite3.toml" cargo test || exit 1 +TORRUST_INDEX_E2E_SHARED=true TORRUST_INDEX_E2E_PATH_CONFIG="./share/default/config/index.e2e.container.sqlite3.toml" cargo test || exit 1 # Stop E2E testing environment ./contrib/dev-tools/container/e2e/sqlite/e2e-env-down.sh || exit 1 diff --git a/contrib/dev-tools/init/install-local.sh b/contrib/dev-tools/init/install-local.sh deleted file mode 100755 index 7c37a06f..00000000 --- a/contrib/dev-tools/init/install-local.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# This script is only intended to be used for local development or testing environments. - -# Generate storage directory if it does not exist -mkdir -p ./storage/index/lib/database - -# Generate the sqlite database if it does not exist -if ! [ -f "./storage/index/lib/database/sqlite3.db" ]; then - # todo: it should get the path from tracker.toml and only do it when we use sqlite - sqlite3 ./storage/index/lib/database/sqlite3.db "VACUUM;" -fi - diff --git a/share/default/config/index.container.mysql.toml b/share/default/config/index.container.mysql.toml index c7b4c33c..9857d6ae 100644 --- a/share/default/config/index.container.mysql.toml +++ b/share/default/config/index.container.mysql.toml @@ -24,7 +24,7 @@ max_password_length = 64 secret_key = "MaxVerstappenWC2021" [database] -connect_url = "mysql://root:root_secret_password@mysql:3306/torrust_index_e2e_testing" +connect_url = "mysql://root:root_secret_password@mysql:3306/torrust_index" [mail] email_verification_enabled = false diff --git a/share/default/config/index.e2e.container.mysql.toml b/share/default/config/index.e2e.container.mysql.toml new file mode 100644 index 00000000..c7b4c33c --- /dev/null +++ b/share/default/config/index.e2e.container.mysql.toml @@ -0,0 +1,51 @@ +log_level = "info" + +[website] +name = "Torrust" + +# Please override the tracker token setting the +# `TORRUST_INDEX_TRACKER_API_TOKEN` +# environmental variable! + +[tracker] +url = "udp://tracker:6969" +mode = "Public" +api_url = "http://tracker:1212" +token = "MyAccessToken" +token_valid_seconds = 7257600 + +[net] +port = 3001 + +[auth] +email_on_signup = "Optional" +min_password_length = 6 +max_password_length = 64 +secret_key = "MaxVerstappenWC2021" + +[database] +connect_url = "mysql://root:root_secret_password@mysql:3306/torrust_index_e2e_testing" + +[mail] +email_verification_enabled = false +from = "example@email.com" +reply_to = "noreply@email.com" +username = "" +password = "" +server = "mailcatcher" +port = 1025 + +[image_cache] +max_request_timeout_ms = 1000 +capacity = 128000000 +entry_size_limit = 4000000 +user_quota_period_seconds = 3600 +user_quota_bytes = 64000000 + +[api] +default_torrent_page_size = 10 +max_torrent_page_size = 30 + +[tracker_statistics_importer] +torrent_info_update_interval = 3600 +port = 3002 \ No newline at end of file diff --git a/share/default/config/index.e2e.container.sqlite3.toml b/share/default/config/index.e2e.container.sqlite3.toml new file mode 100644 index 00000000..ec15023b --- /dev/null +++ b/share/default/config/index.e2e.container.sqlite3.toml @@ -0,0 +1,51 @@ +log_level = "info" + +[website] +name = "Torrust" + +# Please override the tracker token setting the +# `TORRUST_INDEX_TRACKER_API_TOKEN` +# environmental variable! + +[tracker] +url = "udp://tracker:6969" +mode = "Public" +api_url = "http://tracker:1212" +token = "MyAccessToken" +token_valid_seconds = 7257600 + +[net] +port = 3001 + +[auth] +email_on_signup = "Optional" +min_password_length = 6 +max_password_length = 64 +secret_key = "MaxVerstappenWC2021" + +[database] +connect_url = "sqlite:///var/lib/torrust/index/database/e2e_testing_sqlite3.db?mode=rwc" + +[mail] +email_verification_enabled = false +from = "example@email.com" +reply_to = "noreply@email.com" +username = "" +password = "" +server = "mailcatcher" +port = 1025 + +[image_cache] +max_request_timeout_ms = 1000 +capacity = 128000000 +entry_size_limit = 4000000 +user_quota_period_seconds = 3600 +user_quota_bytes = 64000000 + +[api] +default_torrent_page_size = 10 +max_torrent_page_size = 30 + +[tracker_statistics_importer] +torrent_info_update_interval = 3600 +port = 3002 \ No newline at end of file diff --git a/share/default/config/tracker.e2e.container.sqlite3.toml b/share/default/config/tracker.e2e.container.sqlite3.toml new file mode 100644 index 00000000..67605293 --- /dev/null +++ b/share/default/config/tracker.e2e.container.sqlite3.toml @@ -0,0 +1,38 @@ +announce_interval = 120 +db_driver = "Sqlite3" +db_path = "/var/lib/torrust/tracker/database/e2e_testing_sqlite3.db" +external_ip = "0.0.0.0" +inactive_peer_cleanup_interval = 600 +log_level = "info" +max_peer_timeout = 900 +min_announce_interval = 120 +mode = "public" +on_reverse_proxy = false +persistent_torrent_completed_stat = false +remove_peerless_torrents = true +tracker_usage_statistics = true + +[[udp_trackers]] +bind_address = "0.0.0.0:6969" +enabled = false + +[[http_trackers]] +bind_address = "0.0.0.0:7070" +enabled = false +ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt" +ssl_enabled = false +ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key" + +[http_api] +bind_address = "0.0.0.0:1212" +enabled = true +ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt" +ssl_enabled = false +ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key" + +# Please override the admin token setting the +# `TORRUST_TRACKER_API_ADMIN_TOKEN` +# environmental variable! + +[http_api.access_tokens] +admin = "MyAccessToken" diff --git a/tests/e2e/environment.rs b/tests/e2e/environment.rs index 1c20ca26..a39873a2 100644 --- a/tests/e2e/environment.rs +++ b/tests/e2e/environment.rs @@ -132,11 +132,11 @@ impl TestEnv { /// /// For: /// - /// `sqlite:///var/lib/torrust/index/database/sqlite3.db?mode=rwc`. + /// `sqlite:///var/lib/torrust/index/database/e2e_testing_sqlite3.db?mode=rwc`. /// /// It changes the `mysql` host name to `localhost`: /// - /// `sqlite://./storage/index/lib/database/sqlite3.db?mode=rwc`. + /// `sqlite://./storage/index/lib/database/e2e_testing_sqlite3.db?mode=rwc`. /// /// For E2E tests, we use docker compose. Inside the container, the /// `SQLite` file path is not the same as the host path.