FIX for ONOS-5260: METER AppID Display on GET, Precedence Range Issue
Change-Id: Ia82b8d70de0b5d824d808f9593ada64d3c1fbd09
diff --git a/core/api/src/main/java/org/onosproject/net/meter/Band.java b/core/api/src/main/java/org/onosproject/net/meter/Band.java
index 1942876..35a816f 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/Band.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/Band.java
@@ -20,6 +20,10 @@
*/
public interface Band {
+ short MIN_PRECEDENCE = 0;
+ short MAX_PRECEDENCE = 255;
+ String ERR_MSG = "Precedence out of range";
+
/**
* Specifies the type of band.
*/
diff --git a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
index 236566cb..b0ce738 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
@@ -34,6 +34,9 @@
public DefaultBand(Type type, long rate,
Long burstSize, Short prec) {
this.type = type;
+ if (type == Type.REMARK) {
+ checkArgument(prec <= MAX_PRECEDENCE && prec >= MIN_PRECEDENCE, ERR_MSG);
+ }
this.rate = rate;
this.burstSize = burstSize;
this.prec = prec;
diff --git a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
index e66e5a6..3dcb62f 100644
--- a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
+++ b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
@@ -35,6 +35,7 @@
private Meter m1;
private Meter sameAsm1;
private Meter m2;
+ private Meter m3;
@Before
public void setup() {
@@ -44,6 +45,12 @@
.withRate(500)
.build();
+ Band band1 = DefaultBand.builder()
+ .ofType(Band.Type.REMARK)
+ .withRate(500)
+ .dropPrecedence((short) 1)
+ .build();
+
m1 = DefaultMeter.builder()
.forDevice(did("1"))
.fromApp(APP_ID)
@@ -68,13 +75,23 @@
.withBands(Collections.singletonList(band))
.build();
+ m3 = DefaultMeter.builder()
+ .forDevice(did("3"))
+ .fromApp(APP_ID)
+ .withId(MeterId.meterId(3))
+ .withUnit(Meter.Unit.KB_PER_SEC)
+ .withBands(Collections.singletonList(band1))
+ .build();
+
+
}
@Test
public void testEquality() {
new EqualsTester()
.addEqualityGroup(m1, sameAsm1)
- .addEqualityGroup(m2).testEquals();
+ .addEqualityGroup(m2)
+ .addEqualityGroup(m3).testEquals();
}
@Test
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
index 5b7df81..0f67dd9 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/MeterCodec.java
@@ -61,7 +61,7 @@
.put(DEVICE_ID, meter.deviceId().toString());
if (meter.appId() != null) {
- result.put(APP_ID, meter.appId().toString());
+ result.put(APP_ID, meter.appId().name());
}
if (meter.state() != null) {
diff --git a/web/api/src/main/resources/definitions/Meter.json b/web/api/src/main/resources/definitions/Meter.json
index e8fefe5..d34b7e0 100644
--- a/web/api/src/main/resources/definitions/Meter.json
+++ b/web/api/src/main/resources/definitions/Meter.json
@@ -21,7 +21,7 @@
},
"appId": {
"type": "string",
- "example": "1"
+ "example": "org.onosproject.rest"
},
"deviceId": {
"type": "string",
@@ -110,4 +110,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/web/api/src/main/resources/definitions/Meters.json b/web/api/src/main/resources/definitions/Meters.json
index 46e8727..d5f6d70 100644
--- a/web/api/src/main/resources/definitions/Meters.json
+++ b/web/api/src/main/resources/definitions/Meters.json
@@ -34,7 +34,7 @@
},
"appId": {
"type": "string",
- "example": "1"
+ "example": "org.onosproject.rest"
},
"deviceId": {
"type": "string",
@@ -126,4 +126,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
index bcf5d17..a23ca8c 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/MetersResourceTest.java
@@ -263,9 +263,9 @@
// check application id
final String jsonAppId = jsonMeter.get("appId").asString();
- final String appId = meter.appId().toString();
+ final String appId = meter.appId().name();
if (!jsonAppId.equals(appId)) {
- reason = "appId " + meter.appId().toString();
+ reason = "appId " + meter.appId().name();
return false;
}