RPC gate set/delete/info and Patch operation support
[packetcable.git] / packetcable-policy-server / src / test / java / org / opendaylight / controller / packetcable / provider / validation / impl / validators / qos / classifier / Ipv6ClassifierValidatorTest.java
1 /*
2  * Copyright (c) 2015 CableLabs 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.controller.packetcable.provider.validation.impl.validators.qos.classifier;
10
11 import org.junit.Rule;
12 import org.junit.Test;
13 import org.opendaylight.controller.packetcable.provider.test.rules.Params;
14 import org.opendaylight.controller.packetcable.provider.validation.ValidationException;
15 import org.opendaylight.controller.packetcable.provider.validation.Validator;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
18 import org.opendaylight.yang.gen.v1.urn.packetcable.rev170224.ClassifierActivationState;
19 import org.opendaylight.yang.gen.v1.urn.packetcable.rev170224.TosByte;
20 import org.opendaylight.yang.gen.v1.urn.packetcable.rev170224.TpProtocol;
21 import org.opendaylight.yang.gen.v1.urn.packetcable.rev170224.pcmm.qos.ipv6.classifier.Ipv6Classifier;
22 import org.opendaylight.yang.gen.v1.urn.packetcable.rev170224.pcmm.qos.ipv6.classifier.Ipv6ClassifierBuilder;
23
24 /**
25  * @author rvail
26  */
27 @Params.AlwaysUseParams
28 public class Ipv6ClassifierValidatorTest {
29
30     @Rule
31     public Params<Validator.Extent> extentParams = Params.of(Validator.Extent.class);
32
33     private final Ipv6ClassifierValidator validator = new Ipv6ClassifierValidator();
34
35     @Test(expected = ValidationException.class)
36     public void nullIpv6Classifier() throws ValidationException {
37         validator.validate(null, extentParams.getCurrentParam());
38     }
39
40     @Test(expected = NullPointerException.class)
41     public void nullExtent() throws ValidationException {
42         validator.validate(buildValidIpv6Classifier(), null);
43     }
44
45     @Test
46     public void nullSrcIp6() throws ValidationException {
47         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setSrcIp6(null).build();
48
49         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
50     }
51
52     @Test
53     public void nullSrcPortStart() throws ValidationException {
54         Ipv6Classifier ipv6Classifier =
55                 new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setSrcPortStart(null).build();
56
57         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
58     }
59
60     @Test
61     public void nullSrcPortEnd() throws ValidationException {
62         Ipv6Classifier ipv6Classifier =
63                 new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setSrcPortEnd(null).build();
64
65         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
66     }
67
68     @Test
69     public void nullDstIp6() throws ValidationException {
70         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setDstIp6(null).build();
71
72         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
73     }
74
75     @Test
76     public void nullDstPortStart() throws ValidationException {
77         Ipv6Classifier ipv6Classifier =
78                 new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setDstPortStart(null).build();
79
80         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
81     }
82
83     @Test
84     public void nullDstPortEnd() throws ValidationException {
85         Ipv6Classifier ipv6Classifier =
86                 new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setDstPortEnd(null).build();
87
88         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
89     }
90
91     @Test
92     public void nullFlowLabel() throws ValidationException {
93         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setFlowLabel(null).build();
94
95         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
96     }
97
98     @Test
99     public void nullNextHdr() throws ValidationException {
100         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setNextHdr(null).build();
101
102         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
103     }
104
105     @Test
106     public void nullTcHigh() throws ValidationException {
107         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setTcHigh(null).build();
108
109         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
110     }
111
112     @Test
113     public void nullTcLow() throws ValidationException {
114         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setTcLow(null).build();
115
116         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
117     }
118
119     @Test
120     public void nullTcMask() throws ValidationException {
121         Ipv6Classifier ipv6Classifier = new Ipv6ClassifierBuilder(buildValidIpv6Classifier()).setTcMask(null).build();
122
123         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
124     }
125
126     @Test
127     public void valid() throws ValidationException {
128         Ipv6Classifier ipv6Classifier = buildValidIpv6Classifier();
129
130         validator.validate(ipv6Classifier, extentParams.getCurrentParam());
131     }
132
133     public static Ipv6Classifier buildValidIpv6Classifier() {
134         return new Ipv6ClassifierBuilder().setSrcIp6(new Ipv6Prefix("2001:4978:030d:1000:0:0:0:0/64"))
135                 .setSrcPortStart(new PortNumber(7000))
136                 .setSrcPortEnd(new PortNumber((7005)))
137                 .setDstIp6(new Ipv6Prefix("2001:4978:030d:1100:0:0:0:0/64"))
138                 .setDstPortStart(new PortNumber(7000))
139                 .setDstPortEnd(new PortNumber(7005))
140                 .setFlowLabel(101L)
141                 .setNextHdr(new TpProtocol(256))
142                 .setTcHigh(new TosByte((short) 0xc0))
143                 .setTcLow(new TosByte((short) 0x01))
144                 .setTcMask(new TosByte((short) 0xe0))
145                 .setActivationState(ClassifierActivationState.Active)
146                 .build();
147     }
148 }