/* * Copyright (c) 2016 Cisco and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.fd.honeycomb.lisp.translate.read.trait; import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.MapLevel; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; import com.google.common.collect.ImmutableList; import io.fd.honeycomb.vpp.test.read.ReaderCustomizerTest; import io.fd.vpp.jvpp.VppCallbackException; import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails; import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump; import io.fd.vpp.jvpp.core.dto.LispEidTableMapDump; import java.util.Collections; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import javax.annotation.Nonnull; import org.junit.Before; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.yang.binding.DataObject; public abstract class SubtableReaderTestCase> extends ReaderCustomizerTest implements SubtableReader { protected final long expectedVni = 12; protected final int expectedTableId = 14; @Captor protected ArgumentCaptor requestCaptor; public SubtableReaderTestCase(final Class dataObjectClass, final Class> parentBuilderClass) { super(dataObjectClass, parentBuilderClass); } protected void doReturnValidNonEmptyDataOnDump() { LispEidTableMapDetailsReplyDump reply = new LispEidTableMapDetailsReplyDump(); LispEidTableMapDetails detailFirst = new LispEidTableMapDetails(); detailFirst.vni = Long.valueOf(expectedVni).intValue(); detailFirst.dpTable = expectedTableId; LispEidTableMapDetails detailSecond = new LispEidTableMapDetails(); detailSecond.vni = 13; detailSecond.dpTable = 15; reply.lispEidTableMapDetails = ImmutableList.of(detailFirst, detailSecond); when(api.lispEidTableMapDump(any(LispEidTableMapDump.class))) .thenReturn(future(reply)); } protected void doReturnEmptyDataOnDump() { LispEidTableMapDetailsReplyDump reply = new LispEidTableMapDetailsReplyDump(); reply.lispEidTableMapDetails = Collections.emptyList(); when(api.lispEidTableMapDump(any(LispEidTableMapDump.class))) .thenReturn(future(reply)); } protected void doThrowOnDump() { when(api.lispEidTableMapDump(any(LispEidTableMapDump.class))) .thenReturn(failedFuture()); } protected void verifyLispEidTableMapDumpCalled(@Nonnull final MapLevel expectedLevel) { verify(api, times(1)).lispEidTableMapDump(requestCaptor.capture()); assertEquals(expectedLevel.getValue(), requestCaptor.getValue().isL2); } protected void verifyLispEidTableMapDumpNotCalled() { verify(api, times(1)).lispEidTableMapDump(any()); } }