blob: a819388f92453c09cb70b6270f3e215f205e2076 [file] [log] [blame]
Sean Condon0e89bda2017-03-21 14:23:19 +00001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.incubator.net.l2monitoring.soam.delay;
17
18import java.time.Duration;
19import java.util.Map;
20
21import com.google.common.collect.Maps;
22
23/**
24 * Abstract default implementation of DelayMeasurementStat.
Sean Condon3a1efef2018-02-24 13:16:03 +000025 * {@link DelayMeasurementStat}.
Sean Condon0e89bda2017-03-21 14:23:19 +000026 */
27public abstract class DefaultDelayMeasurementStat implements DelayMeasurementStat {
28
29 private final Duration elapsedTime;
30 private final boolean suspectStatus;
31 private final Duration frameDelayTwoWayMin;
32 private final Duration frameDelayTwoWayMax;
33 private final Duration frameDelayTwoWayAvg;
34 private final Duration frameDelayForwardMin;
35 private final Duration frameDelayForwardMax;
36 private final Duration frameDelayForwardAvg;
37 private final Duration frameDelayBackwardMin;
38 private final Duration frameDelayBackwardMax;
39 private final Duration frameDelayBackwardAvg;
40 private final Duration interFrameDelayVariationTwoWayMin;
41 private final Duration interFrameDelayVariationTwoWayMax;
42 private final Duration interFrameDelayVariationTwoWayAvg;
43 private final Duration interFrameDelayVariationForwardMin;
44 private final Duration interFrameDelayVariationForwardMax;
45 private final Duration interFrameDelayVariationForwardAvg;
46 private final Duration interFrameDelayVariationBackwardMin;
47 private final Duration interFrameDelayVariationBackwardMax;
48 private final Duration interFrameDelayVariationBackwardAvg;
49 private final Duration frameDelayRangeTwoWayMax;
50 private final Duration frameDelayRangeTwoWayAvg;
51 private final Duration frameDelayRangeForwardMax;
52 private final Duration frameDelayRangeForwardAvg;
53 private final Duration frameDelayRangeBackwardMax;
54 private final Duration frameDelayRangeBackwardAvg;
55 private final Integer soamPdusSent;
56 private final Integer soamPdusReceived;
57 private final Map<Duration, Integer> frameDelayTwoWayBins;
58 private final Map<Duration, Integer> frameDelayForwardBins;
59 private final Map<Duration, Integer> frameDelayBackwardBins;
60 private final Map<Duration, Integer> interFrameDelayVariationTwoWayBins;
61 private final Map<Duration, Integer> interFrameDelayVariationForwardBins;
62 private final Map<Duration, Integer> interFrameDelayVariationBackwardBins;
63 private final Map<Duration, Integer> frameDelayRangeTwoWayBins;
64 private final Map<Duration, Integer> frameDelayRangeForwardBins;
65 private final Map<Duration, Integer> frameDelayRangeBackwardBins;
66
67 protected DefaultDelayMeasurementStat(DefaultDmStatBuilder builder) {
68 this.elapsedTime = builder.elapsedTime;
69 this.suspectStatus = builder.suspectStatus;
70 this.frameDelayTwoWayMin = builder.frameDelayTwoWayMin;
71 this.frameDelayTwoWayMax = builder.frameDelayTwoWayMax;
72 this.frameDelayTwoWayAvg = builder.frameDelayTwoWayAvg;
73 this.frameDelayForwardMin = builder.frameDelayForwardMin;
74 this.frameDelayForwardMax = builder.frameDelayForwardMax;
75 this.frameDelayForwardAvg = builder.frameDelayForwardAvg;
76 this.frameDelayBackwardMin = builder.frameDelayBackwardMin;
77 this.frameDelayBackwardMax = builder.frameDelayBackwardMax;
78 this.frameDelayBackwardAvg = builder.frameDelayBackwardAvg;
79 this.interFrameDelayVariationTwoWayMin = builder.interFrameDelayVariationTwoWayMin;
80 this.interFrameDelayVariationTwoWayMax = builder.interFrameDelayVariationTwoWayMax;
81 this.interFrameDelayVariationTwoWayAvg = builder.interFrameDelayVariationTwoWayAvg;
82 this.interFrameDelayVariationForwardMin = builder.interFrameDelayVariationForwardMin;
83 this.interFrameDelayVariationForwardMax = builder.interFrameDelayVariationForwardMax;
84 this.interFrameDelayVariationForwardAvg = builder.interFrameDelayVariationForwardAvg;
85 this.interFrameDelayVariationBackwardMin = builder.interFrameDelayVariationBackwardMin;
86 this.interFrameDelayVariationBackwardMax = builder.interFrameDelayVariationBackwardMax;
87 this.interFrameDelayVariationBackwardAvg = builder.interFrameDelayVariationBackwardAvg;
88 this.frameDelayRangeTwoWayMax = builder.frameDelayRangeTwoWayMax;
89 this.frameDelayRangeTwoWayAvg = builder.frameDelayRangeTwoWayAvg;
90 this.frameDelayRangeForwardMax = builder.frameDelayRangeForwardMax;
91 this.frameDelayRangeForwardAvg = builder.frameDelayRangeForwardAvg;
92 this.frameDelayRangeBackwardMax = builder.frameDelayRangeBackwardMax;
93 this.frameDelayRangeBackwardAvg = builder.frameDelayRangeBackwardAvg;
94 this.soamPdusSent = builder.soamPdusSent;
95 this.soamPdusReceived = builder.soamPdusReceived;
96 this.frameDelayTwoWayBins = builder.frameDelayTwoWayBins;
97 this.frameDelayForwardBins = builder.frameDelayForwardBins;
98 this.frameDelayBackwardBins = builder.frameDelayBackwardBins;
99 this.interFrameDelayVariationTwoWayBins = builder.interFrameDelayVariationTwoWayBins;
100 this.interFrameDelayVariationForwardBins = builder.interFrameDelayVariationForwardBins;
101 this.interFrameDelayVariationBackwardBins = builder.interFrameDelayVariationBackwardBins;
102 this.frameDelayRangeTwoWayBins = builder.frameDelayRangeTwoWayBins;
103 this.frameDelayRangeForwardBins = builder.frameDelayRangeForwardBins;
104 this.frameDelayRangeBackwardBins = builder.frameDelayRangeBackwardBins;
105 }
106
107 @Override
108 public Duration elapsedTime() {
109 return elapsedTime;
110 }
111
112 @Override
113 public boolean suspectStatus() {
114 return suspectStatus;
115 }
116
117 @Override
118 public Duration frameDelayTwoWayMin() {
119 return frameDelayTwoWayMin;
120 }
121
122 @Override
123 public Duration frameDelayTwoWayMax() {
124 return frameDelayTwoWayMax;
125 }
126
127 @Override
128 public Duration frameDelayTwoWayAvg() {
129 return frameDelayTwoWayAvg;
130 }
131
132 @Override
133 public Duration frameDelayForwardMin() {
134 return frameDelayForwardMin;
135 }
136
137 @Override
138 public Duration frameDelayForwardMax() {
139 return frameDelayForwardMax;
140 }
141
142 @Override
143 public Duration frameDelayForwardAvg() {
144 return frameDelayForwardAvg;
145 }
146
147 @Override
148 public Duration frameDelayBackwardMin() {
149 return frameDelayBackwardMin;
150 }
151
152 @Override
153 public Duration frameDelayBackwardMax() {
154 return frameDelayBackwardMax;
155 }
156
157 @Override
158 public Duration frameDelayBackwardAvg() {
159 return frameDelayBackwardAvg;
160 }
161
162 @Override
163 public Duration interFrameDelayVariationTwoWayMin() {
164 return interFrameDelayVariationTwoWayMin;
165 }
166
167 @Override
168 public Duration interFrameDelayVariationTwoWayMax() {
169 return interFrameDelayVariationTwoWayMax;
170 }
171
172 @Override
173 public Duration interFrameDelayVariationTwoWayAvg() {
174 return interFrameDelayVariationTwoWayAvg;
175 }
176
177 @Override
178 public Duration interFrameDelayVariationForwardMin() {
179 return interFrameDelayVariationForwardMin;
180 }
181
182 @Override
183 public Duration interFrameDelayVariationForwardMax() {
184 return interFrameDelayVariationForwardMax;
185 }
186
187 @Override
188 public Duration interFrameDelayVariationForwardAvg() {
189 return interFrameDelayVariationForwardAvg;
190 }
191
192 @Override
193 public Duration interFrameDelayVariationBackwardMin() {
194 return interFrameDelayVariationBackwardMin;
195 }
196
197 @Override
198 public Duration interFrameDelayVariationBackwardMax() {
199 return interFrameDelayVariationBackwardMax;
200 }
201
202 @Override
203 public Duration interFrameDelayVariationBackwardAvg() {
204 return interFrameDelayVariationBackwardAvg;
205 }
206
207 @Override
208 public Duration frameDelayRangeTwoWayMax() {
209 return frameDelayRangeTwoWayMax;
210 }
211
212 @Override
213 public Duration frameDelayRangeTwoWayAvg() {
214 return frameDelayRangeTwoWayAvg;
215 }
216
217 @Override
218 public Duration frameDelayRangeForwardMax() {
219 return frameDelayRangeForwardMax;
220 }
221
222 @Override
223 public Duration frameDelayRangeForwardAvg() {
224 return frameDelayRangeForwardAvg;
225 }
226
227 @Override
228 public Duration frameDelayRangeBackwardMax() {
229 return frameDelayRangeBackwardMax;
230 }
231
232 @Override
233 public Duration frameDelayRangeBackwardAvg() {
234 return frameDelayRangeBackwardAvg;
235 }
236
237 @Override
238 public Integer soamPdusSent() {
239 return soamPdusSent;
240 }
241
242 @Override
243 public Integer soamPdusReceived() {
244 return soamPdusReceived;
245 }
246
247 @Override
248 public Map<Duration, Integer> frameDelayTwoWayBins() {
249 if (frameDelayTwoWayBins != null) {
250 return Maps.newHashMap(frameDelayTwoWayBins);
251 } else {
252 return null;
253 }
254 }
255
256 @Override
257 public Map<Duration, Integer> frameDelayForwardBins() {
258 if (frameDelayForwardBins != null) {
259 return Maps.newHashMap(frameDelayForwardBins);
260 } else {
261 return null;
262 }
263 }
264
265 @Override
266 public Map<Duration, Integer> frameDelayBackwardBins() {
267 if (frameDelayBackwardBins != null) {
268 return Maps.newHashMap(frameDelayBackwardBins);
269 } else {
270 return null;
271 }
272 }
273
274 @Override
275 public Map<Duration, Integer> interFrameDelayVariationTwoWayBins() {
276 if (interFrameDelayVariationTwoWayBins != null) {
277 return Maps.newHashMap(interFrameDelayVariationTwoWayBins);
278 } else {
279 return null;
280 }
281 }
282
283 @Override
284 public Map<Duration, Integer> interFrameDelayVariationForwardBins() {
285 if (interFrameDelayVariationForwardBins != null) {
286 return Maps.newHashMap(interFrameDelayVariationForwardBins);
287 } else {
288 return null;
289 }
290 }
291
292 @Override
293 public Map<Duration, Integer> interFrameDelayVariationBackwardBins() {
294 if (interFrameDelayVariationBackwardBins != null) {
295 return Maps.newHashMap(interFrameDelayVariationBackwardBins);
296 } else {
297 return null;
298 }
299 }
300
301 @Override
302 public Map<Duration, Integer> frameDelayRangeTwoWayBins() {
303 if (frameDelayRangeTwoWayBins != null) {
304 return Maps.newHashMap(frameDelayRangeTwoWayBins);
305 } else {
306 return null;
307 }
308 }
309
310 @Override
311 public Map<Duration, Integer> frameDelayRangeForwardBins() {
312 if (frameDelayRangeForwardBins != null) {
313 return Maps.newHashMap(frameDelayRangeForwardBins);
314 } else {
315 return null;
316 }
317 }
318
319 @Override
320 public Map<Duration, Integer> frameDelayRangeBackwardBins() {
321 if (frameDelayRangeBackwardBins != null) {
322 return Maps.newHashMap(frameDelayRangeBackwardBins);
323 } else {
324 return null;
325 }
326 }
327
328 /**
Sean Condon3a1efef2018-02-24 13:16:03 +0000329 * Abstract builder for {@link DelayMeasurementStat}.
Sean Condon0e89bda2017-03-21 14:23:19 +0000330 */
331 protected abstract static class DefaultDmStatBuilder implements DmStatBuilder {
332
333 private final Duration elapsedTime;
334 private final boolean suspectStatus;
335 private Duration frameDelayTwoWayMin;
336 private Duration frameDelayTwoWayMax;
337 private Duration frameDelayTwoWayAvg;
338 private Duration frameDelayForwardMin;
339 private Duration frameDelayForwardMax;
340 private Duration frameDelayForwardAvg;
341 private Duration frameDelayBackwardMin;
342 private Duration frameDelayBackwardMax;
343 private Duration frameDelayBackwardAvg;
344 private Duration interFrameDelayVariationTwoWayMin;
345 private Duration interFrameDelayVariationTwoWayMax;
346 private Duration interFrameDelayVariationTwoWayAvg;
347 private Duration interFrameDelayVariationForwardMin;
348 private Duration interFrameDelayVariationForwardMax;
349 private Duration interFrameDelayVariationForwardAvg;
350 private Duration interFrameDelayVariationBackwardMin;
351 private Duration interFrameDelayVariationBackwardMax;
352 private Duration interFrameDelayVariationBackwardAvg;
353 private Duration frameDelayRangeTwoWayMax;
354 private Duration frameDelayRangeTwoWayAvg;
355 private Duration frameDelayRangeForwardMax;
356 private Duration frameDelayRangeForwardAvg;
357 private Duration frameDelayRangeBackwardMax;
358 private Duration frameDelayRangeBackwardAvg;
359 private Integer soamPdusSent;
360 private Integer soamPdusReceived;
361 private Map<Duration, Integer> frameDelayTwoWayBins;
362 private Map<Duration, Integer> frameDelayForwardBins;
363 private Map<Duration, Integer> frameDelayBackwardBins;
364 private Map<Duration, Integer> interFrameDelayVariationTwoWayBins;
365 private Map<Duration, Integer> interFrameDelayVariationForwardBins;
366 private Map<Duration, Integer> interFrameDelayVariationBackwardBins;
367 private Map<Duration, Integer> frameDelayRangeTwoWayBins;
368 private Map<Duration, Integer> frameDelayRangeForwardBins;
369 private Map<Duration, Integer> frameDelayRangeBackwardBins;
370
371 protected DefaultDmStatBuilder(Duration elapsedTime, boolean suspectStatus) {
372 this.elapsedTime = elapsedTime;
373 this.suspectStatus = suspectStatus;
374 }
375
376 @Override
377 public DmStatBuilder frameDelayTwoWayMin(Duration frameDelayTwoWayMin) {
378 this.frameDelayTwoWayMin = frameDelayTwoWayMin;
379 return this;
380 }
381
382 @Override
383 public DmStatBuilder frameDelayTwoWayMax(Duration frameDelayTwoWayMax) {
384 this.frameDelayTwoWayMax = frameDelayTwoWayMax;
385 return this;
386 }
387
388 @Override
389 public DmStatBuilder frameDelayTwoWayAvg(Duration frameDelayTwoWayAvg) {
390 this.frameDelayTwoWayAvg = frameDelayTwoWayAvg;
391 return this;
392 }
393
394 @Override
395 public DmStatBuilder frameDelayForwardMin(Duration frameDelayForwardMin) {
396 this.frameDelayForwardMin = frameDelayForwardMin;
397 return this;
398 }
399
400 @Override
401 public DmStatBuilder frameDelayForwardMax(Duration frameDelayForwardMax) {
402 this.frameDelayForwardMax = frameDelayForwardMax;
403 return this;
404 }
405
406 @Override
407 public DmStatBuilder frameDelayForwardAvg(Duration frameDelayForwardAvg) {
408 this.frameDelayForwardAvg = frameDelayForwardAvg;
409 return this;
410 }
411
412 @Override
413 public DmStatBuilder frameDelayBackwardMin(Duration frameDelayBackwardMin) {
414 this.frameDelayBackwardMin = frameDelayBackwardMin;
415 return this;
416 }
417
418 @Override
419 public DmStatBuilder frameDelayBackwardMax(Duration frameDelayBackwardMax) {
420 this.frameDelayBackwardMax = frameDelayBackwardMax;
421 return this;
422 }
423
424 @Override
425 public DmStatBuilder frameDelayBackwardAvg(Duration frameDelayBackwardAvg) {
426 this.frameDelayBackwardAvg = frameDelayBackwardAvg;
427 return this;
428 }
429
430 @Override
431 public DmStatBuilder interFrameDelayVariationTwoWayMin(Duration interFrameDelayVariationTwoWayMin) {
432 this.interFrameDelayVariationTwoWayMin = interFrameDelayVariationTwoWayMin;
433 return this;
434 }
435
436 @Override
437 public DmStatBuilder interFrameDelayVariationTwoWayMax(Duration interFrameDelayVariationTwoWayMax) {
438 this.interFrameDelayVariationTwoWayMax = interFrameDelayVariationTwoWayMax;
439 return this;
440 }
441
442 @Override
443 public DmStatBuilder interFrameDelayVariationTwoWayAvg(Duration interFrameDelayVariationTwoWayAvg) {
444 this.interFrameDelayVariationTwoWayAvg = interFrameDelayVariationTwoWayAvg;
445 return this;
446 }
447
448 @Override
449 public DmStatBuilder interFrameDelayVariationForwardMin(Duration interFrameDelayVariationForwardMin) {
450 this.interFrameDelayVariationForwardMin = interFrameDelayVariationForwardMin;
451 return this;
452 }
453
454 @Override
455 public DmStatBuilder interFrameDelayVariationForwardMax(Duration interFrameDelayVariationForwardMax) {
456 this.interFrameDelayVariationForwardMax = interFrameDelayVariationForwardMax;
457 return this;
458 }
459
460 @Override
461 public DmStatBuilder interFrameDelayVariationForwardAvg(Duration interFrameDelayVariationForwardAvg) {
462 this.interFrameDelayVariationForwardAvg = interFrameDelayVariationForwardAvg;
463 return this;
464 }
465
466 @Override
467 public DmStatBuilder interFrameDelayVariationBackwardMin(Duration interFrameDelayVariationBackwardMin) {
468 this.interFrameDelayVariationBackwardMin = interFrameDelayVariationBackwardMin;
469 return this;
470 }
471
472 @Override
473 public DmStatBuilder interFrameDelayVariationBackwardMax(Duration interFrameDelayVariationBackwardMax) {
474 this.interFrameDelayVariationBackwardMax = interFrameDelayVariationBackwardMax;
475 return this;
476 }
477
478 @Override
479 public DmStatBuilder interFrameDelayVariationBackwardAvg(Duration interFrameDelayVariationBackwardAvg) {
480 this.interFrameDelayVariationBackwardAvg = interFrameDelayVariationBackwardAvg;
481 return this;
482 }
483
484 @Override
485 public DmStatBuilder frameDelayRangeTwoWayMax(Duration frameDelayRangeTwoWayMax) {
486 this.frameDelayRangeTwoWayMax = frameDelayRangeTwoWayMax;
487 return this;
488 }
489
490 @Override
491 public DmStatBuilder frameDelayRangeTwoWayAvg(Duration frameDelayRangeTwoWayAvg) {
492 this.frameDelayRangeTwoWayAvg = frameDelayRangeTwoWayAvg;
493 return this;
494 }
495
496 @Override
497 public DmStatBuilder frameDelayRangeForwardMax(Duration frameDelayRangeForwardMax) {
498 this.frameDelayRangeForwardMax = frameDelayRangeForwardMax;
499 return this;
500 }
501
502 @Override
503 public DmStatBuilder frameDelayRangeForwardAvg(Duration frameDelayRangeForwardAvg) {
504 this.frameDelayRangeForwardAvg = frameDelayRangeForwardAvg;
505 return this;
506 }
507
508 @Override
509 public DmStatBuilder frameDelayRangeBackwardMax(Duration frameDelayRangeBackwardMax) {
510 this.frameDelayRangeBackwardMax = frameDelayRangeBackwardMax;
511 return this;
512 }
513
514 @Override
515 public DmStatBuilder frameDelayRangeBackwardAvg(Duration frameDelayRangeBackwardAvg) {
516 this.frameDelayRangeBackwardAvg = frameDelayRangeBackwardAvg;
517 return this;
518 }
519
520 @Override
521 public DmStatBuilder soamPdusSent(Integer soamPdusSent) {
522 this.soamPdusSent = soamPdusSent;
523 return this;
524 }
525
526 @Override
527 public DmStatBuilder soamPdusReceived(Integer soamPdusReceived) {
528 this.soamPdusReceived = soamPdusReceived;
529 return this;
530 }
531
532 @Override
533 public DmStatBuilder frameDelayTwoWayBins(Map<Duration, Integer> frameDelayTwoWayBins) {
534 this.frameDelayTwoWayBins = frameDelayTwoWayBins;
535 return this;
536 }
537
538 @Override
539 public DmStatBuilder frameDelayForwardBins(Map<Duration, Integer> frameDelayForwardBins) {
540 this.frameDelayForwardBins = frameDelayForwardBins;
541 return this;
542 }
543
544 @Override
545 public DmStatBuilder frameDelayBackwardBins(Map<Duration, Integer> frameDelayBackwardBins) {
546 this.frameDelayBackwardBins = frameDelayBackwardBins;
547 return this;
548 }
549
550 @Override
551 public DmStatBuilder interFrameDelayVariationTwoWayBins(
552 Map<Duration, Integer> interFrameDelayVariationTwoWayBins) {
553 this.interFrameDelayVariationTwoWayBins = interFrameDelayVariationTwoWayBins;
554 return this;
555 }
556
557 @Override
558 public DmStatBuilder interFrameDelayVariationForwardBins(
559 Map<Duration, Integer> interFrameDelayVariationForwardBins) {
560 this.interFrameDelayVariationForwardBins = interFrameDelayVariationForwardBins;
561 return this;
562 }
563
564 @Override
565 public DmStatBuilder interFrameDelayVariationBackwardBins(
566 Map<Duration, Integer> interFrameDelayVariationBackwardBins) {
567 this.interFrameDelayVariationBackwardBins = interFrameDelayVariationBackwardBins;
568 return this;
569 }
570
571 @Override
572 public DmStatBuilder frameDelayRangeTwoWayBins(Map<Duration, Integer> frameDelayRangeTwoWayBins) {
573 this.frameDelayRangeTwoWayBins = frameDelayRangeTwoWayBins;
574 return this;
575 }
576
577 @Override
578 public DmStatBuilder frameDelayRangeForwardBins(Map<Duration, Integer> frameDelayRangeForwardBins) {
579 this.frameDelayRangeForwardBins = frameDelayRangeForwardBins;
580 return this;
581 }
582
583 @Override
584 public DmStatBuilder frameDelayRangeBackwardBins(Map<Duration, Integer> frameDelayRangeBackwardBins) {
585 this.frameDelayRangeBackwardBins = frameDelayRangeBackwardBins;
586 return this;
587 }
588 }
589}