Corrections on testing and behaviors

This commit is contained in:
Adam Outler
2025-10-31 22:47:35 +00:00
parent 8edef9e852
commit a6bc96d2dd
6 changed files with 944 additions and 46 deletions

View File

@@ -1,4 +1,4 @@
Starting Docker Compose Tests - Fri Oct 31 20:00:39 UTC 2025
Starting Docker Compose Tests - Fri Oct 31 22:34:52 UTC 2025
==========================================
File: docker-compose.missing-caps.yml
----------------------------------------
@@ -46,8 +46,6 @@ netalertx-test-readonly | --> user netalertx
netalertx-test-readonly | --> user netalertx
netalertx-test-readonly | --> host mode network
netalertx-test-readonly | --> layer 2 capabilities
netalertx-test-readonly | --> excessive capabilities
netalertx-test-readonly | excessive capabilities: FAILED with 2
netalertx-test-readonly | --> excessive capabilities
netalertx-test-readonly | --> appliance integrity
netalertx-test-readonly | --> ports available
@@ -65,7 +63,43 @@ netalertx-test-readonly | may fail to start.
netalertx-test-readonly | may fail to start.
netalertx-test-readonly |
netalertx-test-readonly | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | Container startup checks failed with exit code 1.
netalertx-test-readonly | NETALERTX_DEBUG is set to 1, will not shut down other services if one fails.
netalertx-test-readonly | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-readonly | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-readonly | php-fpm stopped! (exit 1)
netalertx-test-readonly | Crond stopped! (exit 1)
netalertx-test-readonly | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-readonly exited with code 0
netalertx-test-readonly | --> first run config
netalertx-test-readonly | --> first run db
netalertx-test-readonly | --> mandatory folders
netalertx-test-readonly | --> writable config
netalertx-test-readonly | --> nginx config
netalertx-test-readonly | nginx config: FAILED with 1
netalertx-test-readonly | Failure detected in: /entrypoint.d/35-nginx-config.sh
netalertx-test-readonly | --> user netalertx
netalertx-test-readonly | --> host mode network
netalertx-test-readonly | --> layer 2 capabilities
netalertx-test-readonly | --> excessive capabilities
netalertx-test-readonly | --> appliance integrity
netalertx-test-readonly | --> ports available
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | ⚠️ Port Warning: Application port 20211 is already in use.
netalertx-test-readonly |
netalertx-test-readonly | The main application (defined by $PORT) may fail to start.
netalertx-test-readonly |
netalertx-test-readonly | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-readonly |
netalertx-test-readonly | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-readonly | may fail to start.
netalertx-test-readonly |
netalertx-test-readonly | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | Container startup checks failed with exit code 1.
netalertx-test-readonly | NETALERTX_DEBUG is set to 1, will not shut down other services if one fails.
@@ -84,8 +118,6 @@ netalertx-test-readonly | --> user netalertx
netalertx-test-readonly | nginx config: FAILED with 1
netalertx-test-readonly | Failure detected in: /entrypoint.d/35-nginx-config.sh
netalertx-test-readonly | --> user netalertx
netalertx-test-readonly | --> layer 2 capabilities
netalertx-test-readonly | --> excessive capabilities
netalertx-test-readonly | --> host mode network
netalertx-test-readonly | --> layer 2 capabilities
netalertx-test-readonly | --> excessive capabilities
@@ -103,13 +135,14 @@ netalertx-test-readonly | may fail to start.
netalertx-test-readonly |
netalertx-test-readonly | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-readonly | may fail to start.
netalertx-test-readonly | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-readonly |
netalertx-test-readonly | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-readonly | Container startup checks failed with exit code 2.
netalertx-test-readonly | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-readonly | Container startup checks failed with exit code 1.
netalertx-test-readonly | NETALERTX_DEBUG is set to 1, will not shut down other services if one fails.
netalertx-test-readonly | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-readonly | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-readonly | Crond stopped! (exit 1)
netalertx-test-readonly | php-fpm stopped! (exit 1)
netalertx-test-readonly | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
@@ -120,6 +153,66 @@ Testing: docker-compose.writable.yml
File: docker-compose.writable.yml
----------------------------------------
Testing: docker-compose.writable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations
Running docker-compose up...
Attaching to netalertx-test-writable
netalertx-test-writable | 
netalertx-test-writable | _ _ _ ___ _ _ __ __
netalertx-test-writable | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-writable | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-writable | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-writable | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-writable | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-writable |
netalertx-test-writable |  Network intruder and presence detector.
netalertx-test-writable | https://netalertx.com
netalertx-test-writable |
netalertx-test-writable |
netalertx-test-writable | Startup pre-checks
netalertx-test-writable | --> storage permission
netalertx-test-writable | --> mounts.py
netalertx-test-writable | --> first run config
netalertx-test-writable | --> first run db
netalertx-test-writable | --> mandatory folders
netalertx-test-writable | * Creating Plugins log.
netalertx-test-writable | * Creating System services run log.
netalertx-test-writable | * Creating System services run tmp.
netalertx-test-writable | * Creating DB locked log.
netalertx-test-writable | * Creating Execution queue log.
netalertx-test-writable | --> writable config
netalertx-test-writable | --> nginx config
netalertx-test-writable | --> user netalertx
netalertx-test-writable | --> host mode network
netalertx-test-writable | --> layer 2 capabilities
netalertx-test-writable | --> excessive capabilities
netalertx-test-writable | --> appliance integrity
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-writable |
netalertx-test-writable | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-writable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | --> ports available
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | ⚠️ Port Warning: Application port 20211 is already in use.
netalertx-test-writable |
netalertx-test-writable | The main application (defined by $PORT) may fail to start.
netalertx-test-writable |
netalertx-test-writable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-writable |
netalertx-test-writable | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-writable | may fail to start.
netalertx-test-writable |
netalertx-test-writable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-writable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable | NETALERTX_DEBUG is set to 1, will not shut down other services if one fails.
netalertx-test-writable | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-writable | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-writable | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-writable | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-writable | nginx stopped! (exit 1)
@@ -134,17 +227,778 @@ Testing: docker-compose.mount-test.active_config_mounted.yml
- No configuration warnings for nginx config path
- Custom PORT configuration should work when nginx config is writable
Testing: docker-compose.mount-test.active_config_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-active_config_mounted
netalertx-test-mount-active_config_mounted | 
netalertx-test-mount-active_config_mounted | _ _ _ ___ _ _ __ __
netalertx-test-mount-active_config_mounted | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-active_config_mounted | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-active_config_mounted | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-active_config_mounted | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-active_config_mounted | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted |  Network intruder and presence detector.
netalertx-test-mount-active_config_mounted | https://netalertx.com
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted | Startup pre-checks
netalertx-test-mount-active_config_mounted | --> storage permission
netalertx-test-mount-active_config_mounted | --> mounts.py
netalertx-test-mount-active_config_mounted | --> first run config
netalertx-test-mount-active_config_mounted | --> first run db
netalertx-test-mount-active_config_mounted | --> mandatory folders
netalertx-test-mount-active_config_mounted | * Creating Plugins log.
netalertx-test-mount-active_config_mounted | * Creating System services run log.
netalertx-test-mount-active_config_mounted | * Creating System services run tmp.
netalertx-test-mount-active_config_mounted | * Creating DB locked log.
netalertx-test-mount-active_config_mounted | * Creating Execution queue log.
netalertx-test-mount-active_config_mounted | --> writable config
netalertx-test-mount-active_config_mounted | --> nginx config
netalertx-test-mount-active_config_mounted | nginx config: FAILED with 1
netalertx-test-mount-active_config_mounted | Failure detected in: /entrypoint.d/35-nginx-config.sh
netalertx-test-mount-active_config_mounted | --> user netalertx
netalertx-test-mount-active_config_mounted | --> host mode network
netalertx-test-mount-active_config_mounted | --> layer 2 capabilities
netalertx-test-mount-active_config_mounted | --> excessive capabilities
netalertx-test-mount-active_config_mounted | --> appliance integrity
netalertx-test-mount-active_config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-active_config_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted | --> ports available
netalertx-test-mount-active_config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-active_config_mounted | may fail to start.
netalertx-test-mount-active_config_mounted |
netalertx-test-mount-active_config_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-active_config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted | Container startup checks failed with exit code 1.
netalertx-test-mount-active_config_mounted | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_mounted | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-active_config_mounted | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-active_config_mounted | Successfully updated IEEE OUI database (111620 entries)
File: docker-compose.mount-test.active_config_no-mount.yml
==========================================
Expected outcome: Container shows warning about missing nginx config mount
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as not mounted
File: docker-compose.mount-test.active_config_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error for nginx config directory
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as not mounted
- Mount error since nginx config directory should be mounted for custom config
- Container may show warnings about nginx config but should continue
Testing: docker-compose.mount-test.active_config_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-active_config_no-mount
netalertx-test-mount-active_config_no-mount | 
netalertx-test-mount-active_config_no-mount | _ _ _ ___ _ _ __ __
netalertx-test-mount-active_config_no-mount | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-active_config_no-mount | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-active_config_no-mount | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-active_config_no-mount | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-active_config_no-mount | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount |  Network intruder and presence detector.
netalertx-test-mount-active_config_no-mount | https://netalertx.com
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount | Startup pre-checks
netalertx-test-mount-active_config_no-mount | --> storage permission
netalertx-test-mount-active_config_no-mount | --> mounts.py
netalertx-test-mount-active_config_no-mount | --> first run config
netalertx-test-mount-active_config_no-mount | --> first run db
netalertx-test-mount-active_config_no-mount | --> mandatory folders
netalertx-test-mount-active_config_no-mount | * Creating Plugins log.
netalertx-test-mount-active_config_no-mount | * Creating System services run log.
netalertx-test-mount-active_config_no-mount | * Creating System services run tmp.
netalertx-test-mount-active_config_no-mount | * Creating DB locked log.
netalertx-test-mount-active_config_no-mount | * Creating Execution queue log.
netalertx-test-mount-active_config_no-mount | --> writable config
netalertx-test-mount-active_config_no-mount | --> nginx config
netalertx-test-mount-active_config_no-mount | nginx config: FAILED with 1
netalertx-test-mount-active_config_no-mount | Failure detected in: /entrypoint.d/35-nginx-config.sh
netalertx-test-mount-active_config_no-mount | --> user netalertx
netalertx-test-mount-active_config_no-mount | --> host mode network
netalertx-test-mount-active_config_no-mount | --> layer 2 capabilities
netalertx-test-mount-active_config_no-mount | --> excessive capabilities
netalertx-test-mount-active_config_no-mount | --> appliance integrity
netalertx-test-mount-active_config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-active_config_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount | --> ports available
netalertx-test-mount-active_config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-active_config_no-mount | may fail to start.
netalertx-test-mount-active_config_no-mount |
netalertx-test-mount-active_config_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-active_config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount | Container startup checks failed with exit code 1.
netalertx-test-mount-active_config_no-mount | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_no-mount | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-active_config_no-mount | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-active_config_no-mount | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.active_config_ramdisk.yml
----------------------------------------
Expected outcome: Container shows performance warning for nginx config on RAM disk
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as mounted on tmpfs (RAM disk)
- Performance issue warning since nginx config should be persistent
- Custom PORT configuration may have performance implications
Testing: docker-compose.mount-test.active_config_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-active_config_ramdisk
netalertx-test-mount-active_config_ramdisk | 
netalertx-test-mount-active_config_ramdisk | _ _ _ ___ _ _ __ __
netalertx-test-mount-active_config_ramdisk | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-active_config_ramdisk | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-active_config_ramdisk | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-active_config_ramdisk | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-active_config_ramdisk | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk |  Network intruder and presence detector.
netalertx-test-mount-active_config_ramdisk | https://netalertx.com
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk | Startup pre-checks
netalertx-test-mount-active_config_ramdisk | --> storage permission
netalertx-test-mount-active_config_ramdisk | --> mounts.py
netalertx-test-mount-active_config_ramdisk | --> first run config
netalertx-test-mount-active_config_ramdisk | --> first run db
netalertx-test-mount-active_config_ramdisk | --> mandatory folders
netalertx-test-mount-active_config_ramdisk | * Creating Plugins log.
netalertx-test-mount-active_config_ramdisk | * Creating System services run log.
netalertx-test-mount-active_config_ramdisk | * Creating System services run tmp.
netalertx-test-mount-active_config_ramdisk | * Creating DB locked log.
netalertx-test-mount-active_config_ramdisk | * Creating Execution queue log.
netalertx-test-mount-active_config_ramdisk | --> writable config
netalertx-test-mount-active_config_ramdisk | --> nginx config
netalertx-test-mount-active_config_ramdisk | --> user netalertx
netalertx-test-mount-active_config_ramdisk | --> host mode network
netalertx-test-mount-active_config_ramdisk | --> layer 2 capabilities
netalertx-test-mount-active_config_ramdisk | --> excessive capabilities
netalertx-test-mount-active_config_ramdisk | --> appliance integrity
netalertx-test-mount-active_config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-active_config_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk | --> ports available
netalertx-test-mount-active_config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-active_config_ramdisk | may fail to start.
netalertx-test-mount-active_config_ramdisk |
netalertx-test-mount-active_config_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-active_config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-active_config_ramdisk | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_ramdisk | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-active_config_ramdisk | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-active_config_ramdisk | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.active_config_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable nginx config partition
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as mounted but unwritable (❌ in Writeable column)
- 35-nginx-config.sh detects permission error and exits with code 1
- Container startup fails because nginx configuration cannot be written for custom ports
Testing: docker-compose.mount-test.active_config_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-active_config_unwritable
netalertx-test-mount-active_config_unwritable | 
netalertx-test-mount-active_config_unwritable | _ _ _ ___ _ _ __ __
netalertx-test-mount-active_config_unwritable | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-active_config_unwritable | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-active_config_unwritable | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-active_config_unwritable | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-active_config_unwritable | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable |  Network intruder and presence detector.
netalertx-test-mount-active_config_unwritable | https://netalertx.com
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable | Startup pre-checks
netalertx-test-mount-active_config_unwritable | --> storage permission
netalertx-test-mount-active_config_unwritable | --> mounts.py
netalertx-test-mount-active_config_unwritable | --> first run config
netalertx-test-mount-active_config_unwritable | --> first run db
netalertx-test-mount-active_config_unwritable | --> mandatory folders
netalertx-test-mount-active_config_unwritable | * Creating Plugins log.
netalertx-test-mount-active_config_unwritable | * Creating System services run log.
netalertx-test-mount-active_config_unwritable | * Creating System services run tmp.
netalertx-test-mount-active_config_unwritable | * Creating DB locked log.
netalertx-test-mount-active_config_unwritable | * Creating Execution queue log.
netalertx-test-mount-active_config_unwritable | --> writable config
netalertx-test-mount-active_config_unwritable | --> nginx config
netalertx-test-mount-active_config_unwritable | nginx config: FAILED with 1
netalertx-test-mount-active_config_unwritable | Failure detected in: /entrypoint.d/35-nginx-config.sh
netalertx-test-mount-active_config_unwritable | --> user netalertx
netalertx-test-mount-active_config_unwritable | --> host mode network
netalertx-test-mount-active_config_unwritable | --> layer 2 capabilities
netalertx-test-mount-active_config_unwritable | --> excessive capabilities
netalertx-test-mount-active_config_unwritable | --> appliance integrity
netalertx-test-mount-active_config_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-active_config_unwritable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable | --> ports available
netalertx-test-mount-active_config_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-active_config_unwritable | may fail to start.
netalertx-test-mount-active_config_unwritable |
netalertx-test-mount-active_config_unwritable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-active_config_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable | Container startup checks failed with exit code 1.
netalertx-test-mount-active_config_unwritable | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_unwritable | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-active_config_unwritable | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-active_config_unwritable | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.api_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper API mount
- NETALERTX_API shows as writable and mounted
- No configuration warnings for API path
- API data persistence works correctly
Testing: docker-compose.mount-test.api_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-api_mounted
netalertx-test-mount-api_mounted | 
netalertx-test-mount-api_mounted | _ _ _ ___ _ _ __ __
netalertx-test-mount-api_mounted | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-api_mounted | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-api_mounted | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-api_mounted | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-api_mounted | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted |  Network intruder and presence detector.
netalertx-test-mount-api_mounted | https://netalertx.com
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted | Startup pre-checks
netalertx-test-mount-api_mounted | --> storage permission
netalertx-test-mount-api_mounted | --> mounts.py
netalertx-test-mount-api_mounted | --> first run config
netalertx-test-mount-api_mounted | --> first run db
netalertx-test-mount-api_mounted | --> mandatory folders
netalertx-test-mount-api_mounted | * Creating Plugins log.
netalertx-test-mount-api_mounted | * Creating System services run log.
netalertx-test-mount-api_mounted | * Creating System services run tmp.
netalertx-test-mount-api_mounted | * Creating DB locked log.
netalertx-test-mount-api_mounted | * Creating Execution queue log.
netalertx-test-mount-api_mounted | --> writable config
netalertx-test-mount-api_mounted | --> nginx config
netalertx-test-mount-api_mounted | --> user netalertx
netalertx-test-mount-api_mounted | --> host mode network
netalertx-test-mount-api_mounted | --> layer 2 capabilities
netalertx-test-mount-api_mounted | --> excessive capabilities
netalertx-test-mount-api_mounted | --> appliance integrity
netalertx-test-mount-api_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-api_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted | --> ports available
netalertx-test-mount-api_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-api_mounted | may fail to start.
netalertx-test-mount-api_mounted |
netalertx-test-mount-api_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-api_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-api_mounted | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_mounted | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-api_mounted | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-api_mounted | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.api_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error for API directory
- NETALERTX_API shows as not mounted
- Mount error since API directory should be mounted for proper operation
- API functionality may be limited
Testing: docker-compose.mount-test.api_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-api_no-mount
netalertx-test-mount-api_no-mount | 
netalertx-test-mount-api_no-mount | _ _ _ ___ _ _ __ __
netalertx-test-mount-api_no-mount | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-api_no-mount | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-api_no-mount | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-api_no-mount | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-api_no-mount | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount |  Network intruder and presence detector.
netalertx-test-mount-api_no-mount | https://netalertx.com
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount | Startup pre-checks
netalertx-test-mount-api_no-mount | --> storage permission
netalertx-test-mount-api_no-mount | --> mounts.py
netalertx-test-mount-api_no-mount | --> first run config
netalertx-test-mount-api_no-mount | --> first run db
netalertx-test-mount-api_no-mount | --> mandatory folders
netalertx-test-mount-api_no-mount | * Creating Plugins log.
netalertx-test-mount-api_no-mount | * Creating System services run log.
netalertx-test-mount-api_no-mount | * Creating System services run tmp.
netalertx-test-mount-api_no-mount | * Creating DB locked log.
netalertx-test-mount-api_no-mount | * Creating Execution queue log.
netalertx-test-mount-api_no-mount | --> writable config
netalertx-test-mount-api_no-mount | --> nginx config
netalertx-test-mount-api_no-mount | --> user netalertx
netalertx-test-mount-api_no-mount | --> host mode network
netalertx-test-mount-api_no-mount | --> layer 2 capabilities
netalertx-test-mount-api_no-mount | --> excessive capabilities
netalertx-test-mount-api_no-mount | --> appliance integrity
netalertx-test-mount-api_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-api_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount | --> ports available
netalertx-test-mount-api_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-api_no-mount | may fail to start.
netalertx-test-mount-api_no-mount |
netalertx-test-mount-api_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-api_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_no-mount | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-api_no-mount | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-api_no-mount | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-api_no-mount | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.api_ramdisk.yml
----------------------------------------
Expected outcome: Container shows performance warning for API on RAM disk
- NETALERTX_API shows as mounted on tmpfs (RAM disk)
- Performance issue warning since API data should be on persistent storage
- API data will be lost on container restart
Testing: docker-compose.mount-test.api_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-api_ramdisk
netalertx-test-mount-api_ramdisk | 
netalertx-test-mount-api_ramdisk | _ _ _ ___ _ _ __ __
netalertx-test-mount-api_ramdisk | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-api_ramdisk | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-api_ramdisk | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-api_ramdisk | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-api_ramdisk | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk |  Network intruder and presence detector.
netalertx-test-mount-api_ramdisk | https://netalertx.com
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk | Startup pre-checks
netalertx-test-mount-api_ramdisk | --> storage permission
netalertx-test-mount-api_ramdisk | --> mounts.py
netalertx-test-mount-api_ramdisk | --> first run config
netalertx-test-mount-api_ramdisk | --> first run db
netalertx-test-mount-api_ramdisk | --> mandatory folders
netalertx-test-mount-api_ramdisk | * Creating Plugins log.
netalertx-test-mount-api_ramdisk | * Creating System services run log.
netalertx-test-mount-api_ramdisk | * Creating System services run tmp.
netalertx-test-mount-api_ramdisk | * Creating DB locked log.
netalertx-test-mount-api_ramdisk | * Creating Execution queue log.
netalertx-test-mount-api_ramdisk | --> writable config
netalertx-test-mount-api_ramdisk | --> nginx config
netalertx-test-mount-api_ramdisk | --> user netalertx
netalertx-test-mount-api_ramdisk | --> host mode network
netalertx-test-mount-api_ramdisk | --> layer 2 capabilities
netalertx-test-mount-api_ramdisk | --> excessive capabilities
netalertx-test-mount-api_ramdisk | --> appliance integrity
netalertx-test-mount-api_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-api_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk | --> ports available
netalertx-test-mount-api_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-api_ramdisk | may fail to start.
netalertx-test-mount-api_ramdisk |
netalertx-test-mount-api_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-api_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_ramdisk | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-api_ramdisk | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-api_ramdisk | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-api_ramdisk | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.api_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable API partition
- NETALERTX_API shows as mounted but unwritable (❌ in Writeable column)
- API directory must be writable for proper operation
- Container startup fails because API functionality cannot work without write access
Testing: docker-compose.mount-test.api_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-api_unwritable
netalertx-test-mount-api_unwritable | 
netalertx-test-mount-api_unwritable | _ _ _ ___ _ _ __ __
netalertx-test-mount-api_unwritable | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-api_unwritable | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-api_unwritable | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-api_unwritable | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-api_unwritable | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable |  Network intruder and presence detector.
netalertx-test-mount-api_unwritable | https://netalertx.com
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable | Startup pre-checks
netalertx-test-mount-api_unwritable | --> storage permission
netalertx-test-mount-api_unwritable | --> mounts.py
netalertx-test-mount-api_unwritable | Path | Writeable | Mount | RAMDisk | Performance | DataLoss
netalertx-test-mount-api_unwritable | ------------------------------------+-----------+-------+---------+-------------+----------
netalertx-test-mount-api_unwritable | /app/db | ✅ | ✅ | | | ✅
netalertx-test-mount-api_unwritable | /app/config | ✅ | ✅ | | | ✅
netalertx-test-mount-api_unwritable | /app/api | ❌ | ✅ | ❌ | ❌ | ✅
netalertx-test-mount-api_unwritable | /app/log | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-api_unwritable | /services/run | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-api_unwritable | /services/config/nginx/conf.active | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-api_unwritable | --> first run config
netalertx-test-mount-api_unwritable | --> first run db
netalertx-test-mount-api_unwritable | --> mandatory folders
netalertx-test-mount-api_unwritable | * Creating Plugins log.
netalertx-test-mount-api_unwritable | * Creating System services run log.
netalertx-test-mount-api_unwritable | * Creating System services run tmp.
netalertx-test-mount-api_unwritable | * Creating DB locked log.
netalertx-test-mount-api_unwritable | * Creating Execution queue log.
netalertx-test-mount-api_unwritable | --> writable config
netalertx-test-mount-api_unwritable | --> nginx config
netalertx-test-mount-api_unwritable | --> user netalertx
netalertx-test-mount-api_unwritable | --> host mode network
netalertx-test-mount-api_unwritable | --> layer 2 capabilities
netalertx-test-mount-api_unwritable | --> excessive capabilities
netalertx-test-mount-api_unwritable | --> appliance integrity
netalertx-test-mount-api_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-api_unwritable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable | --> ports available
netalertx-test-mount-api_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-api_unwritable | may fail to start.
netalertx-test-mount-api_unwritable |
netalertx-test-mount-api_unwritable | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-api_unwritable | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-api_unwritable | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_unwritable | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-api_unwritable | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-api_unwritable | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.config_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper config mount
- NETALERTX_CONFIG shows as writable and mounted
- No configuration warnings for config path
- Configuration persistence works correctly
Testing: docker-compose.mount-test.config_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-config_mounted
netalertx-test-mount-config_mounted | 
netalertx-test-mount-config_mounted | _ _ _ ___ _ _ __ __
netalertx-test-mount-config_mounted | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-config_mounted | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-config_mounted | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-config_mounted | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-config_mounted | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted |  Network intruder and presence detector.
netalertx-test-mount-config_mounted | https://netalertx.com
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted | Startup pre-checks
netalertx-test-mount-config_mounted | --> storage permission
netalertx-test-mount-config_mounted | --> mounts.py
netalertx-test-mount-config_mounted | --> first run config
netalertx-test-mount-config_mounted | --> first run db
netalertx-test-mount-config_mounted | --> mandatory folders
netalertx-test-mount-config_mounted | * Creating Plugins log.
netalertx-test-mount-config_mounted | * Creating System services run log.
netalertx-test-mount-config_mounted | * Creating System services run tmp.
netalertx-test-mount-config_mounted | * Creating DB locked log.
netalertx-test-mount-config_mounted | * Creating Execution queue log.
netalertx-test-mount-config_mounted | --> writable config
netalertx-test-mount-config_mounted | --> nginx config
netalertx-test-mount-config_mounted | --> user netalertx
netalertx-test-mount-config_mounted | --> host mode network
netalertx-test-mount-config_mounted | --> layer 2 capabilities
netalertx-test-mount-config_mounted | --> excessive capabilities
netalertx-test-mount-config_mounted | --> appliance integrity
netalertx-test-mount-config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-config_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted | --> ports available
netalertx-test-mount-config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-config_mounted | may fail to start.
netalertx-test-mount-config_mounted |
netalertx-test-mount-config_mounted | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-config_mounted | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_mounted | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-config_mounted | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-config_mounted | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-config_mounted | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.config_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error for config directory
- NETALERTX_CONFIG shows as not mounted
- Mount error since config directory should be mounted for proper operation
- Configuration may not persist across restarts
Testing: docker-compose.mount-test.config_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-config_no-mount
netalertx-test-mount-config_no-mount | 
netalertx-test-mount-config_no-mount | _ _ _ ___ _ _ __ __
netalertx-test-mount-config_no-mount | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-config_no-mount | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-config_no-mount | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-config_no-mount | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-config_no-mount | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount |  Network intruder and presence detector.
netalertx-test-mount-config_no-mount | https://netalertx.com
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount | Startup pre-checks
netalertx-test-mount-config_no-mount | --> storage permission
netalertx-test-mount-config_no-mount | --> mounts.py
netalertx-test-mount-config_no-mount | Path | Writeable | Mount | RAMDisk | Performance | DataLoss
netalertx-test-mount-config_no-mount | ------------------------------------+-----------+-------+---------+-------------+----------
netalertx-test-mount-config_no-mount | /app/db | ✅ | ✅ | | | ✅
netalertx-test-mount-config_no-mount | /app/config | ✅ | ❌ | | | ❌
netalertx-test-mount-config_no-mount | /app/api | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_no-mount | /app/log | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_no-mount | /services/run | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_no-mount | /services/config/nginx/conf.active | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_no-mount | --> first run config
netalertx-test-mount-config_no-mount | --> first run db
netalertx-test-mount-config_no-mount | --> mandatory folders
netalertx-test-mount-config_no-mount | * Creating Plugins log.
netalertx-test-mount-config_no-mount | * Creating System services run log.
netalertx-test-mount-config_no-mount | * Creating System services run tmp.
netalertx-test-mount-config_no-mount | * Creating DB locked log.
netalertx-test-mount-config_no-mount | * Creating Execution queue log.
netalertx-test-mount-config_no-mount | --> writable config
netalertx-test-mount-config_no-mount | --> nginx config
netalertx-test-mount-config_no-mount | --> user netalertx
netalertx-test-mount-config_no-mount | --> host mode network
netalertx-test-mount-config_no-mount | --> layer 2 capabilities
netalertx-test-mount-config_no-mount | --> excessive capabilities
netalertx-test-mount-config_no-mount | --> appliance integrity
netalertx-test-mount-config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-config_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount | --> ports available
netalertx-test-mount-config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-config_no-mount | may fail to start.
netalertx-test-mount-config_no-mount |
netalertx-test-mount-config_no-mount | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-config_no-mount | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_no-mount | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-config_no-mount | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-config_no-mount | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-config_no-mount | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.config_ramdisk.yml
----------------------------------------
Expected outcome: Container shows dataloss risk warning for config on RAM disk
- NETALERTX_CONFIG shows as mounted on tmpfs (RAM disk)
- Dataloss risk warning since config data should be persistent
- Configuration will be lost on container restart
Testing: docker-compose.mount-test.config_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-config_ramdisk
netalertx-test-mount-config_ramdisk | 
netalertx-test-mount-config_ramdisk | _ _ _ ___ _ _ __ __
netalertx-test-mount-config_ramdisk | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-config_ramdisk | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-config_ramdisk | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-config_ramdisk | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-config_ramdisk | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk |  Network intruder and presence detector.
netalertx-test-mount-config_ramdisk | https://netalertx.com
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk | Startup pre-checks
netalertx-test-mount-config_ramdisk | --> storage permission
netalertx-test-mount-config_ramdisk | --> mounts.py
netalertx-test-mount-config_ramdisk | Path | Writeable | Mount | RAMDisk | Performance | DataLoss
netalertx-test-mount-config_ramdisk | ------------------------------------+-----------+-------+---------+-------------+----------
netalertx-test-mount-config_ramdisk | /app/db | ✅ | ✅ | | | ✅
netalertx-test-mount-config_ramdisk | /app/config | ✅ | ✅ | ❌ | | ❌
netalertx-test-mount-config_ramdisk | /app/api | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_ramdisk | /app/log | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_ramdisk | /services/run | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_ramdisk | /services/config/nginx/conf.active | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_ramdisk | --> first run config
netalertx-test-mount-config_ramdisk | --> first run db
netalertx-test-mount-config_ramdisk | --> mandatory folders
netalertx-test-mount-config_ramdisk | * Creating Plugins log.
netalertx-test-mount-config_ramdisk | * Creating System services run log.
netalertx-test-mount-config_ramdisk | * Creating System services run tmp.
netalertx-test-mount-config_ramdisk | * Creating DB locked log.
netalertx-test-mount-config_ramdisk | * Creating Execution queue log.
netalertx-test-mount-config_ramdisk | --> writable config
netalertx-test-mount-config_ramdisk | writable config: FAILED with 1
netalertx-test-mount-config_ramdisk | Failure detected in: /entrypoint.d/30-writable-config.sh
netalertx-test-mount-config_ramdisk | --> nginx config
netalertx-test-mount-config_ramdisk | --> user netalertx
netalertx-test-mount-config_ramdisk | --> host mode network
netalertx-test-mount-config_ramdisk | --> layer 2 capabilities
netalertx-test-mount-config_ramdisk | --> excessive capabilities
netalertx-test-mount-config_ramdisk | --> appliance integrity
netalertx-test-mount-config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk | ⚠️ Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk | Please mount the root filesystem as --read-only or use read-only: true
netalertx-test-mount-config_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk | --> ports available
netalertx-test-mount-config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk | ⚠️ Port Warning: GraphQL API port 20212 is already in use.
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk | The GraphQL API (defined by $APP_CONF_OVERRIDE or $GRAPHQL_PORT)
netalertx-test-mount-config_ramdisk | may fail to start.
netalertx-test-mount-config_ramdisk |
netalertx-test-mount-config_ramdisk | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/port-conflicts.md
netalertx-test-mount-config_ramdisk | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk | Container startup checks failed with exit code 1.
netalertx-test-mount-config_ramdisk | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/app/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_ramdisk | Starting /usr/sbin/crond -c "/services/config/crond" -f -L "/app/log/crond.log" >>"/app/log/crond.log" 2>&1 &
netalertx-test-mount-config_ramdisk | Starting python3 -m server > /app/log/stdout.log 2> >(tee /app/log/stderr.log >&2)
netalertx-test-mount-config_ramdisk | Starting /usr/sbin/nginx -p "/services/run/" -c "/services/config/nginx/conf.active/netalertx.conf" -g "error_log /dev/stderr; error_log /app/log/nginx-error.log; pid /services/run/nginx.pid; daemon off;" &
netalertx-test-mount-config_ramdisk | Successfully updated IEEE OUI database (111620 entries)
==========================================
File: docker-compose.mount-test.config_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable config partition
- NETALERTX_CONFIG shows as mounted but unwritable (❌ in Writeable column)
- 30-writable-config.sh detects permission error and exits with code 1
- Container startup fails because config files cannot be written to
Testing: docker-compose.mount-test.config_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests
Running docker-compose up...
Attaching to netalertx-test-mount-config_unwritable
netalertx-test-mount-config_unwritable | 
netalertx-test-mount-config_unwritable | _ _ _ ___ _ _ __ __
netalertx-test-mount-config_unwritable | | \ | | | | / _ \| | | | \ \ / /
netalertx-test-mount-config_unwritable | | \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V /
netalertx-test-mount-config_unwritable | | . |/ _ \ __| _ | |/ _ \ __| __|/ \
netalertx-test-mount-config_unwritable | | |\ | __/ |_| | | | | __/ | | |_/ /^\ \
netalertx-test-mount-config_unwritable | \_| \_/\___|\__\_| |_/_|\___|_| \__\/ \/
netalertx-test-mount-config_unwritable |
netalertx-test-mount-config_unwritable |  Network intruder and presence detector.
netalertx-test-mount-config_unwritable | https://netalertx.com
netalertx-test-mount-config_unwritable |
netalertx-test-mount-config_unwritable |
netalertx-test-mount-config_unwritable | Startup pre-checks
netalertx-test-mount-config_unwritable | --> storage permission
netalertx-test-mount-config_unwritable | --> mounts.py
netalertx-test-mount-config_unwritable | Path | Writeable | Mount | RAMDisk | Performance | DataLoss
netalertx-test-mount-config_unwritable | ------------------------------------+-----------+-------+---------+-------------+----------
netalertx-test-mount-config_unwritable | /app/db | ✅ | ✅ | | | ✅
netalertx-test-mount-config_unwritable | /app/config | ❌ | ✅ | | | ✅
netalertx-test-mount-config_unwritable | /app/api | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_unwritable | /app/log | ✅ | ✅ | ✅ | ✅ | ✅
netalertx-test-mount-config_unwritable | /services/run | ✅ | ✅ | ✅ | ✅ | ✅

