2 * Copyright (C) 2014 Cisco Systems, Inc.
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 * Authors : Thomas Bachman
11 package org.opendaylight.groupbasedpolicy.renderer.opflex;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.verify;
16 import static org.mockito.Mockito.when;
18 import java.util.ArrayList;
19 import java.util.List;
20 import java.util.concurrent.Executors;
21 import java.util.concurrent.ScheduledExecutorService;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.mockito.Mock;
26 import org.mockito.MockitoAnnotations;
27 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
28 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
29 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
30 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
34 import com.google.common.util.concurrent.CheckedFuture;
41 public class EprContextTest implements EprContext.EprCtxCallback {
42 protected static final Logger logger = LoggerFactory.getLogger(L2EprOperationTest.class);
45 private WriteTransaction mockWriter;
47 private DataBroker mockDataProvider;
49 private EprOperation mockOperation;
51 private WriteTransaction mockWriteTransaction;
53 private ReadOnlyTransaction mockReadTransaction;
55 CheckedFuture<Void, TransactionCommitFailedException> mockFuture;
57 private ScheduledExecutorService executor;
58 private EprContext ec;
59 private int callbacks;
63 public void callback(EprContext ctx) {
68 public void setUp() throws Exception {
69 MockitoAnnotations.initMocks(this);
70 executor = Executors.newScheduledThreadPool(1);
72 ec = new EprContext(null, null, mockDataProvider, executor);
73 ec.addOperation(mockOperation);
77 public void testCreate() throws Exception {
78 when(mockDataProvider.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction);
79 when(mockWriteTransaction.submit()).thenReturn(mockFuture);
81 verify(mockOperation).put(mockWriteTransaction);
82 verify(mockFuture).addListener(ec, executor);
86 public void testDelete() throws Exception {
87 when(mockDataProvider.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction);
88 when(mockWriteTransaction.submit()).thenReturn(mockFuture);
90 verify(mockOperation).delete(mockWriteTransaction);
91 verify(mockFuture).addListener(ec, executor);
96 public void testLookup() throws Exception {
97 when(mockDataProvider.newReadOnlyTransaction()).thenReturn(mockReadTransaction);
99 verify(mockOperation).setCallback(ec);
100 verify(mockOperation).read(mockReadTransaction, executor);
105 public void testCallback() throws Exception {
106 List<EprOperation> ops = new ArrayList<EprOperation>();
108 EprOperation op1 = mock(EprOperation.class);
109 EprOperation op2 = mock(EprOperation.class);
110 EprOperation op3 = mock(EprOperation.class);
111 EprOperation op4 = mock(EprOperation.class);
118 when(mockDataProvider.newReadOnlyTransaction()).thenReturn(mockReadTransaction);
121 ec.setCallback(this);
123 for (EprOperation op: ops) {
126 assertTrue(this.callbacks == 0);
130 for (EprOperation op: ops) {
133 assertTrue(this.callbacks == 0);
134 ec.callback(mockOperation);
135 assertTrue(this.callbacks == 1);