Loading api/system-current.txt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26158,6 +26158,7 @@ package android.metrics { method public long getTimestamp(); method public long getTimestamp(); method public int getType(); method public int getType(); method public boolean isLongCounterBucket(); method public boolean isLongCounterBucket(); method public boolean isSubsetOf(android.metrics.LogMaker); method public boolean isValidValue(java.lang.Object); method public boolean isValidValue(java.lang.Object); method public java.lang.Object[] serialize(); method public java.lang.Object[] serialize(); method public android.metrics.LogMaker setCategory(int); method public android.metrics.LogMaker setCategory(int); core/java/android/metrics/LogMaker.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -240,6 +240,9 @@ public class LogMaker { return out; return out; } } /** * Reconstitute an object from the output of {@link #serialize()}. */ public void deserialize(Object[] items) { public void deserialize(Object[] items) { int i = 0; int i = 0; while (i < items.length) { while (i < items.length) { Loading @@ -252,4 +255,22 @@ public class LogMaker { } } } } } } /** * @param that the object to compare to. * @return true if values in that equal values in this, for tags that exist in this. */ public boolean isSubsetOf(LogMaker that) { if (that == null) { return false; } for (int i = 0; i < entries.size(); i++) { int key = this.entries.keyAt(i); Object thisValue = this.entries.valueAt(i); Object thatValue = that.entries.get(key); if ((thisValue == null && thatValue != null) || !thisValue.equals(thatValue)) return false; } return true; } } } core/tests/coretests/src/android/metrics/LogMakerTest.java +74 −0 Original line number Original line Diff line number Diff line Loading @@ -132,4 +132,78 @@ public class LogMakerTest extends TestCase { assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE); assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE); } } public void testIdentityEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); a.addTaggedData(3, 123L); assertTrue("objects should be equal to themselves", a.isSubsetOf(a)); } public void testExactEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); a.addTaggedData(3, 123L); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("deep equality should be true", a.isSubsetOf(b)); assertTrue("deep equality shoudl be true", b.isSubsetOf(a)); } public void testSubsetEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("a is a strict subset of b", a.isSubsetOf(b)); assertTrue("b is not a strict subset of a", !b.isSubsetOf(a)); } public void testInequality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwofour"); a.addTaggedData(2, 1234); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("a is not a subset of b", !a.isSubsetOf(b)); assertTrue("b is not a subset of a", !b.isSubsetOf(a)); } public void testWildcardEquality() { LogMaker empty = new LogMaker(0); empty.clearTaggedData(MetricsEvent.RESERVED_FOR_LOGBUILDER_CATEGORY); //dirty trick LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("empty builder is a subset of anything", empty.isSubsetOf(b)); } public void testNullEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwofour"); a.addTaggedData(2, 1234); assertTrue("a is not a subset of null", !a.isSubsetOf(null)); } public void testMajorCategory() { LogMaker a = new LogMaker(1); LogMaker b = new LogMaker(2); assertFalse(a.isSubsetOf(b)); assertFalse(b.isSubsetOf(a)); } } } Loading
api/system-current.txt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26158,6 +26158,7 @@ package android.metrics { method public long getTimestamp(); method public long getTimestamp(); method public int getType(); method public int getType(); method public boolean isLongCounterBucket(); method public boolean isLongCounterBucket(); method public boolean isSubsetOf(android.metrics.LogMaker); method public boolean isValidValue(java.lang.Object); method public boolean isValidValue(java.lang.Object); method public java.lang.Object[] serialize(); method public java.lang.Object[] serialize(); method public android.metrics.LogMaker setCategory(int); method public android.metrics.LogMaker setCategory(int);
core/java/android/metrics/LogMaker.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -240,6 +240,9 @@ public class LogMaker { return out; return out; } } /** * Reconstitute an object from the output of {@link #serialize()}. */ public void deserialize(Object[] items) { public void deserialize(Object[] items) { int i = 0; int i = 0; while (i < items.length) { while (i < items.length) { Loading @@ -252,4 +255,22 @@ public class LogMaker { } } } } } } /** * @param that the object to compare to. * @return true if values in that equal values in this, for tags that exist in this. */ public boolean isSubsetOf(LogMaker that) { if (that == null) { return false; } for (int i = 0; i < entries.size(); i++) { int key = this.entries.keyAt(i); Object thisValue = this.entries.valueAt(i); Object thatValue = that.entries.get(key); if ((thisValue == null && thatValue != null) || !thisValue.equals(thatValue)) return false; } return true; } } }
core/tests/coretests/src/android/metrics/LogMakerTest.java +74 −0 Original line number Original line Diff line number Diff line Loading @@ -132,4 +132,78 @@ public class LogMakerTest extends TestCase { assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE); assertTrue(badBuilder.serialize().length < LogMaker.MAX_SERIALIZED_SIZE); } } public void testIdentityEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); a.addTaggedData(3, 123L); assertTrue("objects should be equal to themselves", a.isSubsetOf(a)); } public void testExactEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); a.addTaggedData(3, 123L); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("deep equality should be true", a.isSubsetOf(b)); assertTrue("deep equality shoudl be true", b.isSubsetOf(a)); } public void testSubsetEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwothree"); a.addTaggedData(2, 123); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("a is a strict subset of b", a.isSubsetOf(b)); assertTrue("b is not a strict subset of a", !b.isSubsetOf(a)); } public void testInequality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwofour"); a.addTaggedData(2, 1234); LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("a is not a subset of b", !a.isSubsetOf(b)); assertTrue("b is not a subset of a", !b.isSubsetOf(a)); } public void testWildcardEquality() { LogMaker empty = new LogMaker(0); empty.clearTaggedData(MetricsEvent.RESERVED_FOR_LOGBUILDER_CATEGORY); //dirty trick LogMaker b = new LogMaker(0); b.addTaggedData(1, "onetwothree"); b.addTaggedData(2, 123); b.addTaggedData(3, 123L); assertTrue("empty builder is a subset of anything", empty.isSubsetOf(b)); } public void testNullEquality() { LogMaker a = new LogMaker(0); a.addTaggedData(1, "onetwofour"); a.addTaggedData(2, 1234); assertTrue("a is not a subset of null", !a.isSubsetOf(null)); } public void testMajorCategory() { LogMaker a = new LogMaker(1); LogMaker b = new LogMaker(2); assertFalse(a.isSubsetOf(b)); assertFalse(b.isSubsetOf(a)); } } }