blob: 30b637a40d470a0e9007bf692081d7eb903de0e3 [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.loss;
17
18import static org.junit.Assert.assertEquals;
19import static org.junit.Assert.assertTrue;
20
21import java.time.Duration;
22import java.time.Instant;
23import java.util.ArrayList;
24
25import org.junit.Before;
26import org.junit.Test;
27import org.onosproject.incubator.net.l2monitoring.cfm.Mep.Priority;
28import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MepId;
29import org.onosproject.incubator.net.l2monitoring.soam.MilliPct;
30import org.onosproject.incubator.net.l2monitoring.soam.SoamConfigException;
31import org.onosproject.incubator.net.l2monitoring.soam.SoamId;
32import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementCreate.Version;
33import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementCreate.CounterOption;
34import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementCreate.LmType;
35import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementEntry.AvailabilityType;
36import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementEntry.LmEntryBuilder;
37
38public class LossMeasurementEntryTest {
39
40 LossMeasurementEntry lme1;
41
42 @Before
43 public void setUp() throws SoamConfigException {
44 LmEntryBuilder builder = DefaultLmEntry.builder(
45 Version.Y17312008, MepId.valueOf((short) 10),
46 Priority.PRIO3, LmType.LMLMM, SoamId.valueOf(1))
47 .measuredAvailabilityBackwardStatus(AvailabilityType.UNAVAILABLE)
48 .measuredAvailabilityForwardStatus(AvailabilityType.UNKNOWN)
49 .measuredBackwardFlr(MilliPct.ofMilliPct(1600))
50 .measuredBackwardLastTransitionTime(Instant.ofEpochSecond(123456L))
51 .measuredForwardFlr(MilliPct.ofMilliPct(1601))
52 .measuredForwardLastTransitionTime(Instant.ofEpochSecond(123457L))
53
54 .availabilityCurrent(DefaultLaStatCurrent.builder(
55 Duration.ofMinutes(9), false, Instant.ofEpochSecond(9876543))
56 .build())
57 .measurementCurrent(DefaultLmStatCurrent.builder(
58 Duration.ofMinutes(10), true, Instant.ofEpochSecond(9876544))
59 .build())
60
61 .addToAvailabilityHistories(DefaultLaStatHistory.builder(
62 Duration.ofMinutes(11), true, SoamId.valueOf(10),
63 Instant.ofEpochSecond(9876545))
64 .build())
65 .addToAvailabilityHistories(DefaultLaStatHistory.builder(
66 Duration.ofMinutes(12), true, SoamId.valueOf(11),
67 Instant.ofEpochSecond(9876546))
68 .build())
69
70 .addToMeasurementHistories(DefaultLmStatHistory.builder(
71 Duration.ofMinutes(13), true, SoamId.valueOf(12),
72 Instant.ofEpochSecond(9876547))
73 .build())
74 .addToMeasurementHistories(DefaultLmStatHistory.builder(
75 Duration.ofMinutes(14), true, SoamId.valueOf(13),
76 Instant.ofEpochSecond(9876548))
77 .build());
78
79 builder = (LmEntryBuilder) builder
80 .addToCountersEnabled(CounterOption.AVAILABILITY_BACKWARD_CONSECUTIVE_HIGH_LOSS)
81 .addToCountersEnabled(CounterOption.AVAILABILITY_FORWARD_MAX_FLR)
82 .alignMeasurementIntervals(true)
83 .frameSize((short) 100);
84
85 lme1 = builder.build();
86 }
87
88 @Test
89 public void testLmId() {
90 assertEquals(1, lme1.lmId().id().intValue());
91 }
92
93 @Test
94 public void testMeasuredForwardFlr() {
95 assertEquals(1601, lme1.measuredForwardFlr().intValue());
96 }
97
98 @Test
99 public void testMeasuredBackwardFlr() {
100 assertEquals(1600, lme1.measuredBackwardFlr().intValue());
101 }
102
103 @Test
104 public void testMeasuredAvailabilityForwardStatus() {
105 assertEquals(AvailabilityType.UNKNOWN, lme1.measuredAvailabilityForwardStatus());
106 }
107
108 @Test
109 public void testMeasuredAvailabilityBackwardStatus() {
110 assertEquals(AvailabilityType.UNAVAILABLE, lme1.measuredAvailabilityBackwardStatus());
111 }
112
113 @Test
114 public void testMeasuredForwardLastTransitionTime() {
115 assertEquals(123457L, lme1.measuredForwardLastTransitionTime().getEpochSecond());
116 }
117
118 @Test
119 public void testMeasuredBackwardLastTransitionTime() {
120 assertEquals(123456L, lme1.measuredBackwardLastTransitionTime().getEpochSecond());
121 }
122
123 @Test
124 public void testMeasurementCurrent() {
125 assertEquals(10, lme1.measurementCurrent().elapsedTime().toMinutes());
126 }
127
128 @Test
129 public void testMeasurementHistories() {
130 assertEquals(2, lme1.measurementHistories().size());
131 ArrayList<LossMeasurementStatHistory> histories = new ArrayList<>();
132 lme1.measurementHistories().forEach(histories::add);
133 assertEquals(14, histories.get(1).elapsedTime().toMinutes());
134 }
135
136 @Test
137 public void testAvailabilityCurrent() {
138 assertEquals(9, lme1.availabilityCurrent().elapsedTime().toMinutes());
139 }
140
141 @Test
142 public void testAvailabilityHistories() {
143 assertEquals(2, lme1.measurementHistories().size());
144 ArrayList<LossAvailabilityStatHistory> histories = new ArrayList<>();
145 lme1.availabilityHistories().forEach(histories::add);
146 assertEquals(11, histories.get(0).elapsedTime().toMinutes());
147 }
148
149 @Test
150 public void testLmCfgType() {
151 assertEquals(LmType.LMLMM, lme1.lmCfgType());
152 }
153
154 @Test
155 public void testAlignMeasurementIntervals() {
156 assertTrue(lme1.alignMeasurementIntervals());
157 }
158}