/*
* Copyright (c) 2016, 2017 Ericsson Inc. 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.sfc.genius.impl.handlers;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.sfc.genius.impl.handlers.readers.SfcGeniusRspReader;
import org.opendaylight.sfc.genius.impl.handlers.readers.SfcGeniusSfStatesReader;
import org.opendaylight.sfc.genius.impl.handlers.writers.SfcGeniusRspWriter;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.RspName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfpName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePathBuilder;
@RunWith(MockitoJUnitRunner.class)
public class SfcGeniusRspHandlerTest {
@Mock
SfcGeniusRspWriter sfcGeniusRspWriter;
@Mock
SfcGeniusRspReader sfcGeniusRspReader;
@Mock
SfcGeniusSfStatesReader sfcGeniusSfStatesReader;
@Mock
RenderedServicePath renderedServicePath;
@Mock(answer = Answers.CALLS_REAL_METHODS)
SfcGeniusRspHandler sfcGeniusRspHandler;
@Before
public void setup() {
when(sfcGeniusRspHandler.getSfStatesReader()).thenReturn(sfcGeniusSfStatesReader);
when(sfcGeniusRspHandler.getRspReader()).thenReturn(sfcGeniusRspReader);
when(sfcGeniusRspHandler.getRspWriter()).thenReturn(sfcGeniusRspWriter);
}
@Test
public void interfaceStateUp() throws Exception {
List<SfName> sfNameList = Arrays.asList(new SfName("SF1"), new SfName("SF2"));
List<SfpName> sfpNameList = Arrays.asList(new SfpName("RSP1"), new SfpName("RSP2"));
List<RspName> rspNameList = Arrays.asList(new RspName("RSP1"), new RspName("RSP2"));
List<RenderedServicePath> rspList = Arrays.asList(
new RenderedServicePathBuilder().setName(rspNameList.get(0)).build(),
new RenderedServicePathBuilder().setName(rspNameList.get(1)).build()
);
when(sfcGeniusSfStatesReader.readSfpNames(sfNameList))
.thenReturn(CompletableFuture.completedFuture(sfpNameList));
when(sfcGeniusRspReader.readRsp(rspNameList.get(0)))
.thenReturn(CompletableFuture.completedFuture(rspList.get(0)));
when(sfcGeniusRspReader.readRsp(rspNameList.get(1)))
.thenReturn(CompletableFuture.completedFuture(rspList.get(1)));
when(sfcGeniusRspWriter.deleteRsp(rspList.get(0)))
.thenReturn(CompletableFuture.completedFuture(rspList.get(0)));
when(sfcGeniusRspWriter.deleteRsp(rspList.get(1)))
.thenReturn(CompletableFuture.completedFuture(rspList.get(1)));
when(sfcGeniusRspWriter.createRsp(any()))
.thenReturn(CompletableFuture.completedFuture(null));
String testInterface = "TestInterface";
sfcGeniusRspHandler.interfaceStateUp(testInterface, sfNameList);
verify(sfcGeniusRspWriter).deleteRsp(rspList.get(0));
verify(sfcGeniusRspWriter).createRsp(rspList.get(0));
verify(sfcGeniusRspWriter).deleteRsp(rspList.get(1));
verify(sfcGeniusRspWriter).createRsp(rspList.get(1));
}
}