import akka.testkit.JavaTestKit;
import akka.testkit.TestActorRef;
import java.util.concurrent.TimeUnit;
+import org.junit.Ignore;
import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.Mockito;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
import org.opendaylight.controller.cluster.datastore.exceptions.UnknownMessageException;
import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats;
private static final TransactionType WO = TransactionType.WRITE_ONLY;
private static final ShardIdentifier SHARD_IDENTIFIER =
- ShardIdentifier.builder().memberName("member-1")
- .shardName("inventory").type("config").build();
+ ShardIdentifier.create("inventory", MemberName.forName("member-1"), "config");
private DatastoreContext datastoreContext = DatastoreContext.newBuilder().build();
}
private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction<?> transaction, String name) {
- return newTransactionActor(type, transaction, name, DataStoreVersions.CURRENT_VERSION);
- }
-
- private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction<?> transaction, String name, short version) {
- return newTransactionActor(type, transaction, null, name, version);
+ return newTransactionActor(type, transaction, null, name);
}
private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction<?> transaction, ActorRef shard, String name) {
- return newTransactionActor(type, transaction, null, name, DataStoreVersions.CURRENT_VERSION);
- }
-
- private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction<?> transaction, ActorRef shard, String name,
- short version) {
Props props = ShardTransaction.props(type, transaction, shard != null ? shard : createShard(),
- datastoreContext, shardStats, "txn", version);
+ datastoreContext, shardStats);
return getSystem().actorOf(props, name);
}
}
private void testOnReceiveReadData(final ActorRef transaction) {
- //serialized read
- transaction.tell(new ReadData(YangInstanceIdentifier.builder().build()).toSerializable(),
- getRef());
-
- Object replySerialized = expectMsgClass(duration("5 seconds"), ReadDataReply.class);
-
- assertNotNull(ReadDataReply.fromSerializable(replySerialized).getNormalizedNode());
-
- // unserialized read
- transaction.tell(new ReadData(YangInstanceIdentifier.builder().build()),getRef());
+ transaction.tell(new ReadData(YangInstanceIdentifier.EMPTY,
+ DataStoreVersions.CURRENT_VERSION), getRef());
ReadDataReply reply = expectMsgClass(duration("5 seconds"), ReadDataReply.class);
}
private void testOnReceiveReadDataWhenDataNotFound(final ActorRef transaction) {
- // serialized read
- transaction.tell(new ReadData(TestModel.TEST_PATH).toSerializable(), getRef());
-
- Object replySerialized = expectMsgClass(duration("5 seconds"), ReadDataReply.class);
-
- assertTrue(ReadDataReply.fromSerializable(replySerialized).getNormalizedNode() == null);
-
- // unserialized read
- transaction.tell(new ReadData(TestModel.TEST_PATH),getRef());
+ transaction.tell(new ReadData(TestModel.TEST_PATH, DataStoreVersions.CURRENT_VERSION),getRef());
ReadDataReply reply = expectMsgClass(duration("5 seconds"), ReadDataReply.class);
}
private void testOnReceiveDataExistsPositive(final ActorRef transaction) {
- transaction.tell(new DataExists(YangInstanceIdentifier.builder().build()).toSerializable(),
- getRef());
-
- Object replySerialized = expectMsgClass(duration("5 seconds"), ShardTransactionMessages.DataExistsReply.class);
- assertTrue(DataExistsReply.fromSerializable(replySerialized).exists());
-
- // unserialized read
- transaction.tell(new DataExists(YangInstanceIdentifier.builder().build()),getRef());
+ transaction.tell(new DataExists(YangInstanceIdentifier.EMPTY,
+ DataStoreVersions.CURRENT_VERSION), getRef());
DataExistsReply reply = expectMsgClass(duration("5 seconds"), DataExistsReply.class);
}
private void testOnReceiveDataExistsNegative(final ActorRef transaction) {
- transaction.tell(new DataExists(TestModel.TEST_PATH).toSerializable(), getRef());
-
- Object replySerialized = expectMsgClass(duration("5 seconds"), ShardTransactionMessages.DataExistsReply.class);
- assertFalse(DataExistsReply.fromSerializable(replySerialized).exists());
-
- // unserialized read
- transaction.tell(new DataExists(TestModel.TEST_PATH),getRef());
+ transaction.tell(new DataExists(TestModel.TEST_PATH, DataStoreVersions.CURRENT_VERSION),getRef());
DataExistsReply reply = expectMsgClass(duration("5 seconds"), DataExistsReply.class);
batched.setTotalMessagesSent(1);
transaction.tell(batched, getRef());
- expectMsgClass(duration("5 seconds"), CommitTransactionReply.SERIALIZABLE_CLASS);
+ expectMsgClass(duration("5 seconds"), CommitTransactionReply.class);
watcher.expectMsgClass(duration("5 seconds"), Terminated.class);
}};
}
ImmutableNodes.containerNode(TestModel.TEST_QNAME));
NormalizedNode<?,?> expectedRoot = ShardTest.readStore(store.getDataTree(),
- YangInstanceIdentifier.builder().build());
+ YangInstanceIdentifier.EMPTY);
final ActorRef transaction = newTransactionActor(TransactionType.READ_ONLY, readOnlyTransaction(),
"testOnReceiveCreateSnapshot");
}};
}
+ // Unknown operations are being logged
+ @Ignore
@Test(expected=UnknownMessageException.class)
public void testNegativePerformingWriteOperationOnReadTransaction() throws Exception {
final ActorRef shard = createShard();
final Props props = ShardTransaction.props(TransactionType.READ_ONLY, readOnlyTransaction(), shard,
- datastoreContext, shardStats, "txn", DataStoreVersions.CURRENT_VERSION);
+ datastoreContext, shardStats);
final TestActorRef<ShardTransaction> transaction = TestActorRef.apply(props,getSystem());
transaction.receive(new BatchedModifications("tx1", DataStoreVersions.CURRENT_VERSION, null),
}};
}
+ @Test
+ public void testOnReceivePreBoronReadData() throws Exception {
+ new JavaTestKit(getSystem()) {{
+ ActorRef transaction = newTransactionActor(RO, readOnlyTransaction(), createShard(),
+ "testOnReceivePreBoronReadData");
+
+ transaction.tell(new ReadData(YangInstanceIdentifier.EMPTY, DataStoreVersions.LITHIUM_VERSION).
+ toSerializable(), getRef());
+
+ Object replySerialized = expectMsgClass(duration("5 seconds"), ReadDataReply.class);
+ assertNotNull(ReadDataReply.fromSerializable(replySerialized).getNormalizedNode());
+ }};
+ }
+
+ @Test
+ public void testOnReceivePreBoronDataExists() throws Exception {
+ new JavaTestKit(getSystem()) {{
+ ActorRef transaction = newTransactionActor(RO, readOnlyTransaction(), createShard(),
+ "testOnReceivePreBoronDataExists");
+
+ transaction.tell(new DataExists(YangInstanceIdentifier.EMPTY, DataStoreVersions.LITHIUM_VERSION).
+ toSerializable(), getRef());
+
+ Object replySerialized = expectMsgClass(duration("5 seconds"),
+ ShardTransactionMessages.DataExistsReply.class);
+ assertTrue(DataExistsReply.fromSerializable(replySerialized).exists());
+ }};
+ }
+
public static class TestException extends RuntimeException {
private static final long serialVersionUID = 1L;
}