- final Optional<NormalizedNode> optional = txChain.newReadOnlyTransaction()
- .read(CarsModel.CAR_LIST_PATH).get(5, TimeUnit.SECONDS);
- assertTrue("isPresent", optional.isPresent());
- assertEquals("# cars", numCars, ((Collection<?>) optional.get().body()).size());
+ try (var tx = txChain.newReadOnlyTransaction()) {
+ final var body = tx.read(CarsModel.CAR_LIST_PATH).get(5, TimeUnit.SECONDS).orElseThrow().body();
+ assertThat(body, instanceOf(Collection.class));
+ assertEquals(numCars, ((Collection<?>) body).size());
+ }
+ }
+
+ private void assertAskClientMetadata(final FrontendClientMetadata clientMeta) {
+ // ask based should track no metadata
+ assertEquals(List.of(), clientMeta.getCurrentHistories());
+ }
+
+ private void assertTellClientMetadata(final FrontendClientMetadata clientMeta, final int numCars) {
+ final var iterator = clientMeta.getCurrentHistories().iterator();
+ var metadata = iterator.next();
+ while (iterator.hasNext() && metadata.getHistoryId() != 1) {
+ metadata = iterator.next();
+ }
+
+ assertEquals(0, metadata.getClosedTransactions().size());
+
+ final var purgedRanges = metadata.getPurgedTransactions().ranges();
+
+ // FIXME: CONTROLLER-1991: remove this assumption
+ assumeTrue(false);
+
+ assertEquals(1, purgedRanges.size());
+ final var purgedRange = purgedRanges.first();
+ assertEquals(UnsignedLong.ZERO, purgedRange.lower());
+ assertEquals(UnsignedLong.valueOf(10), purgedRange.upper());