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.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.VpnTargets;
17 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.VpnTargetsBuilder;
18 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTarget;
19 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTargetBuilder;
20 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTargetKey;
21 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
22 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceBuilder;
23 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.vpn.instance.Ipv4Family;
24 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.vpn.instance.Ipv4FamilyBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntry;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntryBuilder;
29 * Gathers a collections of 'fake' L3VPN objects that can be used in JUnits.
31 public final class L3VpnTestCatalog {
33 static class L3VpnComposite {
34 VpnInstance vpnCfgData;
35 VpnInstanceOpDataEntry vpnOpData;
37 L3VpnComposite(VpnInstance vpnInst, VpnInstanceOpDataEntry vpnOpData) {
38 this.vpnCfgData = vpnInst;
39 this.vpnOpData = vpnOpData;
43 private L3VpnTestCatalog() {
47 static VpnTargets makeVpnTargets(List<String> irts, List<String> erts) {
48 List<String> commonRT = new ArrayList<>(irts);
49 commonRT.retainAll(erts);
50 List<String> pureIrts = new ArrayList<>(irts);
51 pureIrts.removeAll(commonRT);
52 List<String> pureErts = new ArrayList<>(erts);
53 pureErts.removeAll(commonRT);
54 List<VpnTarget> vpnTargetList = new ArrayList<>();
55 vpnTargetList.addAll(makeVpnTargetsByType(commonRT, VpnTarget.VrfRTType.Both));
56 vpnTargetList.addAll(makeVpnTargetsByType(pureIrts, VpnTarget.VrfRTType.ImportExtcommunity));
57 vpnTargetList.addAll(makeVpnTargetsByType(pureErts, VpnTarget.VrfRTType.ExportExtcommunity));
58 return new VpnTargetsBuilder().setVpnTarget(vpnTargetList).build();
61 static List<VpnTarget> makeVpnTargetsByType(List<String> rtList, VpnTarget.VrfRTType type) {
62 return rtList.stream()
63 .map(rt -> new VpnTargetBuilder().withKey(new VpnTargetKey(rt))
64 .setVrfRTValue(rt).setVrfRTType(type).build())
65 .collect(Collectors.toList());
68 static L3VpnComposite build(String vpnName, String vpnRd, long vpnTag, List<String> irts, List<String> erts) {
69 Objects.nonNull(irts);
70 Objects.nonNull(erts);
71 Ipv4Family vpnIpv4Cfg = new Ipv4FamilyBuilder().setVpnTargets(makeVpnTargets(irts, erts)).build();
73 new VpnInstanceBuilder().setVpnInstanceName(vpnName).setIpv4Family(vpnIpv4Cfg).build();
74 VpnInstanceOpDataEntry vpnOpData =
75 new VpnInstanceOpDataEntryBuilder().setVpnId(vpnTag).setVpnInstanceName(vpnName).setVrfId(vpnRd)
76 .setVpnTargets(VpnOperDsUtils.makeVpnTargets(irts, erts)).build();
77 return new L3VpnComposite(vpnInst, vpnOpData);
80 static L3VpnComposite VPN_1 =
81 build("50525a08-3c2d-4d2a-8826-000000000001", "100:100", 100,
82 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000"));
84 static L3VpnComposite VPN_2 =
85 build("50525a08-3c2d-4d2a-8826-000000000002", "200:200", 200,
86 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000", "3000:3000"));
88 static L3VpnComposite VPN_3 =
89 build("50525a08-3c2d-4d2a-8826-000000000003", "300:300", 300,
90 Arrays.asList("2000:2000"), Arrays.asList("2000:2000", "3000:3000"));
92 static L3VpnComposite VPN_4 =
93 build("50525a08-3c2d-4d2a-8826-000000000004", "400:400", 400, new ArrayList<String>(), new ArrayList<String>());
95 static L3VpnComposite VPN_5 =
96 build("50525a08-3c2d-4d2a-8826-000000000005", "500:500", 500, // has same iRTs as VPN_1 and VPN2
97 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000"));
99 static L3VpnComposite VPN_6 =
100 build("50525a08-3c2d-4d2a-8826-000000000006", "600:600", 600, // has same iRTs as VPN_1 and VPN_2
101 Arrays.asList("1000:1000", "2000:2000", "3000:3000"), Arrays.asList("2000:2000", "6000:6000"));
103 static List<L3VpnComposite> ALL_VPNS = Arrays.asList(VPN_1, VPN_2, VPN_3, VPN_4, VPN_5, VPN_6);