This is a long list of possible tests. Possibly it should be reorganised into multiple tickets;
for now implemented tests will simply be removed from the list.
Reading from a fixed repo
[ ] lists of elements
[ ] contents of some elements
[ ] reading from historical (not latest) states
[ ] partitions
[ ] Discovery of partition files
Modifying repos (on disk)
[ ] Repartitioning
[ ] Merges
[ ] "Discovery" system for updating logs, creating new logs and creating snapshots
Special cases
Commit loops (reverting to prior states) in two cases: no snapshot within the
loop (rendering the last commit of the loop useless) and with a snapshot in the
loop (so that from the perspective of no history before the snapshot it is not
a loop):
[ ] creation via reverting
[ ] creation via "accidental" modification
[ ] reconstructing from log where no snapshots are involved
[ ] reconstructing from log where the last state of the loop is a snapshot
[ ] reconstructing from log where there is a snapshot in the middle of the loop
[ ] reading elements (for the above cases)
[ ] appending commits where the second state is a snapshot
[ ] appending commits where the second state is not a snapshot
[ ] mutate_meta function and usage in Partition::add_pair
Reading damaged repos
[ ] Snapshots with missing commits
[ ] Commits with missing snapshots/parent states: state of incomplete information,
yet some information can be recovered (e.g. elements added in the commits).
Performance testing
[ ] Large partitions (lots of data).
[ ] Long partitions (lots of commits).
[ ] Large repositories with multiple partitions.
[ ] Dealing with corruption of one or multiple files as best as possible
[ ] Basic case: add data until the partition needs splitting, test the split, add some more
[ ] Resume: kill the program during a split, resume, check for no data loss
[ ] Partial information: do a split, close, load only one half (with classifier information only from one partition), save some data, then load other half
This is a long list of possible tests. Possibly it should be reorganised into multiple tickets; for now implemented tests will simply be removed from the list.
Reading from a fixed repo
Modifying repos (on disk)
Special cases
Commit loops (reverting to prior states) in two cases: no snapshot within the loop (rendering the last commit of the loop useless) and with a snapshot in the loop (so that from the perspective of no history before the snapshot it is not a loop):
mutate_meta
function and usage inPartition::add_pair
Reading damaged repos
Performance testing