Committed by
Gerrit Code Review
Make sure to supply Kryo serializable set to constructor
Change-Id: Ida776fc3e7fbcacb604ae578865f2a280970101c
Showing
2 changed files
with
32 additions
and
4 deletions
... | @@ -16,7 +16,6 @@ | ... | @@ -16,7 +16,6 @@ |
16 | package org.onosproject.store.resource.impl; | 16 | package org.onosproject.store.resource.impl; |
17 | 17 | ||
18 | import com.google.common.base.MoreObjects; | 18 | import com.google.common.base.MoreObjects; |
19 | -import com.google.common.collect.ImmutableSet; | ||
20 | import com.google.common.collect.Sets; | 19 | import com.google.common.collect.Sets; |
21 | 20 | ||
22 | import org.onosproject.net.resource.DiscreteResource; | 21 | import org.onosproject.net.resource.DiscreteResource; |
... | @@ -41,7 +40,7 @@ final class GenericDiscreteResources implements DiscreteResources { | ... | @@ -41,7 +40,7 @@ final class GenericDiscreteResources implements DiscreteResources { |
41 | } | 40 | } |
42 | 41 | ||
43 | private GenericDiscreteResources(Set<DiscreteResource> values) { | 42 | private GenericDiscreteResources(Set<DiscreteResource> values) { |
44 | - this.values = ImmutableSet.copyOf(values); | 43 | + this.values = values; |
45 | } | 44 | } |
46 | 45 | ||
47 | // for serializer | 46 | // for serializer |
... | @@ -62,7 +61,8 @@ final class GenericDiscreteResources implements DiscreteResources { | ... | @@ -62,7 +61,8 @@ final class GenericDiscreteResources implements DiscreteResources { |
62 | @Override | 61 | @Override |
63 | public DiscreteResources difference(DiscreteResources other) { | 62 | public DiscreteResources difference(DiscreteResources other) { |
64 | if (other instanceof GenericDiscreteResources) { | 63 | if (other instanceof GenericDiscreteResources) { |
65 | - return of(Sets.difference(this.values(), other.values())); | 64 | + // make sure that the set is serializable |
65 | + return of(new LinkedHashSet<>(Sets.difference(this.values(), other.values()))); | ||
66 | } else if (other instanceof EmptyDiscreteResources) { | 66 | } else if (other instanceof EmptyDiscreteResources) { |
67 | return this; | 67 | return this; |
68 | } | 68 | } |
... | @@ -84,7 +84,8 @@ final class GenericDiscreteResources implements DiscreteResources { | ... | @@ -84,7 +84,8 @@ final class GenericDiscreteResources implements DiscreteResources { |
84 | @Override | 84 | @Override |
85 | public DiscreteResources add(DiscreteResources other) { | 85 | public DiscreteResources add(DiscreteResources other) { |
86 | if (other instanceof GenericDiscreteResources) { | 86 | if (other instanceof GenericDiscreteResources) { |
87 | - return new GenericDiscreteResources(Sets.union(this.values(), other.values())); | 87 | + // make sure that the set is serializable |
88 | + return of(new LinkedHashSet<>(Sets.union(this.values(), other.values()))); | ||
88 | } else if (other instanceof EmptyDiscreteResources) { | 89 | } else if (other instanceof EmptyDiscreteResources) { |
89 | return this; | 90 | return this; |
90 | } | 91 | } | ... | ... |
... | @@ -21,6 +21,7 @@ import org.junit.Test; | ... | @@ -21,6 +21,7 @@ import org.junit.Test; |
21 | import org.onosproject.net.DeviceId; | 21 | import org.onosproject.net.DeviceId; |
22 | import org.onosproject.net.resource.DiscreteResource; | 22 | import org.onosproject.net.resource.DiscreteResource; |
23 | import org.onosproject.net.resource.Resources; | 23 | import org.onosproject.net.resource.Resources; |
24 | +import org.onosproject.store.service.Serializer; | ||
24 | 25 | ||
25 | import java.util.Optional; | 26 | import java.util.Optional; |
26 | 27 | ||
... | @@ -28,6 +29,8 @@ import static org.hamcrest.Matchers.is; | ... | @@ -28,6 +29,8 @@ import static org.hamcrest.Matchers.is; |
28 | import static org.junit.Assert.assertThat; | 29 | import static org.junit.Assert.assertThat; |
29 | 30 | ||
30 | public class GenericDiscreteResourcesTest { | 31 | public class GenericDiscreteResourcesTest { |
32 | + private final Serializer serializer = ConsistentResourceStore.SERIALIZER; | ||
33 | + | ||
31 | @Test | 34 | @Test |
32 | public void testIfResourceIsFound() { | 35 | public void testIfResourceIsFound() { |
33 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource(); | 36 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource(); |
... | @@ -164,4 +167,28 @@ public class GenericDiscreteResourcesTest { | ... | @@ -164,4 +167,28 @@ public class GenericDiscreteResourcesTest { |
164 | 167 | ||
165 | assertThat(sut.values(), is(ImmutableSet.of(res1, res2))); | 168 | assertThat(sut.values(), is(ImmutableSet.of(res1, res2))); |
166 | } | 169 | } |
170 | + | ||
171 | + @Test | ||
172 | + public void testDifferenceSerializable() { | ||
173 | + DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource(); | ||
174 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource(); | ||
175 | + | ||
176 | + DiscreteResources set1 = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | ||
177 | + DiscreteResources set2 = GenericDiscreteResources.of(ImmutableSet.of(res1)); | ||
178 | + | ||
179 | + DiscreteResources difference = set1.difference(set2); | ||
180 | + assertThat(serializer.decode(serializer.encode(difference)), is(difference)); | ||
181 | + } | ||
182 | + | ||
183 | + @Test | ||
184 | + public void testAddSerializable() { | ||
185 | + DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource(); | ||
186 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource(); | ||
187 | + | ||
188 | + DiscreteResources set1 = GenericDiscreteResources.of(ImmutableSet.of(res1)); | ||
189 | + DiscreteResources set2 = GenericDiscreteResources.of(ImmutableSet.of(res2)); | ||
190 | + | ||
191 | + DiscreteResources add = set1.add(set2); | ||
192 | + assertThat(serializer.decode(serializer.encode(add)), is(add)); | ||
193 | + } | ||
167 | } | 194 | } | ... | ... |
-
Please register or login to post a comment