You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by Niclas Hedhman <ni...@hedhman.org> on 2017/02/04 10:35:31 UTC

Interesting pattern...

Gang,
I have been working on a Cassandra store. It doesn't use the
MapEntityStore, but text, timestamp and map data types in Cassandra. Only
serialized ValueComposite typed properties use JSON serialization.

Now to the subject of this mail... Once the test is done, I want to execute
a clean up on the cassandra cluster that is used for the testing, and doing
so without compromising the service with a "removeAll" or exposing the
cluster/session in the service interface.

So, first of all, move all Cluster/Session handling of the EntityStore into
a CassandraCluster "private" interface with a Mixin that has operations
against the store. But still no "removeAll".

I then created a CanRemoveAll interface in
org.polygene.core.testsupport.entity. And in the test directory in
cassandra-es I have the EmptyCassandraTableMixin for that.

Finally a

module.services( CassandraEntityStoreService.class ).withTypes(
CanRemoveAll.class ).withMixins( EmptyCassandraTableMixin.class );


So what is so nice about this;

1. The test is adding mixins to the service, to make it more controllable
from the test executor.
2. The test support is leveraging private Mixins to keep the public APIs
clean.
3. Any amount of test support could be 'attached' to Composites in this
fashion and reach into its internals by the use of Private Mixins.


Anyway, just wanted to share this...

Next; get the test to use Docker. I think I can figure it out.
Paul, will it kick in automatically, or do I need to invoke some task?

Cheers
-- 
Niclas Hedhman, Software Developer
http://polygene.apache.org <http://zest.apache.org> - New Energy for Java