32 std::cout <<
"TestRealm" << std::endl;
33 auto realm = realmStore.getRealm(
"SingleRealm");
35 auto b = realm->getVersion(ctk::async::DataConsistencyKey(42));
36 auto c = realm->getVersion(ctk::async::DataConsistencyKey(42));
39 auto d = realm->getVersion(ctk::async::DataConsistencyKey(43));
43 for(uint64_t i = 1; i < 42; ++i) {
44 auto a = realm->getVersion(ctk::async::DataConsistencyKey(i));
53 auto b2 = realm->getVersion(ctk::async::DataConsistencyKey(42));
56 auto x = realm->getVersion(ctk::async::DataConsistencyKey(1000000000));
59 auto y = realm->getVersion(ctk::async::DataConsistencyKey(42));
81 std::cout <<
"TestVersionConsistencyBetweenAccessors" << std::endl;
85 auto realm = realmStore.getRealm(
"MyIdRealm");
93 BOOST_REQUIRE(!dataA.readNonBlocking());
94 BOOST_REQUIRE(!dataB.readNonBlocking());
101 BOOST_REQUIRE(dataA.readNonBlocking());
102 BOOST_REQUIRE(dataB.readNonBlocking());
104 BOOST_REQUIRE(!dataA.readNonBlocking());
105 BOOST_REQUIRE(!dataB.readNonBlocking());
108 auto v1 = realm->getVersion(ctk::async::DataConsistencyKey(key));
109 BOOST_REQUIRE(v1 > v0);
110 BOOST_TEST(dataA.getVersionNumber() == v1);
111 BOOST_TEST(dataB.getVersionNumber() == v1);
112 BOOST_TEST(
interrupt6.getVersionNumber() == v1);
113 BOOST_TEST(dataA.dataValidity() == ctk::DataValidity::ok);
114 BOOST_TEST(dataB.dataValidity() == ctk::DataValidity::ok);
115 BOOST_TEST(
interrupt6.dataValidity() == ctk::DataValidity::ok);
119 dummy->triggerInterrupt(6);
121 BOOST_REQUIRE(dataA.readNonBlocking());
122 BOOST_REQUIRE(dataB.readNonBlocking());
124 BOOST_REQUIRE(!dataA.readNonBlocking());
125 BOOST_REQUIRE(!dataB.readNonBlocking());
128 auto v2 = realm->getVersion(ctk::async::DataConsistencyKey(key));
129 BOOST_REQUIRE(v2 > v1);
130 BOOST_TEST(dataA.getVersionNumber() == v2);
131 BOOST_TEST(dataB.getVersionNumber() == v2);
132 BOOST_TEST(
interrupt6.getVersionNumber() == v2);
133 BOOST_TEST(dataA.dataValidity() == ctk::DataValidity::ok);
134 BOOST_TEST(dataB.dataValidity() == ctk::DataValidity::ok);
135 BOOST_TEST(
interrupt6.dataValidity() == ctk::DataValidity::ok);
138 dummy->triggerInterrupt(6);
140 BOOST_REQUIRE(dataA.readNonBlocking());
141 BOOST_REQUIRE(dataB.readNonBlocking());
143 BOOST_REQUIRE(!dataA.readNonBlocking());
144 BOOST_REQUIRE(!dataB.readNonBlocking());
147 BOOST_TEST(dataA.getVersionNumber() == v2);
148 BOOST_TEST(dataB.getVersionNumber() == v2);
149 BOOST_TEST(
interrupt6.getVersionNumber() == v2);
150 BOOST_TEST(dataA.dataValidity() == ctk::DataValidity::ok);
151 BOOST_TEST(dataB.dataValidity() == ctk::DataValidity::ok);
152 BOOST_TEST(
interrupt6.dataValidity() == ctk::DataValidity::ok);
156 dummy->triggerInterrupt(6);
158 BOOST_REQUIRE(dataA.readNonBlocking());
159 BOOST_REQUIRE(dataB.readNonBlocking());
161 BOOST_REQUIRE(!dataA.readNonBlocking());
162 BOOST_REQUIRE(!dataB.readNonBlocking());
165 auto v3 = realm->getVersion(ctk::async::DataConsistencyKey(key));
166 BOOST_REQUIRE(v3 < v2);
167 BOOST_REQUIRE(v3 > v1);
168 BOOST_TEST(dataA.getVersionNumber() == v2);
169 BOOST_TEST(dataB.getVersionNumber() == v2);
170 BOOST_TEST(
interrupt6.getVersionNumber() == v2);
171 BOOST_TEST(dataA.dataValidity() == ctk::DataValidity::faulty);
172 BOOST_TEST(dataB.dataValidity() == ctk::DataValidity::faulty);
173 BOOST_TEST(
interrupt6.dataValidity() == ctk::DataValidity::ok);
181 std::cout <<
"TestMultiInterrupt" << std::endl;
185 auto realm = realmStore.getRealm(
"MyIdRealm");
196 BOOST_REQUIRE(!dataA.readNonBlocking());
197 BOOST_REQUIRE(!dataB.readNonBlocking());
198 BOOST_REQUIRE(!intA.readNonBlocking());
199 BOOST_REQUIRE(!intB.readNonBlocking());
202 keyA.setAndWrite(12);
203 keyB.setAndWrite(15);
206 BOOST_REQUIRE(dataA.readNonBlocking());
207 BOOST_REQUIRE(dataB.readNonBlocking());
208 BOOST_REQUIRE(intA.readNonBlocking());
209 BOOST_REQUIRE(intB.readNonBlocking());
210 BOOST_REQUIRE(!dataA.readNonBlocking());
211 BOOST_REQUIRE(!dataB.readNonBlocking());
212 BOOST_REQUIRE(!intA.readNonBlocking());
213 BOOST_REQUIRE(!intB.readNonBlocking());
215 auto v1 = realm->getVersion(ctk::async::DataConsistencyKey(keyA));
216 auto v2 = realm->getVersion(ctk::async::DataConsistencyKey(keyB));
217 BOOST_REQUIRE(v1 > v0);
218 BOOST_REQUIRE(v2 > v1);
219 BOOST_TEST(dataA.getVersionNumber() == v1);
220 BOOST_TEST(intA.getVersionNumber() == v1);
221 BOOST_TEST(dataB.getVersionNumber() == v2);
222 BOOST_TEST(intB.getVersionNumber() == v2);
225 keyA.setAndWrite(15);
226 dummy->triggerInterrupt(6);
228 BOOST_REQUIRE(dataA.readNonBlocking());
229 BOOST_REQUIRE(intA.readNonBlocking());
230 BOOST_REQUIRE(!dataA.readNonBlocking());
231 BOOST_REQUIRE(!dataB.readNonBlocking());
232 BOOST_REQUIRE(!intA.readNonBlocking());
233 BOOST_REQUIRE(!intB.readNonBlocking());
235 BOOST_TEST(dataA.getVersionNumber() == v2);
236 BOOST_TEST(intA.getVersionNumber() == v2);