View File

@@ -197,6 +197,15 @@ def _run_container(
sleep_seconds: float = GRACE_SECONDS,
) -> subprocess.CompletedProcess[str]:
name = f"netalertx-test-{label}-{uuid.uuid4().hex[:8]}".lower()
# Clean up any existing container with this name
subprocess.run(
["docker", "rm", "-f", name],
check=False,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
cmd: list[str] = ["docker", "run", "--rm", "--name", name]
if network_mode:
@@ -272,11 +281,14 @@ def _run_container(
def _assert_contains(result, snippet: str, cmd: list[str] = None) -> None:
if snippet not in result.output:
output = result.output + result.stderr
if snippet not in output:
cmd_str = " ".join(cmd) if cmd else ""
raise AssertionError(
f"Expected to find '{snippet}' in container output.\n"
f"Got:\n{result.output}\n"
f"STDOUT:\n{result.output}\n"
f"STDERR:\n{result.stderr}\n"
f"Combined output:\n{output}\n"
f"Container command:\n{cmd_str}"
)
@@ -352,7 +364,7 @@ def test_running_as_root_is_blocked(tmp_path: pathlib.Path) -> None:
)
_assert_contains(result, "NetAlertX is running as ROOT", result.args)
_assert_contains(result, "Permissions fixed for read-write paths.", result.args)
assert result.returncode == 0 # container must be forced to exit 0 by termination after warning
assert result.returncode == 0 # container warns but continues running, then terminated by test framework
def test_running_as_uid_1000_warns(tmp_path: pathlib.Path) -> None:
@@ -374,7 +386,7 @@ def test_running_as_uid_1000_warns(tmp_path: pathlib.Path) -> None:
user="1000:1000",
)
_assert_contains(result, "NetAlertX is running as UID 1000:1000", result.args)
assert result.returncode != 0
def test_missing_host_network_warns(tmp_path: pathlib.Path) -> None:
@@ -388,7 +400,17 @@ def test_missing_host_network_warns(tmp_path: pathlib.Path) -> None:
Check script: check-network-mode.sh
Sample message: "⚠️ ATTENTION: NetAlertX is not running with --network=host. Bridge networking..."
"""
paths = _setup_mount_tree(tmp_path, "missing_host_net")
base = tmp_path / "missing_host_net_base"
paths = _setup_fixed_mount_tree(base)
# Ensure directories are writable and owned by netalertx user so container can operate
for key in ["app_db", "app_config", "app_log", "app_api", "services_run", "nginx_conf"]:
paths[key].chmod(0o777)
_chown_netalertx(paths[key])
# Create a config file so the writable check passes
config_file = paths["app_config"] / "app.conf"
config_file.write_text("test config")
config_file.chmod(0o666)
_chown_netalertx(config_file)
volumes = _build_volume_args(paths)
result = _run_container(
"missing-host-network",
@@ -396,7 +418,6 @@ def test_missing_host_network_warns(tmp_path: pathlib.Path) -> None:
network_mode=None,
)
_assert_contains(result, "not running with --network=host", result.args)
assert result.returncode != 0
def test_missing_app_conf_triggers_seed(tmp_path: pathlib.Path) -> None:

View File

@@ -207,7 +207,9 @@ def create_test_scenarios() -> List[TestScenario]:
elif scenario_name == "mounted" and is_persistent:
# Mounted is good for persistent paths
expected_issues = []
elif path_name == "active_config" and scenario_name == "unwritable":
# active_config unwritable: RAM disk issues detected
expected_issues = ["table_issues", "warning_message"]
compose_file = f"docker-compose.mount-test.{path_name}_{scenario_name}.yml"
# Determine expected exit code
@@ -236,6 +238,14 @@ def test_mount_diagnostic(netalertx_test_image, test_scenario):
# Start container
project_name = f"mount-test-{test_scenario.name.replace('_', '-')}"
# Remove any existing containers with the same project name
cmd_down = [
"docker-compose", "-f", str(compose_file),
"-p", project_name, "down", "-v"
]
subprocess.run(cmd_down, capture_output=True, timeout=30)
cmd_up = [
"docker-compose", "-f", str(compose_file),
"-p", project_name, "up", "-d"
@@ -251,7 +261,7 @@ def test_mount_diagnostic(netalertx_test_image, test_scenario):
try:
# Wait for container to be ready
import time
time.sleep(3)
time.sleep(4)
# Check if container is still running
container_name = f"netalertx-test-mount-{test_scenario.name}"
@@ -348,29 +358,31 @@ def test_mount_diagnostic(netalertx_test_image, test_scenario):
# active_config not mounted: mount=False, performance=False (not ramdisk)
assert_table_row(logs, '/services/config/nginx/conf.active', mount=False, performance=False)
elif test_scenario.name == 'active_config_unwritable':
# active_config read-only: but path doesn't exist, so parent dir check makes it writeable=True
# This is a bug in the diagnostic tool, but we test the current behavior
assert_table_row(logs, '/services/config/nginx/conf.active', writeable=True)
# active_config unwritable: RAM disk issues detected
assert_table_row(logs, '/services/config/nginx/conf.active', ramdisk=False, performance=False)
except AssertionError as e:
pytest.fail(f"Table validation failed for {test_scenario.name}: {e}")
return # Test passed - container correctly detected issues and exited
# Container is still running - run diagnostic tool
cmd_exec = [
"docker", "exec", container_name,
"python3", "/entrypoint.d/10-mounts.py"
]
# Container is still running - run diagnostic tool
cmd_exec = [
"docker", "exec", "--user", "netalertx", container_name,
"python3", "/entrypoint.d/10-mounts.py"
]
result_exec = subprocess.run(cmd_exec, capture_output=True, text=True, timeout=30)
# Diagnostic tool returns 1 if there are write errors, 0 otherwise
expected_tool_exit = 1 if "unwritable" in test_scenario.name else 0
assert result_exec.returncode == expected_tool_exit, f"Diagnostic tool failed: {result_exec.stderr}"
result_exec = subprocess.run(cmd_exec, capture_output=True, text=True, timeout=30)
assert result_exec.returncode == 0, f"Diagnostic tool failed: {result_exec.stderr}"
# For good configurations (no issues expected), verify no output
if not test_scenario.expected_issues:
assert result_exec.stdout.strip() == "", f"Good config {test_scenario.name} should produce no stdout, got: {result_exec.stdout}"
assert result_exec.stderr.strip() == "", f"Good config {test_scenario.name} should produce no stderr, got: {result_exec.stderr}"
return # Test passed - good configuration correctly produces no issues
# For good configurations (no issues expected), verify table output but no warning
if not test_scenario.expected_issues:
# Should have table output but no warning message
assert "Path" in result_exec.stdout, f"Good config {test_scenario.name} should show table, got: {result_exec.stdout}"
assert "⚠️" not in result_exec.stderr, f"Good config {test_scenario.name} should not show warning, got stderr: {result_exec.stderr}"
return # Test passed - good configuration correctly produces no warnings
finally:
# Stop container