Update MRI projects for Aluminium
[openflowplugin.git] / applications / forwardingrules-sync / src / test / java / org / opendaylight / openflowplugin / applications / frsync / impl / DSInputFactory.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 package org.opendaylight.openflowplugin.applications.frsync.impl;
9
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
45
46 /**
47  * Provides create methods for dataObjects involved in
48  * {@link org.opendaylight.mdsal.binding.api.DataTreeChangeListener} by inventory.
49  */
50 public final class DSInputFactory {
51     private DSInputFactory() {
52     }
53
54     public static Group createGroup(final long groupIdValue) {
55         final Buckets buckets = new BucketsBuilder()
56                 .setBucket(Collections.emptyList())
57                 .build();
58         return new GroupBuilder()
59                 .setGroupId(new GroupId(groupIdValue))
60                 .setBuckets(buckets)
61                 .build();
62     }
63
64     public static Group createGroupWithAction(final long groupIdValue) {
65         final Buckets buckets = new BucketsBuilder()
66                 .setBucket(Collections.singletonList(new BucketBuilder()
67                         .setAction(Collections.singletonList(new ActionBuilder()
68                                 .setAction(new OutputActionCaseBuilder()
69                                         .setOutputAction(new OutputActionBuilder()
70                                                 .setOutputNodeConnector(new Uri("ut-port-1"))
71                                                 .build())
72                                         .build())
73                                 .build()))
74                         .build()))
75                 .build();
76         return new GroupBuilder()
77                 .setGroupId(new GroupId(groupIdValue))
78                 .setBuckets(buckets)
79                 .build();
80     }
81
82     public static Flow createFlow(final String flowIdValue, final int priority) {
83         return new FlowBuilder()
84                 .setId(new FlowId(flowIdValue))
85                 .setPriority(priority)
86                 .setTableId((short) 42)
87                 .setMatch(new MatchBuilder().build())
88                 .build();
89     }
90
91     public static Flow createFlowWithInstruction(final String flowIdValue, final int priority) {
92         return new FlowBuilder()
93                 .setId(new FlowId(flowIdValue))
94                 .setPriority(priority)
95                 .setTableId((short) 42)
96                 .setMatch(new MatchBuilder().build())
97                 .setInstructions(new InstructionsBuilder()
98                         .setInstruction(Collections.singletonList(new InstructionBuilder()
99                                 .setInstruction(new ApplyActionsCaseBuilder()
100                                         .setApplyActions(new ApplyActionsBuilder()
101                                                 .setAction(Collections.singletonList(new ActionBuilder()
102                                                         .setAction(new OutputActionCaseBuilder()
103                                                                 .setOutputAction(new OutputActionBuilder()
104                                                                         .setOutputNodeConnector(new Uri("ut-port-1"))
105                                                                         .build())
106                                                                 .build())
107                                                         .build()))
108                                                 .build())
109                                         .build())
110                                 .build()))
111                         .build())
112                 .build();
113     }
114
115     public static Meter createMeter(final Long meterIdValue) {
116         return new MeterBuilder()
117                 .setMeterId(new MeterId(meterIdValue))
118                 .build();
119     }
120
121     public static Meter createMeterWithBody(final Long meterIdValue) {
122         return new MeterBuilder()
123                 .setMeterId(new MeterId(meterIdValue))
124                 .setMeterBandHeaders(new MeterBandHeadersBuilder()
125                         .setMeterBandHeader(Collections.singletonList(new MeterBandHeaderBuilder()
126                                 .setBandId(new BandId(42L))
127                                 .setBandType(new DropBuilder()
128                                         .setDropRate(43L)
129                                         .build())
130                                 .build()))
131                         .build())
132                 .build();
133     }
134
135     public static Group createGroupWithPreconditions(final long groupIdValue, final long... requiredId) {
136         final List<Action> actionBag = new ArrayList<>();
137         int key = 0;
138         for (long groupIdPrecondition : requiredId) {
139             final GroupAction groupAction = new GroupActionBuilder()
140                     .setGroupId(groupIdPrecondition)
141                     .build();
142             final GroupActionCase groupActionCase = new GroupActionCaseBuilder()
143                     .setGroupAction(groupAction)
144                     .build();
145             final Action action = new ActionBuilder()
146                     .setAction(groupActionCase)
147                     .withKey(new ActionKey(key++))
148                     .build();
149             actionBag.add(action);
150         }
151
152         final Bucket bucket = new BucketBuilder()
153                 .setAction(actionBag)
154                 .build();
155         final Buckets buckets = new BucketsBuilder()
156                 .setBucket(Collections.singletonList(bucket))
157                 .build();
158
159         return new GroupBuilder()
160                 .setGroupId(new GroupId(groupIdValue))
161                 .setBuckets(buckets)
162                 .build();
163     }
164 }