2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.sal.dom.store.impl;
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
14 import org.opendaylight.mdsal.common.api.AsyncDataChangeEvent;
15 import org.opendaylight.mdsal.common.api.AsyncDataBroker.DataChangeScope;
17 import java.util.concurrent.ExecutionException;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
21 public class WildcardedScopeSubtreeTest extends DefaultDataChangeListenerTestSuite {
23 private static final YangInstanceIdentifier TOP_LEVEL_LIST_ALL = TOP_LEVEL.node(TestModel.OUTER_LIST_QNAME).node(
24 TestModel.OUTER_LIST_QNAME);
27 protected void customizeTask(final DatastoreTestTask task) {
28 task.changeListener(TOP_LEVEL_LIST_ALL, DataChangeScope.SUBTREE);
32 public void putTopLevelOneNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
34 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
36 assertNotContains(change.getCreatedData(), TOP_LEVEL);
37 assertContains(change.getCreatedData(), path(FOO), path(FOO, BAR));
38 assertEmpty(change.getUpdatedData());
39 assertEmpty(change.getRemovedPaths());
44 public void replaceTopLevelNestedChanged(final DatastoreTestTask task) throws InterruptedException,
47 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
48 assertNotNull(change);
50 assertContains(change.getCreatedData(), path(FOO, BAZ));
51 assertContains(change.getUpdatedData(), path(FOO));
52 assertNotContains(change.getUpdatedData(), TOP_LEVEL);
53 assertContains(change.getRemovedPaths(), path(FOO, BAR));
58 protected void putTopLevelWithTwoNested(final DatastoreTestTask task) throws InterruptedException,
61 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
62 assertNotNull(change);
63 assertFalse(change.getCreatedData().isEmpty());
65 assertContains(change.getCreatedData(), path(FOO), path(FOO, BAR), path(FOO, BAZ));
66 assertNotContains(change.getCreatedData(), TOP_LEVEL);
67 assertEmpty(change.getUpdatedData());
68 assertEmpty(change.getRemovedPaths());
73 protected void twoNestedExistsOneIsDeleted(final DatastoreTestTask task) throws InterruptedException,
76 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
77 assertNotNull(change);
78 assertTrue(change.getCreatedData().isEmpty());
79 assertContains(change.getUpdatedData(), path(FOO));
80 assertNotContains(change.getUpdatedData(), TOP_LEVEL);
81 assertContains(change.getRemovedPaths(),path(FOO, BAZ));
85 public void nestedListExistsRootDeleted(final DatastoreTestTask task) throws InterruptedException,
88 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
90 assertEmpty(change.getCreatedData());
91 assertEmpty(change.getUpdatedData());
93 assertNotContains(change.getUpdatedData(), TOP_LEVEL);
94 assertContains(change.getRemovedPaths(), path(FOO),path(FOO, BAZ),path(FOO,BAR));
98 protected void existingOneNestedWriteAdditionalNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
99 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
101 assertContains(change.getCreatedData(), path(FOO,BAZ));
102 assertNotContains(change.getCreatedData(), path(FOO,BAR));
103 assertContains(change.getUpdatedData(), path(FOO));
104 assertNotContains(change.getUpdatedData(), TOP_LEVEL);
105 assertEmpty(change.getRemovedPaths());
109 protected void existingTopWriteTwoNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
110 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
112 assertContains(change.getCreatedData(), path(FOO,BAR),path(FOO,BAZ));
113 assertContains(change.getUpdatedData(), path(FOO));
114 assertNotContains(change.getUpdatedData(), TOP_LEVEL, path(FOO,BAR));
115 assertEmpty(change.getRemovedPaths());
119 protected void existingTopWriteSibling(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
120 final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
122 assertContains(change.getCreatedData(), path(FOO_SIBLING));
123 assertNotContains(change.getUpdatedData(), path(FOO), TOP_LEVEL);
124 assertEmpty(change.getRemovedPaths());