skip to content
==> 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}