Bug 1224, Bug 1221: Added Test case scenarios for Data Change Events.
[controller.git] / opendaylight / md-sal / sal-inmemory-datastore / src / test / java / org / opendaylight / controller / md / sal / dom / store / impl / RootScopeSubtreeTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.md.sal.dom.store.impl;
9
10 import java.util.concurrent.ExecutionException;
11
12 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
13 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
14 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
15 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16
17 public class RootScopeSubtreeTest extends DefaultDataChangeListenerTestSuite {
18
19     @Override
20     protected void customizeTask(final DatastoreTestTask task) {
21         task.changeListener(TOP_LEVEL, DataChangeScope.SUBTREE);
22     }
23
24     @Override
25     public void putTopLevelOneNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
26         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
27
28         assertContains(change.getCreatedData(), TOP_LEVEL, path(FOO), path(FOO, BAR));
29         assertEmpty(change.getUpdatedData());
30         assertEmpty(change.getRemovedPaths());
31     }
32
33     @Override
34     public void replaceTopLevelNestedChanged(final DatastoreTestTask task) throws InterruptedException,
35             ExecutionException {
36
37         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
38
39         assertContains(change.getCreatedData(), path(FOO, BAZ));
40         assertContains(change.getUpdatedData(), TOP_LEVEL, path(FOO));
41         assertContains(change.getRemovedPaths(), path(FOO, BAR));
42     }
43
44     @Override
45     protected void putTopLevelWithTwoNested(final DatastoreTestTask task) throws InterruptedException,
46             ExecutionException {
47
48         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
49
50         assertContains(change.getCreatedData(), TOP_LEVEL, path(FOO), path(FOO, BAR), path(FOO, BAZ));
51         assertEmpty(change.getUpdatedData());
52         assertEmpty(change.getRemovedPaths());
53     }
54
55     @Override
56     protected void twoNestedExistsOneIsDeleted(final DatastoreTestTask task) throws InterruptedException,
57             ExecutionException {
58
59         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
60
61         assertEmpty(change.getCreatedData());
62         assertContains(change.getUpdatedData(), TOP_LEVEL, path(FOO));
63         assertContains(change.getRemovedPaths(), path(FOO, BAZ));
64     }
65
66     @Override
67     protected void nestedListExistsRootDeleted(final DatastoreTestTask task) throws InterruptedException,
68             ExecutionException {
69
70         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
71
72         assertEmpty(change.getCreatedData());
73         assertEmpty(change.getUpdatedData());
74         assertContains(change.getRemovedPaths(), TOP_LEVEL, path(FOO), path(FOO, BAR), path(FOO, BAZ));
75     }
76
77     @Override
78     protected void existingOneNestedWriteAdditionalNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
79         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
80
81         assertContains(change.getCreatedData(), path(FOO,BAZ));
82         assertNotContains(change.getCreatedData(), path(FOO,BAR));
83         assertContains(change.getUpdatedData(), TOP_LEVEL, path(FOO));
84         assertEmpty(change.getRemovedPaths());
85     }
86
87     @Override
88     protected void existingTopWriteTwoNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
89         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
90
91         assertContains(change.getCreatedData(), path(FOO,BAR),path(FOO,BAZ));
92         assertContains(change.getUpdatedData(), TOP_LEVEL, path(FOO));
93         assertNotContains(change.getUpdatedData(), path(FOO,BAR));
94         assertEmpty(change.getRemovedPaths());
95     }
96
97     @Override
98     protected void existingTopWriteSibling(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
99         AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent().get();
100
101         assertContains(change.getCreatedData(), path(FOO_SIBLING));
102         assertContains(change.getUpdatedData(), TOP_LEVEL);
103         assertNotContains(change.getUpdatedData(), path(FOO));
104         assertEmpty(change.getRemovedPaths());
105     }
106 }