Merge "Cleanup root pom "name"."
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / TransactionChainProxyTest.java
1 /*
2  *
3  *  Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  *  This program and the accompanying materials are made available under the
6  *  terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  *  and is available at http://www.eclipse.org/legal/epl-v10.html
8  *
9  */
10
11 package org.opendaylight.controller.cluster.datastore;
12
13 import static org.mockito.Matchers.anyObject;
14 import static org.mockito.Mockito.doReturn;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.times;
17 import static org.mockito.Mockito.verify;
18 import org.junit.Assert;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.mockito.Mock;
22 import org.mockito.MockitoAnnotations;
23 import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
24 import org.opendaylight.controller.cluster.datastore.utils.MockActorContext;
25 import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction;
26 import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction;
27 import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransaction;
28 import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
29 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
30
31 public class TransactionChainProxyTest extends AbstractActorTest{
32     ActorContext actorContext = null;
33     SchemaContext schemaContext = mock(SchemaContext.class);
34
35     @Mock
36     ActorContext mockActorContext;
37
38     @Before
39     public void setUp() {
40         MockitoAnnotations.initMocks(this);
41
42         actorContext = new MockActorContext(getSystem());
43         actorContext.setSchemaContext(schemaContext);
44
45         doReturn(schemaContext).when(mockActorContext).getSchemaContext();
46     }
47
48     @SuppressWarnings("resource")
49     @Test
50     public void testNewReadOnlyTransaction() throws Exception {
51
52      DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newReadOnlyTransaction();
53          Assert.assertTrue(dst instanceof DOMStoreReadTransaction);
54
55     }
56
57     @SuppressWarnings("resource")
58     @Test
59     public void testNewReadWriteTransaction() throws Exception {
60         DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newReadWriteTransaction();
61         Assert.assertTrue(dst instanceof DOMStoreReadWriteTransaction);
62
63     }
64
65     @SuppressWarnings("resource")
66     @Test
67     public void testNewWriteOnlyTransaction() throws Exception {
68         DOMStoreTransaction dst = new TransactionChainProxy(actorContext).newWriteOnlyTransaction();
69         Assert.assertTrue(dst instanceof DOMStoreWriteTransaction);
70
71     }
72
73     @Test
74     public void testClose() throws Exception {
75         ActorContext context = mock(ActorContext.class);
76
77         new TransactionChainProxy(context).close();
78
79         verify(context, times(1)).broadcast(anyObject());
80     }
81
82     @Test
83     public void testTransactionChainsHaveUniqueId(){
84         TransactionChainProxy one = new TransactionChainProxy(mock(ActorContext.class));
85         TransactionChainProxy two = new TransactionChainProxy(mock(ActorContext.class));
86
87         Assert.assertNotEquals(one.getTransactionChainId(), two.getTransactionChainId());
88     }
89
90     @Test
91     public void testRateLimitingUsedInReadWriteTxCreation(){
92         TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext);
93
94         txChainProxy.newReadWriteTransaction();
95
96         verify(mockActorContext, times(1)).acquireTxCreationPermit();
97     }
98
99     @Test
100     public void testRateLimitingUsedInWriteOnlyTxCreation(){
101         TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext);
102
103         txChainProxy.newWriteOnlyTransaction();
104
105         verify(mockActorContext, times(1)).acquireTxCreationPermit();
106     }
107
108
109     @Test
110     public void testRateLimitingNotUsedInReadOnlyTxCreation(){
111         TransactionChainProxy txChainProxy = new TransactionChainProxy(mockActorContext);
112
113         txChainProxy.newReadOnlyTransaction();
114
115         verify(mockActorContext, times(0)).acquireTxCreationPermit();
116     }
117 }