- protected ActorSystem getSystem() {
- return system;
- }
-
- @Test
- public void testWriteTransactionWithSingleShard() throws Exception {
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupDistributedDataStore("transactionIntegrationTest",
- "test-1")) {
-
- testWriteTransaction(dataStore, TestModel.TEST_PATH,
- ImmutableNodes.containerNode(TestModel.TEST_QNAME));
-
- testWriteTransaction(dataStore, TestModel.OUTER_LIST_PATH,
- ImmutableNodes.mapNodeBuilder(TestModel.OUTER_LIST_QNAME).build());
- }
- }
- };
- }
-
- @Test
- public void testWriteTransactionWithMultipleShards() throws Exception {
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupDistributedDataStore(
- "testWriteTransactionWithMultipleShards", "cars-1", "people-1")) {
-
- DOMStoreWriteTransaction writeTx = dataStore.newWriteOnlyTransaction();
- assertNotNull("newWriteOnlyTransaction returned null", writeTx);
-
- writeTx.write(CarsModel.BASE_PATH, CarsModel.emptyContainer());
- writeTx.write(PeopleModel.BASE_PATH, PeopleModel.emptyContainer());
-
- doCommit(writeTx.ready());
-
- writeTx = dataStore.newWriteOnlyTransaction();
-
- writeTx.write(CarsModel.CAR_LIST_PATH, CarsModel.newCarMapNode());
- writeTx.write(PeopleModel.PERSON_LIST_PATH, PeopleModel.newPersonMapNode());
-
- doCommit(writeTx.ready());
-
- writeTx = dataStore.newWriteOnlyTransaction();
-
- MapEntryNode car = CarsModel.newCarEntry("optima", BigInteger.valueOf(20000));
- YangInstanceIdentifier carPath = CarsModel.newCarPath("optima");
- writeTx.write(carPath, car);
-
- MapEntryNode person = PeopleModel.newPersonEntry("jack");
- YangInstanceIdentifier personPath = PeopleModel.newPersonPath("jack");
- writeTx.write(personPath, person);
-
- doCommit(writeTx.ready());
-
- // Verify the data in the store
-
- DOMStoreReadTransaction readTx = dataStore.newReadOnlyTransaction();
-
- Optional<NormalizedNode<?, ?>> optional = readTx.read(carPath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", car, optional.get());
-
- optional = readTx.read(personPath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", person, optional.get());
- }
- }
- };
- }
-
- @Test
- public void testReadWriteTransactionWithSingleShard() throws Exception {
- System.setProperty("shard.persistent", "true");
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupDistributedDataStore(
- "testReadWriteTransactionWithSingleShard", "test-1")) {
-
- // 1. Create a read-write Tx
-
- DOMStoreReadWriteTransaction readWriteTx = dataStore.newReadWriteTransaction();
- assertNotNull("newReadWriteTransaction returned null", readWriteTx);
-
- // 2. Write some data
-
- YangInstanceIdentifier nodePath = TestModel.TEST_PATH;
- NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
- readWriteTx.write(nodePath, nodeToWrite);
-
- // 3. Read the data from Tx
-
- Boolean exists = readWriteTx.exists(nodePath).checkedGet(5, TimeUnit.SECONDS);
- assertEquals("exists", true, exists);
-
- Optional<NormalizedNode<?, ?>> optional = readWriteTx.read(nodePath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", nodeToWrite, optional.get());
-
- // 4. Ready the Tx for commit
-
- DOMStoreThreePhaseCommitCohort cohort = readWriteTx.ready();
-
- // 5. Commit the Tx
-
- doCommit(cohort);
-
- // 6. Verify the data in the store
-
- DOMStoreReadTransaction readTx = dataStore.newReadOnlyTransaction();
-
- optional = readTx.read(nodePath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", nodeToWrite, optional.get());
- }
- }
- };
- }
-
- @Test
- public void testReadWriteTransactionWithMultipleShards() throws Exception {
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupDistributedDataStore(
- "testReadWriteTransactionWithMultipleShards", "cars-1", "people-1")) {
-
- DOMStoreReadWriteTransaction readWriteTx = dataStore.newReadWriteTransaction();
- assertNotNull("newReadWriteTransaction returned null", readWriteTx);
-
- readWriteTx.write(CarsModel.BASE_PATH, CarsModel.emptyContainer());
- readWriteTx.write(PeopleModel.BASE_PATH, PeopleModel.emptyContainer());
-
- doCommit(readWriteTx.ready());
-
- readWriteTx = dataStore.newReadWriteTransaction();
-
- readWriteTx.write(CarsModel.CAR_LIST_PATH, CarsModel.newCarMapNode());
- readWriteTx.write(PeopleModel.PERSON_LIST_PATH, PeopleModel.newPersonMapNode());
-
- doCommit(readWriteTx.ready());
-
- readWriteTx = dataStore.newReadWriteTransaction();
-
- MapEntryNode car = CarsModel.newCarEntry("optima", BigInteger.valueOf(20000));
- YangInstanceIdentifier carPath = CarsModel.newCarPath("optima");
- readWriteTx.write(carPath, car);
-
- MapEntryNode person = PeopleModel.newPersonEntry("jack");
- YangInstanceIdentifier personPath = PeopleModel.newPersonPath("jack");
- readWriteTx.write(personPath, person);
-
- Boolean exists = readWriteTx.exists(carPath).checkedGet(5, TimeUnit.SECONDS);
- assertEquals("exists", true, exists);
-
- Optional<NormalizedNode<?, ?>> optional = readWriteTx.read(carPath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", car, optional.get());
-
- doCommit(readWriteTx.ready());
-
- // Verify the data in the store
-
- DOMStoreReadTransaction readTx = dataStore.newReadOnlyTransaction();
-
- optional = readTx.read(carPath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", car, optional.get());
-
- optional = readTx.read(personPath).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("Data node", person, optional.get());
-
- }
- }
- };
- }
-
- @Test
- public void testSingleTransactionsWritesInQuickSuccession() throws Exception {
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupDistributedDataStore(
- "testSingleTransactionsWritesInQuickSuccession", "cars-1")) {
-
- DOMStoreTransactionChain txChain = dataStore.createTransactionChain();
-
- DOMStoreWriteTransaction writeTx = txChain.newWriteOnlyTransaction();
- writeTx.write(CarsModel.BASE_PATH, CarsModel.emptyContainer());
- writeTx.write(CarsModel.CAR_LIST_PATH, CarsModel.newCarMapNode());
- doCommit(writeTx.ready());
-
- writeTx = txChain.newWriteOnlyTransaction();
-
- int numCars = 5;
- for (int i = 0; i < numCars; i++) {
- writeTx.write(CarsModel.newCarPath("car" + i),
- CarsModel.newCarEntry("car" + i, BigInteger.valueOf(20000)));
- }
-
- doCommit(writeTx.ready());
-
- Optional<NormalizedNode<?, ?>> optional = txChain.newReadOnlyTransaction()
- .read(CarsModel.CAR_LIST_PATH).get(5, TimeUnit.SECONDS);
- assertEquals("isPresent", true, optional.isPresent());
- assertEquals("# cars", numCars, ((Collection<?>) optional.get().getValue()).size());
- }
- }
- };
- }
-