2 * Copyright (c) 2016 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package io.fd.honeycomb.vppioam.impl.config;
19 import static org.junit.Assert.assertTrue;
20 import static org.junit.Assert.fail;
21 import static org.mockito.Matchers.any;
22 import static org.mockito.Mockito.doReturn;
23 import static org.mockito.Mockito.times;
24 import static org.mockito.Mockito.verify;
25 import static org.mockito.Mockito.when;
27 import io.fd.honeycomb.translate.vpp.util.NamingContext;
28 import io.fd.honeycomb.translate.write.WriteFailedException;
29 import io.fd.honeycomb.vpp.test.write.WriterCustomizerTest;
30 import org.junit.Test;
31 import org.mockito.Mock;
32 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
34 import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAdd;
35 import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileAddReply;
36 import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDel;
37 import io.fd.vpp.jvpp.ioamtrace.dto.TraceProfileDelReply;
38 import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
39 import io.fd.vpp.jvpp.VppBaseCallException;
40 import io.fd.vpp.jvpp.VppCallbackException;
42 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.IoamTraceConfig;
43 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig;
44 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig.TraceTsp;
45 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigBuilder;
46 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig.TraceOp;
47 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
48 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfigKey;
49 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.trace.config.NodeInterfaces;
52 public class IoamTraceWriterCustomizerTest extends WriterCustomizerTest {
54 private static final String TRACE_NAME = "trace_test";
57 protected FutureJVppIoamtrace jvppIoam;
59 private IoamTraceWriterCustomizer customizer;
62 public void setUp() throws Exception {
63 customizer = new IoamTraceWriterCustomizer(jvppIoam);
66 private static TraceConfig generateTraceConfig(final String name) {
67 final TraceConfigBuilder builder = new TraceConfigBuilder();
68 builder.setTraceConfigName(name);
69 builder.setKey(new TraceConfigKey(name));
70 builder.setAclName(name);
71 builder.setTraceType(new Short("31"));
72 builder.setTraceNumElt(new Short("4"));
73 builder.setTraceTsp(TraceTsp.Milliseconds);
74 builder.setTraceOp(TraceOp.Add);
75 builder.setTraceAppData(new Long("123"));
76 builder.setNodeId(new Long("1"));
78 return builder.build();
81 private static InstanceIdentifier<TraceConfig> getTraceConfigId(final String name) {
82 return InstanceIdentifier.create(IoamTraceConfig.class)
83 .child(TraceConfig.class, new TraceConfigKey(name));
86 private void whenTraceAddThenSuccess() {
87 final TraceProfileAddReply reply = new TraceProfileAddReply();
89 doReturn(future(reply)).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class));
92 private void whenTraceAddThenFailure() {
93 doReturn(failedFuture()).when(jvppIoam).traceProfileAdd(any(TraceProfileAdd.class));
96 private void whenTraceDelThenSuccess() {
97 final TraceProfileDelReply reply = new TraceProfileDelReply();
99 doReturn(future(reply)).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class));
102 private void whenTraceDelThenFailure() {
103 doReturn(failedFuture()).when(jvppIoam).traceProfileDel(any(TraceProfileDel.class));
106 private static TraceProfileAdd generateTraceProfileAdd() {
107 final TraceProfileAdd request = new TraceProfileAdd();
108 request.traceType = 0x1f;
111 request.traceTsp = 1;
112 request.appData = 123;
117 private static TraceProfileDel generateTraceProfileDel() {
118 final TraceProfileDel request = new TraceProfileDel();
124 public void testCreate() throws Exception {
125 final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
126 final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
128 whenTraceAddThenSuccess();
130 customizer.writeCurrentAttributes(id, traceConfig, writeContext);
132 verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd());
136 public void testCreateFailed() throws Exception {
137 final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
138 final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
140 whenTraceAddThenFailure();
143 customizer.writeCurrentAttributes(id, traceConfig, writeContext);
144 } catch (WriteFailedException e) {
145 //assertTrue(e.getCause() instanceof VppBaseCallException);
146 verify(jvppIoam).traceProfileAdd(generateTraceProfileAdd());
150 fail("WriteFailedException.CreateFailedException was expected");
154 public void testDelete() throws Exception {
156 final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
157 final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
159 whenTraceDelThenSuccess();
161 customizer.deleteCurrentAttributes(id, traceConfig, writeContext);
163 verify(jvppIoam).traceProfileDel(generateTraceProfileDel());
167 public void testDeleteFailed() throws Exception {
169 final TraceConfig traceConfig = generateTraceConfig(TRACE_NAME);
170 final InstanceIdentifier<TraceConfig> id = getTraceConfigId(TRACE_NAME);
172 whenTraceDelThenFailure();
175 customizer.deleteCurrentAttributes(id, traceConfig, writeContext);
176 } catch (WriteFailedException e) {
177 //assertTrue(e.getCause() instanceof VppBaseCallException);
178 verify(jvppIoam).traceProfileDel(generateTraceProfileDel());
182 fail("WriteFailedException.DeleteFailedException was expected");
184 customizer.deleteCurrentAttributes(id, traceConfig, writeContext);