/* * Copyright (c) 2015 Inocybe Technologies and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.ovsdb.southbound.ovsdb.transact; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.ovsdb.lib.operations.Operation; import org.opendaylight.ovsdb.lib.operations.OperationResult; import org.opendaylight.ovsdb.lib.operations.TransactionBuilder; import org.opendaylight.ovsdb.lib.schema.DatabaseSchema; import org.opendaylight.ovsdb.southbound.InstanceIdentifierCodec; import org.opendaylight.ovsdb.southbound.OvsdbConnectionInstance; import org.powermock.api.mockito.PowerMockito; import org.powermock.api.support.membermodification.MemberModifier; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; @PrepareForTest({TransactInvokerImpl.class}) @RunWith(PowerMockRunner.class) public class TransactInvokerImplTest { @Mock private OvsdbConnectionInstance connectionInstance; @Mock private DatabaseSchema dbSchema; private TransactInvokerImpl transactInvokerImpl; @Before public void setUp() throws Exception { transactInvokerImpl = new TransactInvokerImpl(connectionInstance, dbSchema); MemberModifier.field(TransactInvokerImpl.class, "connectionInstance").set(transactInvokerImpl, connectionInstance); MemberModifier.field(TransactInvokerImpl.class, "dbSchema").set(transactInvokerImpl, dbSchema); } @Test public void testTransactionInvokerImpl() { TransactInvokerImpl transactInvokerImpl1 = new TransactInvokerImpl(connectionInstance, dbSchema); assertEquals(connectionInstance, Whitebox.getInternalState(transactInvokerImpl1, "connectionInstance")); assertEquals(dbSchema, Whitebox.getInternalState(transactInvokerImpl1, "dbSchema")); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void testInvoke() throws Exception { TransactCommand command = mock(TransactCommand.class); TransactionBuilder tb = mock(TransactionBuilder.class); PowerMockito.whenNew(TransactionBuilder.class).withAnyArguments().thenReturn(tb); doNothing().when(command).execute(any(TransactionBuilder.class), any(BridgeOperationalState.class), any(AsyncDataChangeEvent.class), any(InstanceIdentifierCodec.class)); ListenableFuture<List<OperationResult>> result = mock(ListenableFuture.class); when(tb.execute()).thenReturn(result); List<Operation> operation = new ArrayList<>(); operation.add(mock(Operation.class)); when(tb.getOperations()).thenReturn(operation); List<OperationResult> got = new ArrayList<>(); when(result.get()).thenReturn(got); transactInvokerImpl.invoke(command, mock(BridgeOperationalState.class), mock(AsyncDataChangeEvent.class), mock(InstanceIdentifierCodec.class)); verify(result).get(); } }