I haven’t decided if I’ll be posting these updates regularly, or just as soon as something of significance gets done.
Currently I tend towards the later.
And since today we are finished wiht one task, the conformance suite for storage backends, I wanted to give some context for it.
It wasn’t planned for the initial stages of the work, my initial assessment was that we can implement it sometime in the second half of the development period, all the way in the sixth milestone, after we finished with the documentation improvements and the wiki, and after we got to a reasonable unit-test coverage in each of the backends.
I realized that actually the conformance suite is probably the easiest to start with, and that it will provide a solid foundation for those unit-tests milestones. Easy because it’s totally new work, and we all know that starting from scratch is easier than actually refining a piece of code and making it more robust without breaking functionality.
So now there I have a reasonably standardized and with reasonably wide reach across the storage API, test suite that is agnostic to the backend it tests.
Over time we’ll add some more cases, but we’re currently going through all the bits that we require from a storage backend:
- ActivityPub object storage, retrieval (with filters) plus collection operations - with this occasion we discovered that having the method
Create(Collection) might be a little redundant.
- OAuth2 storage for client, authorization and access data matching the OSIN library expectations (with some added functionality for making clients easier to work with).
- Cryptographic key pair generation and rotation for Actors
- Password management for Actors
We have already used the suite to bring some of the existing and working backends to a uniform behaviour, which I consider a great success. 🚀
Here are the reports:
- FS storage
- SQLite storage
Currently I’m on my way to fix the last of the broken ones for BoltDB, new multi DB SQlite and Badger. The last one has multiple other failures that need to be fixed before we can move on to the conformance tests, but we’ll get there.
As always, many thanks to the mecena of GoActivityPub, the NLNet foundation, which made this work possible over having to prioritize less rewarding things like employment.
Read more →