==> tests/store.c <==1/* peer.rs store_persists. */
2#include "mesh/check.h"
3#include "mesh/fleet_store.h"
4#include "mesh/mt.h"
5
6#include <stdlib.h>
7#include <unistd.h>
8
9int main(void) {
10 char *p = mt_fmt("/tmp/meshd-fleet-%d.state", (int)getpid());
11 unlink(p);
12 mfs_store s;
13 mfp_persist first, back;
14 char *err = NULL;
15 CHECK(mfs_open(p, 3, &s, &first, &err));
16 mfp_persist zero = {0};
17 CHECK(mfp_eq(&first, &zero));
18 mfp_persist q = mfp_clone(&first);
19 q.term = 9;
20 q.has_voted = true;
21 q.voted = 1;
22 q.committed.version = 4;
23 q.accepted.version = 5;
24 CHECK(mfs_write(&s, &q, &err));
25 mfs_close(&s);
26 CHECK(mfs_open(p, 3, &s, &back, &err) && mfp_eq(&back, &q));
27 mfs_close(&s);
28 mfp_free(&back);
29 CHECK(!mfs_open(p, 4, &s, &back, &err));
30 CHECK(mt_contains(err, "cluster of 3"));
31 free(err);
32 CHECK(!mfs_open("/nonexistent-dir/x.state", 3, &s, &back, &err));
33 free(err);
34 unlink(p);
35 free(p);
36 mfp_free(&q);
37 mfp_free(&first);
38 return mesh_check_done();
39}