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
Added default mongo implementations for HAS ALL/ANY/ONLY #173
Conversation
Can't resolve this myself, so raised an issue with mongomock: mongomock/mongomock#594 |
0e7f41d
to
5edbe34
Compare
I've raised a PR with mongomock/mongomock#597 that fixes the issues with |
I guess, yeah - although we (Materials Cloud) do use |
I think it's fine for something as trivial as the meta-db, but as we see in this case, there are features that are not supported by mongomock (currently), and we can easily add a mongo to our CI with just a few lines. It's not even clear that we're testing against a real database at any point (except in our own implementations). I had a look earlier and we'd have to change our config a little bit, I think it makes sense to disentangle the |
Good point. And I indeed think we should.
Sounds good. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Much needed implementation! Thanks @ml-evs.
I have some questions, suggestions, and very minor clean ups.
As per the discussion in this PR - if you can, maybe just use a real MongoDB - otherwise let's skip the failing test, keeping the comments you've made and add that it works for a real MongoDB. Maybe also referencing your issue/PR @ mongomock? |
I think I would rather make another PR to use mongo for all tests, then hopefully watch this PR turn green :) |
f3120d7
to
76988e2
Compare
Codecov Report
@@ Coverage Diff @@
## master #173 +/- ##
==========================================
+ Coverage 86.43% 86.62% +0.18%
==========================================
Files 39 39
Lines 1851 1854 +3
==========================================
+ Hits 1600 1606 +6
+ Misses 251 248 -3
Continue to review full report at Codecov.
|
It's green!!! 😮 |
I still have an "un-rebased" (debased?) local copy that we can revert to, should we decide not to merge the Mongo CI PR, so only half cheating :P |
2cde421
to
0134082
Compare
Co-Authored-By: Casper Welzel Andersen <43357585+CasperWA@users.noreply.github.com>
Co-Authored-By: Casper Welzel Andersen <43357585+CasperWA@users.noreply.github.com>
0134082
to
9d153a2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the home stretch, thanks @ml-evs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Upwards and onwards - next stop OPTiMaDe v1.0.0-rc.1 😄
Up to v0.6.0. **New features**: - GitHub Action validator that runs `optimade_validator` for a locally running OPTiMaDe server (#191, @CasperWA, tested by @ml-evs) - Support filter queries for `HAS ALL`, `HAS ANY` and `HAS ONLY` and value lists on MongoDB backends (#173, @ml-evs) Note: `OPERATOR` use in value lists are still _not_ supported. - Debug mode. Start the server in debug mode to enable `debug` log-level in `uvicorn` and get a full Python traceback in the JSON response (#190, @CasperWA) - Add testing of mandatory `filter` queries to `optimade_validator` (#205, @ml-evs) **Updates**: - Allow Cross-Origin requests from anywhere (`*`), i.e., enable CORS for both servers (#194, @CasperWA) - Updates to models (correct misspelling, more transparent model class naming, streamline models with respect to python class inheritance, update field descriptions) (#195, @CasperWA) - API change: Rename `optimade.models.toplevel.py` to `optimade.models.responses.py` (#195, @CasperWA) - Update dependencies to newest versions (as of 02.03.2020) (#202, #196, @CasperWA) - Move imports from `starlette` to `fastapi`, where possible (#202, @ml-evs) - Remove custom middleware to redirect slashed URLs in favor of `starlette` implementation (#202, @ml-evs) - CI tests are now performed with a real MongoDB in the backend. CI tests are also performed with a `mongomock` backend for the tests in `server/test_middleware.py`, `server/test_server_validation.py`, and `server/test_config.py` (#196, @ml-evs, additional testing by @CasperWA ) - Remove `/optimade` from base URLs. This was especially important for the OpenAPI schema (#201, #216, @CasperWA, @ml-evs) - Check integrity of query part of the raw URL using a custom middleware (#209, @CasperWA) - New `optimade/server/exceptions.py` to contain custom `HttpException`s, moved `BadRequest` here (#209, @CasperWA) - Pattern and regex testing for `data.available_api_versions` parts in `/info` endpoint and fix tests for the same (#211, @CasperWA) - Restructure import of test data for regular server (#212, @shyamd) **Bug fixes**: - New retrieval URL for Materials-Consortia's list of providers (#187, @CasperWA) - Skip local `HAS ONLY` tests with a `mongomock` backend, since v3.19.0 does not support these (#206, @ml-evs) - Resource ID's can now contain slashes (`/`) (#183, @ml-evs, @CasperWA) - Remove _valid_ version part of base URL in `meta.query.representation` (#201, @CasperWA)
Long overdue PR that closes #98. The only list queries that remain would be e.g.
HAS ALL <3, >3
, which will be trickier (in fact, I would support this type of query being demoted to optional in the spec).In the course of this PR, a bug was found in mongomock which is why we are now testing with MongoDB directly. The fix has been merged into mongomock but not yet released. You can have a look at the edit history of this PR description for more detail.