Gabriel Roldan 600e5664cf
Fix ImageMosaic acceptance tests broken by volume mount path change
The ImageMosaic acceptance tests were failing with 500 errors because they
referenced the old volume mount path /mnt/geoserver_data, which was changed
to /opt/geoserver_data in commit b33a27b9f6.

Changes:
- Update test_imagemosaic.py: Change all file paths from /mnt/ to /opt/
  (6 occurrences across all test functions)
- Update acceptance_tests/README.md: Update sample data path documentation
  to reflect the /opt/ mount location

The tests use external.imagemosaic REST endpoints to reference files that
must exist at the paths specified. With the old /mnt/ paths, GeoServer
could not find the sample data files, resulting in 500 Internal Server
Error responses.
2025-11-06 20:09:11 -03:00

192 lines
5.3 KiB
Markdown

# GeoServer Cloud acceptance tests
## Requirements
- Python 3.8+
- [Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer) (recommended)
- Or a Python virtual environment
## Installation
### Option 1: Using Poetry (recommended)
```shell
poetry install
```
### Option 2: Using Python virtual environment
```shell
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On Linux/macOS:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
# Install dependencies
pip install -e .
```
## Running the tests
### Option 1: Using make (runs full docker composition)
```shell
# Run tests with datadir backend
make acceptance-tests-datadir
# Run tests with pgconfig backend
make acceptance-tests-pgconfig
```
### Option 2: Manual execution
#### Run tests inside Docker container (recommended for all tests)
```shell
# Start GeoServer services
cd ../compose
./acceptance_datadir up -d # or ./acceptance_pgconfig up -d
# Optional: Start webui service if needed (not started by default in acceptance composition)
./acceptance_datadir scale webui=1
# Run all tests inside the container
./acceptance_datadir exec acceptance pytest . -vvv --color=yes
# Run specific tests inside the container
./acceptance_datadir exec acceptance pytest tests/test_cog.py -v --color=yes
```
#### Run tests from host machine (full functionality)
**Note:** This requires the geodatabase port to be exposed (port 6432). The acceptance composition now exposes this port automatically.
```shell
# Start GeoServer services (geodatabase port 6432 will be exposed)
cd ../compose
./acceptance_datadir up -d # or ./acceptance_pgconfig up -d
# Optional: Start webui service if needed
./acceptance_datadir scale webui=1
# From acceptance_tests directory, run tests from host
cd ../acceptance_tests
./run_tests_locally.sh tests/test_cog.py # Run COG tests
./run_tests_locally.sh tests/test_imagemosaic_cog.py # Run ImageMosaic tests
./run_tests_locally.sh tests/test_workspace.py # Run workspace tests
./run_tests_locally.sh # Run all tests
# Run specific test functions
./run_tests_locally.sh tests/test_imagemosaic_cog.py::test_create_imagemosaic_local_files
./run_tests_locally.sh tests/test_cog.py::test_create_cog_coverage
```
### Run specific tests with make
```shell
# To run specific tests with make, you can modify the Makefile or use the manual Docker approach above
```
## Debugging
If you need to debug the GeoServer services, you can run the acceptance test composition with local ports exposed:
```shell
cd ../compose
# Start the acceptance test compose with local ports
./acceptance_datadir -f localports.yml up -d
# Enable the webui service if needed
./acceptance_datadir -f localports.yml scale webui=1
# Shut down the rest service if you're going to launch it from your IDE
./acceptance_datadir -f localports.yml down rest
# Now you can run from the IDE with the `local` spring profile enabled
# and the required catalog backend profile (datadir/pgconfig)
```
### Accessing Sample Data
When debugging, you may need to access the sample data that's available in the containers. The sample data is extracted to `/opt/geoserver_data/sampledata` inside the containers. To access it from your local development environment:
```shell
# Check what sample data is available
./acceptance_datadir exec wms find /opt/geoserver_data/sampledata
# Copy sample data to your local machine for testing
docker cp $(./acceptance_datadir ps -q wms | head -1):/opt/geoserver_data/sampledata ./local_sampledata
# Or mount the geoserver_data volume directly to a local directory
# Add this to your docker-compose override file:
# volumes:
# geoserver_data:
# driver: local
# driver_opts:
# type: none
# o: bind
# device: /path/to/local/sampledata
```
## Testing Different GeoServer Cloud Versions
You can test different versions of GeoServer Cloud without modifying the `.env` file by setting the TAG environment variable.
### Option 1: Using Make Commands (Recommended)
```shell
# Test with GeoServer Cloud 2.27.2-SNAPSHOT (datadir backend)
TAG=2.27.2-SNAPSHOT make start-acceptance-tests-datadir
cd acceptance_tests && ./run_tests_locally.sh tests/test_imagemosaic.py
TAG=2.27.2-SNAPSHOT make clean-acceptance-tests-datadir
# Test with GeoServer Cloud 2.26.2.0 (pgconfig backend)
TAG=2.26.2.0 make start-acceptance-tests-pgconfig
cd acceptance_tests && ./run_tests_locally.sh tests/test_imagemosaic.py
TAG=2.26.2.0 make clean-acceptance-tests-pgconfig
# Test with default version (from Maven project.version)
make start-acceptance-tests-datadir
cd acceptance_tests && ./run_tests_locally.sh
make clean-acceptance-tests-datadir
```
### Option 2: Manual Docker Compose Commands
```shell
# Test with GeoServer Cloud 2.27.1.0
cd ../compose
TAG=2.27.1.0 ./acceptance_datadir up -d
# Run your tests
cd ../acceptance_tests
./run_tests_locally.sh
# Test with GeoServer Cloud 2.26.2.0
cd ../compose
./acceptance_datadir down
TAG=2.26.2.0 ./acceptance_datadir up -d
# Run your tests again
cd ../acceptance_tests
./run_tests_locally.sh
# Return to default version (check .env file for current default)
cd ../compose
./acceptance_datadir down
./acceptance_datadir up -d
```
## Cleanup
```shell
# Stop and remove containers
cd ../compose
./acceptance_datadir down -v # or ./acceptance_pgconfig down -v
```