2 * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. 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
8 package org.opendaylight.netvirt.vpnmanager.intervpnlink;
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.List;
13 import java.util.Objects;
14 import java.util.stream.Collectors;
15 import org.opendaylight.netvirt.vpnmanager.VpnOperDsUtils;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntry;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntryBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.VpnTargets;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.VpnTargetsBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTarget;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTargetBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTargetKey;
27 * Gathers a collections of 'fake' L3VPN objects that can be used in JUnits.
29 public final class L3VpnTestCatalog {
31 static class L3VpnComposite {
32 VpnInstance vpnCfgData;
33 VpnInstanceOpDataEntry vpnOpData;
35 L3VpnComposite(VpnInstance vpnInst, VpnInstanceOpDataEntry vpnOpData) {
36 this.vpnCfgData = vpnInst;
37 this.vpnOpData = vpnOpData;
41 private L3VpnTestCatalog() {
45 static VpnTargets makeVpnTargets(List<String> irts, List<String> erts) {
46 List<String> commonRT = new ArrayList<>(irts);
47 commonRT.retainAll(erts);
48 List<String> pureIrts = new ArrayList<>(irts);
49 pureIrts.removeAll(commonRT);
50 List<String> pureErts = new ArrayList<>(erts);
51 pureErts.removeAll(commonRT);
52 List<VpnTarget> vpnTargetList = new ArrayList<>();
53 vpnTargetList.addAll(makeVpnTargetsByType(commonRT, VpnTarget.VrfRTType.Both));
54 vpnTargetList.addAll(makeVpnTargetsByType(pureIrts, VpnTarget.VrfRTType.ImportExtcommunity));
55 vpnTargetList.addAll(makeVpnTargetsByType(pureErts, VpnTarget.VrfRTType.ExportExtcommunity));
56 return new VpnTargetsBuilder().setVpnTarget(vpnTargetList).build();
59 static List<VpnTarget> makeVpnTargetsByType(List<String> rtList, VpnTarget.VrfRTType type) {
60 return rtList.stream()
61 .map(rt -> new VpnTargetBuilder().withKey(new VpnTargetKey(rt))
62 .setVrfRTValue(rt).setVrfRTType(type).build())
63 .collect(Collectors.toList());
66 static L3VpnComposite build(String vpnName, String vpnRd, long vpnTag, List<String> irts, List<String> erts) {
67 Objects.nonNull(irts);
68 Objects.nonNull(erts);
70 new VpnInstanceBuilder().setVpnInstanceName(vpnName).setVpnTargets(makeVpnTargets(irts, erts)).build();
71 VpnInstanceOpDataEntry vpnOpData =
72 new VpnInstanceOpDataEntryBuilder().setVpnId(vpnTag).setVpnInstanceName(vpnName).setVrfId(vpnRd)
73 .setVpnTargets(VpnOperDsUtils.makeVpnTargets(irts, erts)).build();
74 return new L3VpnComposite(vpnInst, vpnOpData);
77 static L3VpnComposite VPN_1 =
78 build("50525a08-3c2d-4d2a-8826-000000000001", "100:100", 100,
79 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000"));
81 static L3VpnComposite VPN_2 =
82 build("50525a08-3c2d-4d2a-8826-000000000002", "200:200", 200,
83 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000", "3000:3000"));
85 static L3VpnComposite VPN_3 =
86 build("50525a08-3c2d-4d2a-8826-000000000003", "300:300", 300,
87 Arrays.asList("2000:2000"), Arrays.asList("2000:2000", "3000:3000"));
89 static L3VpnComposite VPN_4 =
90 build("50525a08-3c2d-4d2a-8826-000000000004", "400:400", 400, new ArrayList<String>(), new ArrayList<String>());
92 static L3VpnComposite VPN_5 =
93 build("50525a08-3c2d-4d2a-8826-000000000005", "500:500", 500, // has same iRTs as VPN_1 and VPN2
94 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000"));
96 static L3VpnComposite VPN_6 =
97 build("50525a08-3c2d-4d2a-8826-000000000006", "600:600", 600, // has same iRTs as VPN_1 and VPN_2
98 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000", "6000:6000"));
100 static List<L3VpnComposite> ALL_VPNS = Arrays.asList(VPN_1, VPN_2, VPN_3, VPN_4, VPN_5, VPN_6);