b4e88128cf4da14c09e5af77fb4b4449a8e8cff5
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / renderer / TestDataFactory.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.groupbasedpolicy.renderer;
10
11 import java.util.Arrays;
12
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainmentBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.ForwardingContextContainmentBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.AddressEndpointLocationBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.ContainmentEndpointLocationBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpointBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpointKey;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocationBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.RelativeLocationsBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.InternalLocation;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.Action;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.ActionBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.Classifier;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.ClassifierBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.ResolvedPolicyBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraints;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraintsBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroup;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroupBuilder;
49
50 import com.google.common.collect.ImmutableList;
51
52 public class TestDataFactory {
53
54     public static final TenantId TENANT_ID = new TenantId("cisco_tenant");
55     public static final ActionDefinitionId AD_1 = new ActionDefinitionId("ad_1");
56     public static final ActionName AN_1 = new ActionName("an_1");
57     public static final ClassifierDefinitionId CD_1 = new ClassifierDefinitionId("cd_1");
58     public static final ClassifierName CN_1 = new ClassifierName("cn_1");
59     public static final ContextId CTX_1 = new ContextId("ctx_1");
60
61     public static AddressEndpointLocationBuilder defaultAdrEpLoc(AddressEndpointKey adrEpKey, LocationType realLoc,
62             InternalLocation... relativeLocs) {
63         AddressEndpointLocationBuilder result =
64                 new AddressEndpointLocationBuilder().setContextType(adrEpKey.getContextType())
65                     .setContextId(adrEpKey.getContextId())
66                     .setAddressType(adrEpKey.getAddressType())
67                     .setAddress(adrEpKey.getAddress())
68                     .setAbsoluteLocation(new AbsoluteLocationBuilder().setLocationType(realLoc).build());
69         if (relativeLocs != null) {
70             result.setRelativeLocations(
71                     new RelativeLocationsBuilder().setInternalLocation(Arrays.asList(relativeLocs)).build());
72         }
73         return result;
74     }
75
76     public static ContainmentEndpointLocationBuilder defaultContEpLoc(ContainmentEndpointKey contEpKey,
77             InternalLocation... relativeLocs) {
78         ContainmentEndpointLocationBuilder result = new ContainmentEndpointLocationBuilder()
79             .setContextType(contEpKey.getContextType()).setContextId(contEpKey.getContextId()).setRelativeLocations(
80                     new RelativeLocationsBuilder().setInternalLocation(Arrays.asList(relativeLocs)).build());
81         return result;
82     }
83
84     public static AddressEndpointBuilder defaultAdrEp(String address, EndpointGroupId... epgs) {
85         return new AddressEndpointBuilder().setContextType(DummyContextType.class)
86             .setContextId(CTX_1)
87             .setAddressType(DummyAddressType.class)
88             .setAddress(address)
89             .setTenant(TENANT_ID)
90             .setEndpointGroup(Arrays.asList(epgs))
91             .setNetworkContainment(
92                     new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
93                         .setContextType(DummyContextType.class).setContextId(CTX_1).build()).build());
94     }
95
96     public static ContainmentEndpointBuilder defaultContEp(EndpointGroupId... epgs) {
97         return new ContainmentEndpointBuilder().setContextType(DummyContextType.class)
98             .setContextId(CTX_1)
99             .setTenant(TENANT_ID)
100             .setEndpointGroup(Arrays.asList(epgs))
101             .setNetworkContainment(
102                     new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
103                         .setContextType(DummyContextType.class).setContextId(CTX_1).build()).build());
104     }
105
106     public static ResolvedRuleBuilder defaultResolvedRule(RuleName ruleName) {
107         Action action = new ActionBuilder().setActionDefinitionId(AD_1).setName(AN_1).setOrder(0).build();
108         Classifier classifier = new ClassifierBuilder().setClassifierDefinitionId(CD_1)
109             .setName(CN_1)
110             .setDirection(Direction.In)
111             .build();
112         return new ResolvedRuleBuilder().setName(ruleName)
113             .setOrder(0)
114             .setAction(ImmutableList.of(action))
115             .setClassifier(ImmutableList.of(classifier));
116     }
117
118     public static PolicyRuleGroupBuilder defaultPolicyRuleGrp(ContractId contractId, SubjectName subjectName,
119             ResolvedRule... resolvedRules) {
120         return new PolicyRuleGroupBuilder().setTenantId(TENANT_ID)
121             .setContractId(contractId)
122             .setSubjectName(subjectName)
123             .setResolvedRule(Arrays.asList(resolvedRules));
124     }
125
126     public static ResolvedPolicyBuilder defaultResolvedPolicy(EndpointGroupId consEpg, EndpointGroupId provEpg,
127             PolicyRuleGroup... policyRuleGrps) {
128         PolicyRuleGroupWithEndpointConstraints blueRuleGrpWithoutCons =
129                 new PolicyRuleGroupWithEndpointConstraintsBuilder().setPolicyRuleGroup(Arrays.asList(policyRuleGrps))
130                     .build();
131         return new ResolvedPolicyBuilder().setConsumerEpgId(consEpg)
132             .setConsumerTenantId(TENANT_ID)
133             .setProviderEpgId(provEpg)
134             .setProviderTenantId(TENANT_ID)
135             .setPolicyRuleGroupWithEndpointConstraints(ImmutableList.of(blueRuleGrpWithoutCons));
136     }
137
138     public static abstract class DummyContextType extends ContextType {
139     };
140     public static abstract class DummyAddressType extends AddressType {
141     };
142 }