2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.base_endpoint;
11 import java.util.ArrayList;
12 import java.util.Arrays;
13 import java.util.Collection;
14 import java.util.List;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
20 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
21 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
22 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
23 import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
24 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
25 import org.opendaylight.groupbasedpolicy.util.EndpointUtils;
26 import org.opendaylight.groupbasedpolicy.util.IidFactory;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.Endpoints;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.RegisterEndpointInputBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.UnregisterEndpointInputBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainmentBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.NetworkDomainContainment;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.NetworkDomainContainmentBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.AddressEndpoints;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.ContainmentEndpoints;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpoint;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpoint;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpointBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.child.endpoints.ChildEndpoint;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.child.endpoints.ChildEndpointBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.ParentContainmentEndpointCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.ParentEndpointCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.containment.endpoint._case.ParentContainmentEndpoint;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.containment.endpoint._case.ParentContainmentEndpointBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.endpoint._case.ParentEndpoint;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.endpoint._case.ParentEndpointBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.AddressEndpointReg;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.AddressEndpointRegBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.ContainmentEndpointReg;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.ContainmentEndpointRegBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.unregister.endpoint.input.AddressEndpointUnreg;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.unregister.endpoint.input.AddressEndpointUnregBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.unregister.endpoint.input.ContainmentEndpointUnreg;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.unregister.endpoint.input.ContainmentEndpointUnregBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain;
61 import org.opendaylight.yangtools.yang.common.RpcResult;
63 import com.google.common.base.Optional;
64 import com.google.common.collect.ImmutableList;
66 public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
68 private static final String MAC_ADDRESS = "01:23:45:67:89:AB";
69 private static final String IP_ADDRESS = "192.168.100.1/24";
70 private static final String TENANT = "admin";
71 private static final String DOMAIN = "test.domain";
72 private static final String CONTEXT_ID = "testContext";
73 private static final long timestamp = 1234567890L;
74 private static final NetworkDomainContainment networkDomainContainment = new NetworkDomainContainmentBuilder()
75 .setNetworkDomainId(new NetworkDomainId(DOMAIN)).setNetworkDomainType(NetworkDomain.class).build();
76 private static final ParentEndpoint BASE_L3_PARENT = new ParentEndpointBuilder().setAddress(IP_ADDRESS)
77 .setAddressType(AddressType.class)
78 .setContextId(new ContextId(CONTEXT_ID))
79 .setContextType(ContextType.class)
81 private static final ChildEndpoint BASE_L2_CHILD = new ChildEndpointBuilder().setAddress(MAC_ADDRESS)
82 .setAddressType(AddressType.class)
83 .setContextId(new ContextId(CONTEXT_ID))
84 .setContextType(ContextType.class)
86 private static final ParentContainmentEndpoint BASE_CONT_PARENT = new ParentContainmentEndpointBuilder()
87 .setContextId(new ContextId(CONTEXT_ID)).setContextType(ContextType.class).build();
89 private DataBroker dataProvider;
90 private BaseEndpointServiceImpl baseEndpointRpcRegistry;
93 public Collection<Class<?>> getClassesFromModules() {
94 return ImmutableList.of(Endpoints.class, AddressEndpoints.class, ContainmentEndpoints.class);
99 dataProvider = getDataBroker();
101 baseEndpointRpcRegistry =
102 new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl());
106 public void testConstructor() throws Exception {
107 BaseEndpointServiceImpl registry =
108 new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl());
113 public void testRegisterEndpoint() throws Exception {
114 AddressEndpoint l2EpWithL3Parent =
115 createBaseL2EpBuilder()
116 .setParentEndpointChoice(
117 new ParentEndpointCaseBuilder().setParentEndpoint(Arrays.asList(BASE_L3_PARENT)).build())
119 AddressEndpoint l3EpWithL2Child =
120 createBaseL3EpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
121 ContainmentEndpoint contEp = createBaseContEpBuilder().build();
122 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
123 setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent, l3EpWithL2Child);
124 setContEpsToBuilder(inputBuilder, contEp);
126 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
127 Assert.assertTrue(rpcResult.isSuccessful());
129 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
130 Optional<AddressEndpoint> addressEndpointL2 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
131 IidFactory.addressEndpointIid(l2EpWithL3Parent.getKey()), rTx);
132 Assert.assertTrue(addressEndpointL2.isPresent());
133 Assert.assertEquals(l2EpWithL3Parent, addressEndpointL2.get());
135 Optional<AddressEndpoint> addressEndpointL3 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
136 IidFactory.addressEndpointIid(l3EpWithL2Child.getKey()), rTx);
137 Assert.assertTrue(addressEndpointL3.isPresent());
138 Assert.assertEquals(l3EpWithL2Child, addressEndpointL3.get());
140 Optional<ContainmentEndpoint> ContainmentEndpoint = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
141 IidFactory.containmentEndpointIid(contEp.getKey()), rTx);
142 Assert.assertTrue(ContainmentEndpoint.isPresent());
143 Assert.assertEquals(contEp, ContainmentEndpoint.get());
147 public void testRegisterEndpoint_withParentUpdate() throws Exception {
148 WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
149 AddressEndpoint baseL3Ep = createBaseL3EpBuilder().build();
150 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(baseL3Ep.getKey()), baseL3Ep);
152 AddressEndpoint l2EpWithL3Parent =
153 createBaseL2EpBuilder()
154 .setParentEndpointChoice(
155 new ParentEndpointCaseBuilder().setParentEndpoint(Arrays.asList(BASE_L3_PARENT)).build())
157 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
158 setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent);
160 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
161 Assert.assertTrue(rpcResult.isSuccessful());
163 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
164 Optional<AddressEndpoint> addressEndpointL2 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
165 IidFactory.addressEndpointIid(l2EpWithL3Parent.getKey()), rTx);
166 Assert.assertTrue(addressEndpointL2.isPresent());
167 List<ParentEndpoint> parentEndpoints =
168 EndpointUtils.getParentEndpoints(addressEndpointL2.get().getParentEndpointChoice());
169 Assert.assertEquals(1, parentEndpoints.size());
171 Optional<AddressEndpoint> addressEndpointL3 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
172 IidFactory.addressEndpointIid(baseL3Ep.getKey()), rTx);
173 Assert.assertTrue(addressEndpointL3.isPresent());
174 Assert.assertEquals(1, addressEndpointL3.get().getChildEndpoint().size());
178 public void testRegisterEndpoint_withChildUpdate() throws Exception {
179 WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
180 AddressEndpoint baseL2Ep = createBaseL2EpBuilder().build();
181 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(baseL2Ep.getKey()), baseL2Ep);
183 AddressEndpoint l3EpWithL2Child =
184 createBaseL3EpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
185 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
186 setAddrEpsToBuilder(inputBuilder, l3EpWithL2Child);
188 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
189 Assert.assertTrue(rpcResult.isSuccessful());
191 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
192 Optional<AddressEndpoint> addressEndpointL2 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
193 IidFactory.addressEndpointIid(baseL2Ep.getKey()), rTx);
194 Assert.assertTrue(addressEndpointL2.isPresent());
195 List<ParentEndpoint> parentEndpoints =
196 EndpointUtils.getParentEndpoints(addressEndpointL2.get().getParentEndpointChoice());
197 Assert.assertEquals(1, parentEndpoints.size());
199 Optional<AddressEndpoint> addressEndpointL3 = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL,
200 IidFactory.addressEndpointIid(l3EpWithL2Child.getKey()), rTx);
201 Assert.assertTrue(addressEndpointL3.isPresent());
202 Assert.assertEquals(1, addressEndpointL3.get().getChildEndpoint().size());
206 public void testRegisterEndpoint_rpcInput_missing_child() throws Exception {
207 AddressEndpoint l2EpWithL3Parent =
208 createBaseL2EpBuilder()
209 .setParentEndpointChoice(
210 new ParentEndpointCaseBuilder().setParentEndpoint(Arrays.asList(BASE_L3_PARENT)).build())
212 AddressEndpoint l3EpWithL2Child = createBaseL3EpBuilder().setChildEndpoint(Arrays.asList()).build();
213 ContainmentEndpoint contEp = createBaseContEpBuilder().build();
214 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
215 setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent, l3EpWithL2Child);
216 setContEpsToBuilder(inputBuilder, contEp);
218 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
219 Assert.assertFalse(rpcResult.isSuccessful());
220 Assert.assertNotNull(rpcResult.getErrors());
221 Assert.assertEquals(1, rpcResult.getErrors().size());
225 public void testRegisterEndpoint_rpcInput_missingParent() throws Exception {
226 AddressEndpoint l2EpWithL3Parent = createBaseL2EpBuilder().build();
227 AddressEndpoint l3EpWithL2Child =
228 createBaseL3EpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
229 ContainmentEndpoint contEp = createBaseContEpBuilder().build();
230 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
231 setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent, l3EpWithL2Child);
232 setContEpsToBuilder(inputBuilder, contEp);
234 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
235 Assert.assertFalse(rpcResult.isSuccessful());
236 Assert.assertNotNull(rpcResult.getErrors());
237 Assert.assertEquals(1, rpcResult.getErrors().size());
241 public void testUnregisterEndpoint_withParent() throws Exception {
242 WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
243 AddressEndpoint l2EpWithL3EpParent =
244 createBaseL2EpBuilder()
245 .setParentEndpointChoice(
246 new ParentEndpointCaseBuilder().setParentEndpoint(Arrays.asList(BASE_L3_PARENT)).build())
248 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithL3EpParent.getKey()),
250 AddressEndpoint l3EpWithL2EpChild =
251 createBaseL3EpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
252 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l3EpWithL2EpChild.getKey()),
256 UnregisterEndpointInputBuilder inputBuilder = new UnregisterEndpointInputBuilder();
257 setAddrEpsToBuilder(inputBuilder, l2EpWithL3EpParent);
258 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.unregisterEndpoint(inputBuilder.build()).get();
259 Assert.assertTrue(rpcResult.isSuccessful());
261 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
262 Optional<AddressEndpoint> l2EpWithL3EpParentFromDsOptional = DataStoreHelper.readFromDs(
263 LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithL3EpParent.getKey()), rTx);
264 Assert.assertFalse(l2EpWithL3EpParentFromDsOptional.isPresent());
266 Optional<AddressEndpoint> l3EpWithL2EpChildFromDsOptional = DataStoreHelper.readFromDs(
267 LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l3EpWithL2EpChild.getKey()), rTx);
268 Assert.assertTrue(l3EpWithL2EpChildFromDsOptional.isPresent());
269 Assert.assertEquals(0, l3EpWithL2EpChildFromDsOptional.get().getChildEndpoint().size());
273 public void testUnregisterEndpoint_withChild() throws Exception {
274 WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
275 AddressEndpoint l2EpWithL3EpParent =
276 createBaseL2EpBuilder()
277 .setParentEndpointChoice(
278 new ParentEndpointCaseBuilder().setParentEndpoint(Arrays.asList(BASE_L3_PARENT)).build())
280 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithL3EpParent.getKey()),
282 AddressEndpoint l3EpWithL2EpChild =
283 createBaseL3EpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
284 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l3EpWithL2EpChild.getKey()),
288 UnregisterEndpointInputBuilder inputBuilder = new UnregisterEndpointInputBuilder();
289 setAddrEpsToBuilder(inputBuilder, l3EpWithL2EpChild);
290 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.unregisterEndpoint(inputBuilder.build()).get();
291 Assert.assertTrue(rpcResult.isSuccessful());
293 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
294 Optional<AddressEndpoint> l3EpWithL2EpChildFromDsOptional = DataStoreHelper.readFromDs(
295 LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l3EpWithL2EpChild.getKey()), rTx);
296 Assert.assertFalse(l3EpWithL2EpChildFromDsOptional.isPresent());
298 Optional<AddressEndpoint> l2EpWithL3EpParentFromDsOptional = DataStoreHelper.readFromDs(
299 LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithL3EpParent.getKey()), rTx);
300 Assert.assertTrue(l2EpWithL3EpParentFromDsOptional.isPresent());
301 Assert.assertEquals(0, EndpointUtils
302 .getParentEndpoints(l2EpWithL3EpParentFromDsOptional.get().getParentEndpointChoice()).size());
306 public void testRegisterEndpoint_containmentEndpointWithChildFail() throws Exception {
307 ContainmentEndpoint contEpWithChild =
308 createBaseContEpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
309 RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder();
310 setContEpsToBuilder(inputBuilder, contEpWithChild);
311 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get();
312 Assert.assertFalse(rpcResult.isSuccessful());
313 Assert.assertNull(rpcResult.getResult());
314 Assert.assertEquals(1, rpcResult.getErrors().size());
318 public void testUnregisterEndpoint_containmentEndpointWithChild() throws Exception {
319 WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
320 ContainmentEndpoint contEpWithL2EpChild =
321 createBaseContEpBuilder().setChildEndpoint(Arrays.asList(BASE_L2_CHILD)).build();
322 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.containmentEndpointIid(contEpWithL2EpChild.getKey()),
323 contEpWithL2EpChild);
324 AddressEndpoint l2EpWithContEpParent =
325 createBaseL2EpBuilder().setParentEndpointChoice(new ParentContainmentEndpointCaseBuilder()
326 .setParentContainmentEndpoint(Arrays.asList(BASE_CONT_PARENT)).build()).build();
327 wTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithContEpParent.getKey()),
328 l2EpWithContEpParent);
331 UnregisterEndpointInputBuilder inputBuilder = new UnregisterEndpointInputBuilder();
332 setContEpsToBuilder(inputBuilder, contEpWithL2EpChild);
333 RpcResult<Void> rpcResult = baseEndpointRpcRegistry.unregisterEndpoint(inputBuilder.build()).get();
334 Assert.assertTrue(rpcResult.isSuccessful());
336 ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
337 Optional<ContainmentEndpoint> contEpWithL2EpChildFromDsOptional = DataStoreHelper.readFromDs(
338 LogicalDatastoreType.OPERATIONAL, IidFactory.containmentEndpointIid(contEpWithL2EpChild.getKey()), rTx);
339 Assert.assertFalse(contEpWithL2EpChildFromDsOptional.isPresent());
341 Optional<AddressEndpoint> l2EpWithContEpParentFromDsOptional = DataStoreHelper.readFromDs(
342 LogicalDatastoreType.OPERATIONAL, IidFactory.addressEndpointIid(l2EpWithContEpParent.getKey()), rTx);
343 Assert.assertTrue(l2EpWithContEpParentFromDsOptional.isPresent());
344 Assert.assertEquals(0, EndpointUtils
345 .getParentEndpoints(l2EpWithContEpParentFromDsOptional.get().getParentEndpointChoice()).size());
348 private void setAddrEpsToBuilder(RegisterEndpointInputBuilder builder, AddressEndpoint... addrEndpoints) {
349 List<AddressEndpointReg> addrEpRegs = new ArrayList<>();
350 for (AddressEndpoint addrEp : addrEndpoints) {
351 addrEpRegs.add(new AddressEndpointRegBuilder().setTimestamp(timestamp)
352 .setContextId(addrEp.getContextId())
353 .setContextType(addrEp.getContextType())
354 .setTenant(addrEp.getTenant())
355 .setAddress(addrEp.getAddress())
356 .setAddressType(addrEp.getAddressType())
357 .setNetworkContainment(addrEp.getNetworkContainment())
358 .setTimestamp(addrEp.getTimestamp())
359 .setParentEndpointChoice(addrEp.getParentEndpointChoice())
360 .setChildEndpoint(addrEp.getChildEndpoint())
363 builder.setAddressEndpointReg(addrEpRegs);
366 private void setContEpsToBuilder(RegisterEndpointInputBuilder builder, ContainmentEndpoint... contEndpoints) {
367 List<ContainmentEndpointReg> contEpRegs = new ArrayList<>();
368 for (ContainmentEndpoint contEp : contEndpoints) {
369 contEpRegs.add(new ContainmentEndpointRegBuilder().setTimestamp(contEp.getTimestamp())
370 .setContextId(contEp.getContextId())
371 .setContextType(contEp.getContextType())
372 .setTenant(contEp.getTenant())
373 .setNetworkContainment(contEp.getNetworkContainment())
374 .setChildEndpoint(contEp.getChildEndpoint())
377 builder.setContainmentEndpointReg(contEpRegs);
380 private void setAddrEpsToBuilder(UnregisterEndpointInputBuilder builder, AddressEndpoint... addrEndpoints) {
381 List<AddressEndpointUnreg> addrEpUnregs = new ArrayList<>();
382 for (AddressEndpoint addrEp : addrEndpoints) {
383 addrEpUnregs.add(new AddressEndpointUnregBuilder().setContextId(addrEp.getContextId())
384 .setContextType(addrEp.getContextType())
385 .setAddress(addrEp.getAddress())
386 .setAddressType(addrEp.getAddressType())
389 builder.setAddressEndpointUnreg(addrEpUnregs);
392 private void setContEpsToBuilder(UnregisterEndpointInputBuilder builder, ContainmentEndpoint... contEndpoints) {
393 List<ContainmentEndpointUnreg> contEpUnregs = new ArrayList<>();
394 for (ContainmentEndpoint contEp : contEndpoints) {
395 contEpUnregs.add(new ContainmentEndpointUnregBuilder().setContextId(contEp.getContextId())
396 .setContextType(contEp.getContextType())
399 builder.setContainmentEndpointUnreg(contEpUnregs);
402 private AddressEndpointBuilder createBaseL2EpBuilder() {
403 return new AddressEndpointBuilder().setTimestamp(timestamp)
404 .setContextId(new ContextId(CONTEXT_ID))
405 .setContextType(ContextType.class)
406 .setTenant(new TenantId(TENANT))
407 .setAddress(MAC_ADDRESS)
408 .setAddressType(AddressType.class)
409 .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build())
410 .setTimestamp(timestamp);
413 private AddressEndpointBuilder createBaseL3EpBuilder() {
414 return new AddressEndpointBuilder().setTimestamp(timestamp)
415 .setContextId(new ContextId(CONTEXT_ID))
416 .setContextType(ContextType.class)
417 .setTenant(new TenantId(TENANT))
418 .setAddress(IP_ADDRESS)
419 .setAddressType(AddressType.class)
420 .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build())
421 .setTimestamp(timestamp);
424 private ContainmentEndpointBuilder createBaseContEpBuilder() {
425 return new ContainmentEndpointBuilder().setTimestamp(timestamp)
426 .setContextId(new ContextId(CONTEXT_ID))
427 .setContextType(ContextType.class)
428 .setTenant(new TenantId(TENANT))
429 .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build());