1 package io.fd.honeycomb.lisp.translate.write;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
6 import static org.junit.Assert.fail;
7 import static org.mockito.Matchers.any;
8 import static org.mockito.Mockito.times;
9 import static org.mockito.Mockito.verify;
10 import static org.mockito.Mockito.when;
11 import static org.mockito.MockitoAnnotations.initMocks;
13 import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
14 import io.fd.honeycomb.translate.write.WriteFailedException;
15 import io.fd.honeycomb.vpp.test.write.WriterCustomizerTest;
16 import io.fd.vpp.jvpp.VppCallbackException;
17 import io.fd.vpp.jvpp.core.dto.LispAddDelMapRequestItrRlocs;
18 import io.fd.vpp.jvpp.core.dto.LispAddDelMapRequestItrRlocsReply;
19 import java.util.concurrent.CompletableFuture;
20 import java.util.concurrent.ExecutionException;
21 import java.util.concurrent.TimeUnit;
22 import java.util.concurrent.TimeoutException;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.mockito.ArgumentCaptor;
26 import org.mockito.Captor;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.itr.remote.locator.sets.grouping.ItrRemoteLocatorSet;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.itr.remote.locator.sets.grouping.ItrRemoteLocatorSetBuilder;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 public class ItrRemoteLocatorSetCustomizerTest extends WriterCustomizerTest implements ByteDataTranslator {
33 private static final String VALID_NAME = "loc-set";
36 private ArgumentCaptor<LispAddDelMapRequestItrRlocs> requestCaptor;
38 private ItrRemoteLocatorSetCustomizer customizer;
39 private InstanceIdentifier<ItrRemoteLocatorSet> validId;
40 private ItrRemoteLocatorSet validData;
43 public void setUp() throws Exception {
45 customizer = new ItrRemoteLocatorSetCustomizer(api);
46 validId = InstanceIdentifier.create(ItrRemoteLocatorSet.class);
47 validData = new ItrRemoteLocatorSetBuilder().setRemoteLocatorSetName(VALID_NAME).build();
51 public void writeCurrentAttributesSuccess() throws Exception {
53 customizer.writeCurrentAttributes(validId, validData, writeContext);
54 verifyWriteInvoked(true, VALID_NAME);
58 public void writeCurrentAttributesFailed() {
62 customizer.writeCurrentAttributes(validId, validData, writeContext);
63 } catch (WriteFailedException e) {
64 assertTrue(e.getCause() instanceof VppCallbackException);
65 verifyWriteInvoked(true, VALID_NAME);
69 fail("Test should have thrown exception");
73 public void updateCurrentAttributes() {
75 customizer.updateCurrentAttributes(validId, validData, validData, writeContext);
76 } catch (WriteFailedException e) {
77 assertTrue(e.getCause() instanceof UnsupportedOperationException);
81 fail("Test should have thrown exception");
85 public void deleteCurrentAttributesSuccess() throws Exception {
87 customizer.deleteCurrentAttributes(validId, validData, writeContext);
88 verifyWriteInvoked(false, VALID_NAME);
92 public void deleteCurrentAttributesFailed() throws Exception {
96 customizer.writeCurrentAttributes(validId, validData, writeContext);
97 } catch (WriteFailedException e) {
98 assertTrue(e.getCause() instanceof VppCallbackException);
99 verifyWriteInvoked(true, VALID_NAME);
103 fail("Test should have thrown exception");
106 private void onWriteSuccess() {
107 when(api.lispAddDelMapRequestItrRlocs(any(LispAddDelMapRequestItrRlocs.class)))
108 .thenReturn(CompletableFuture.completedFuture(new LispAddDelMapRequestItrRlocsReply()));
111 private void onWriteThrow() {
112 when(api.lispAddDelMapRequestItrRlocs(any(LispAddDelMapRequestItrRlocs.class)))
113 .thenReturn(new CompletableFuture<LispAddDelMapRequestItrRlocsReply>() {
115 public LispAddDelMapRequestItrRlocsReply get(final long l, final TimeUnit timeUnit)
116 throws InterruptedException, ExecutionException, TimeoutException {
117 throw new ExecutionException(new VppCallbackException("lispAddDelMapRequestItrRlocs", 1, -2));
122 private void verifyWriteInvoked(final boolean add, final String name) {
123 verify(api, times(1)).lispAddDelMapRequestItrRlocs(requestCaptor.capture());
125 final LispAddDelMapRequestItrRlocs request = requestCaptor.getValue();
126 assertNotNull(request);
127 assertEquals(booleanToByte(add), request.isAdd);
128 assertEquals(name, toString(request.locatorSetName));