Hi folks,
I've been working on a sort of ARP thing for the week or so which I've
just put up publicly on GitHub: https://github.com/yomimono/irmin-arp
It's an ARP implementation that uses an Irmin store wrapped around a Map
to access and modify the cache, meaning that with each change you get
history and a commit message. You can choose to use an in-memory Irmin
store or you can use the Git-backed filesystem Irmin store interface;
choosing a filesystem store means you can read back the store from
another thread and make assertions about its state. With Magnus
Skjegstad's mirage-vnetif software bridge and Thomas Gazagnaire's
alcotest, I've used this to write tests attempting to verify reasonable
(and documentation-compliant) behaviour of the implementation. Although
I've currently disabled this, it's also possible to have the test
history automatically committed to the repository (currently it will
commit this to a subdirectory, test_results, which is not included in
the overall code repo).
For a quick demo, run `make test` and have a look in the `test_results`
directory, where git repositories reflecting the changes in cache state
for each test are reflected, e.g. showing the changes in the cache for a
listening Arp.t when a speaker on the same software bridge sets four
different IPs:
~/irmin-arp/test_results/input_changed_ip/listener$ git log --oneline
87fc498 entry added: 192.168.3.1 -> 02:50:2a:16:6d:01
6958e03 entry added: 10.20.254.2 -> 02:50:2a:16:6d:01
829df48 entry added: 10.50.20.22 -> 02:50:2a:16:6d:01
b903b4f entry added: 10.23.10.1 -> 02:50:2a:16:6d:01
fc34d1f Arp.create: Initial empty cache
...
The overall repository in `test_results` has commits for test passes or
failures, e.g.:
~/irmin-arp/test_results$ git log --oneline
f978c35 merge_pairwise: remove_expired -> master
53c2c4b merge_pairwise: update expired
f6106c1 merge_pairwise: remove expired
81ad78b merge_pairwise: original map
70d203f merge_conflicts_difft_noeds: test succeeded; removing data
70185f5 merge_conflicts_difft_nodes: expired_removed -> master
1195bff merge_conflicts_difft_nodes: remove expired entries
2618f4f merge_conflicts_difft_nodes: resolve arp entry
7bd9391 merge_conflicts_difft_nodes: set original map
067f38b merge_conflicts_difft_nodes: beginning new test
...
I'm not that far into doing anything interesting with this pile of code,
but I wanted to solicit your thoughts and feedback given all the
mumbling and general noise-making about testing we've been doing.
Thanks for your consideration and support. :)
-Mindy
_______________________________________________
MirageOS-devel mailing list
[email protected]
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel