Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

failing unit-test #645

Open
1 of 8 tasks
epifanio opened this issue Feb 25, 2022 · 7 comments
Open
1 of 8 tasks

failing unit-test #645

epifanio opened this issue Feb 25, 2022 · 7 comments
Assignees

Comments

@epifanio
Copy link

Description

Attempt to install and run unit-test

The software installs without error, following the documentation - trying to run the test, it fails with the following error:

root@5f142103bda1:~/pywps# python3 -m unittest tests
E
======================================================================
ERROR: tests (unittest.loader._FailedTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/pywps/tests/__init__.py", line 95, in load_tests
    test_storage.load_tests(),
AttributeError: module 'tests.test_storage' has no attribute 'load_tests'

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)

After commenting the failing import and its related call() to test_storage, the rror becomes:

python3 -m unittest tests
...................................................EEE.....s.s............................................ss...........................................ss.......
======================================================================
ERROR: test_bbox_output (tests.test_describe.OutputDescriptionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/pywps/tests/test_describe.py", line 385, in test_bbox_output
    doc = bbox.describe_xml()
AttributeError: 'BoundingBoxOutput' object has no attribute 'describe_xml'

======================================================================
ERROR: test_complex_output (tests.test_describe.OutputDescriptionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/pywps/tests/test_describe.py", line 368, in test_complex_output
    doc = complexo.describe_xml()
AttributeError: 'ComplexOutput' object has no attribute 'describe_xml'

======================================================================
ERROR: test_literal_output (tests.test_describe.OutputDescriptionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/pywps/tests/test_describe.py", line 343, in test_literal_output
    doc = literal.describe_xml()
AttributeError: 'LiteralOutput' object has no attribute 'describe_xml'

----------------------------------------------------------------------
Ran 160 tests in 6.500s

FAILED (errors=3, skipped=6)
root@5f142103bda1:~/pywps# 

Environment

  • operating system: Debian SID
  • Python version: 3.9.10
  • PyWPS version: git master
  • source/distribution
  • git clone
  • Debian
  • PyPI
  • zip/tar.gz
  • other (please specify):
  • web server
  • Apache/mod_wsgi
  • CGI
  • other (please specify):

Steps to Reproduce

follow the documentation to run unit-test after successful installation

Additional Information

@cehbrecht
Copy link
Collaborator

@epifanio Try to run the tests with pytest -v tests/.

docs are outdated. We already using xfail and skip markers from pytest. Probably these are the failures.

@cehbrecht cehbrecht self-assigned this Mar 15, 2022
@epifanio
Copy link
Author

epifanio commented Mar 17, 2022

@cehbrecht , I ran the pytest -v tests/. and I confirm all the test passed :)

============= 172 passed, 9 skipped, 2 xfailed in 130.95s (0:02:10)  =======================

I got a few skips (grass, mapserver) - I guess because of my basic configuration - the only failure was on XFAIL (test.opendap.org is offline)

What will be the best approach to build some up-to-date documentation? I guess also the OSGeoLive demo and quickstart are affected, right?

I will work on a dockerfile to have at least pywps installed and make it available via apache, any guidance will be greatly appreciated :)

@cehbrecht
Copy link
Collaborator

cehbrecht commented Mar 24, 2022

@epifanio thanks for looking at the "dusty" docs :)

I don't know about OSGeoLive demo. @ldesousa @jachym do you have hints?

I think the pipline with sphinx/readthedocs is broken:
https://pywps.readthedocs.io/en/latest/

A quickstart sounds good :) Could be part of the sphinx docs ... or the README.md:
https://github.com/geopython/pywps/blob/main/README.md

@cehbrecht
Copy link
Collaborator

@epifanio When we start a new pywps project, we use a cookiecutter template:
https://github.com/bird-house/cookiecutter-birdhouse

It already contains a Dockerfile ... but also needs to be updated.

For some of our production deployments we use an ansible playbook (with nginx, postgres):
https://github.com/bird-house/ansible-wps-playbook

For our Rook WPS we use the slurm scheduler deployed with ansible:
https://ansible-wps-playbook.readthedocs.io/en/latest/examples.html#install-slurm-cluster

@cehbrecht
Copy link
Collaborator

In other projects we are currently looking into writing docs with Markdown:

It is a bit more fun to write in Markdown than in reStructuredText ;)

Future options :)

@epifanio
Copy link
Author

epifanio commented Mar 24, 2022

@cehbrecht thanks for all the pointers! I managed to get a basic WSGI WPS service running from the official HTTPD docker image. I am using Postgres as the DB backend. I found the cooky-cutter templating system very cool and quite useful for a production-like scenario, but hard to integrate into the official pywps repository to have a basic/simple CI workflow to run the test (like we have for the other geopython projects). I was thinking of building a basic docker-compose+dockerfile that could be used to build and test the latest pywps, and then add a few bits of instruction to make a simple demo up and running.

For a potential demo for the OSGeoLive, looks like the processes available in the emu repository are a good starting point, perhaps with a notebook or two to test the processes using owslib. The OSGeoLive has already a jupyter environment.

@cehbrecht
Copy link
Collaborator

@epifanio The cookiecutter template has a Dockerfile which wasn't updated for quite some time:
https://github.com/bird-house/cookiecutter-birdhouse/blob/master/%7B%7Bcookiecutter.project_slug%7D%7D/Dockerfile

Example in Emu:
https://github.com/bird-house/emu/blob/master/Dockerfile

This could also be a docker-compose if you want to use postgres, nginx, ...

Some processes in Emu were taken from the original pywps, like say_hello, ultimate_question, sleepand binary_operator:
https://github.com/bird-house/emu/blob/master/emu/processes/wps_say_hello.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants