blob: 40f20b6018f6e8f2606f2d2648930198bc23c551 [file] [log] [blame]
Sho SHIMIZUae40b572016-06-08 17:45:14 -07001/*
2 * Copyright 2016-present Open Networking Laboratory
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 */
16
17package org.onosproject.store.resource.impl;
18
19import com.google.common.collect.ImmutableSet;
20import org.junit.Test;
21import org.onosproject.net.DeviceId;
22import org.onosproject.net.PortNumber;
23import org.onosproject.net.resource.DiscreteResource;
24import org.onosproject.net.resource.Resources;
Sho SHIMIZU317b4982016-06-28 09:13:56 -070025import org.onosproject.store.service.Serializer;
Sho SHIMIZUae40b572016-06-08 17:45:14 -070026
27import java.util.Optional;
Sho SHIMIZU317b4982016-06-28 09:13:56 -070028import java.util.Set;
29import java.util.stream.Collectors;
30import java.util.stream.IntStream;
Sho SHIMIZUae40b572016-06-08 17:45:14 -070031
32import static org.hamcrest.Matchers.is;
33import static org.junit.Assert.assertThat;
34
35public class EncodableDiscreteResourcesTest {
Sho SHIMIZU317b4982016-06-28 09:13:56 -070036 private final Serializer serializer = ConsistentResourceStore.SERIALIZER;
37
38 @Test
39 public void testPortSerialize() {
40 DiscreteResource device = Resources.discrete(DeviceId.deviceId("a")).resource();
41 Set<DiscreteResource> resources = IntStream.range(0, 100)
42 .mapToObj(PortNumber::portNumber)
43 .map(device::child)
44 .collect(Collectors.toSet());
45
46 DiscreteResources original = EncodableDiscreteResources.of(resources);
47
48 byte[] bytes = serializer.encode(original);
49 DiscreteResources decoded = serializer.decode(bytes);
50 assertThat(decoded, is(original));
51 }
52
Sho SHIMIZUae40b572016-06-08 17:45:14 -070053 @Test
54 public void testIfResourceIsFound() {
55 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
56
57 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
58
59 assertThat(sut.lookup(res1.id()), is(Optional.of(res1)));
60 }
61
62 @Test
63 public void testIfResourceIsNotFound() {
64 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070065 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -070066
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070067 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070068
69 assertThat(sut.lookup(res2.id()), is(Optional.empty()));
70 }
71
72 @Test
73 public void testIfDifferenceIsEmpty() {
74 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070075 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -070076
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070077 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070078
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070079 DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070080
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070081 DiscreteResources expected = DiscreteResources.empty();
Sho SHIMIZUae40b572016-06-08 17:45:14 -070082 assertThat(sut.difference(other), is(expected));
83 }
84
85 @Test
86 public void testIfDifferenceIsNotEmpty() {
87 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070088 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -070089
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070090 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070091
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070092 DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070093
Sho SHIMIZU09ed3872016-06-28 11:17:09 -070094 DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -070095 assertThat(sut.difference(other), is(expected));
96 }
97
98 @Test
99 public void testIfDifferenceIsNotChanged() {
100 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700101 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700102
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700103 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700104
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700105 DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700106
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700107 DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700108 assertThat(sut.difference(other), is(expected));
109 }
110
111 @Test
112 public void testDifferenceFromEmpty() {
113 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
114
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700115 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700116
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700117 DiscreteResources other = DiscreteResources.empty();
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700118
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700119 DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700120 assertThat(sut.difference(other), is(expected));
121 }
122
123 @Test
124 public void testEmpty() {
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700125 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of());
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700126
127 assertThat(sut.isEmpty(), is(true));
128 }
129
130 @Test
131 public void testNotEmpty() {
132 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
133
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700134 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700135
136 assertThat(sut.isEmpty(), is(false));
137 }
138
139 @Test
140 public void testIfResourceIsContained() {
141 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
142
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700143 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700144
145 assertThat(sut.containsAny(ImmutableSet.of(res1)), is(true));
146 }
147
148 @Test
149 public void testIfResourceIsNotContained() {
150 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700151 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700152
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700153 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700154
155 assertThat(sut.containsAny(ImmutableSet.of(res2)), is(false));
156 }
157
158 @Test
159 public void testContainsWithEmpty() {
160 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
161
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700162 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700163
164 assertThat(sut.containsAny(ImmutableSet.of()), is(false));
165 }
166
167 @Test
168 public void testAdd() {
169 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700170 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700171
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700172 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700173
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700174 DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700175
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700176 DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700177 assertThat(sut.add(other), is(expected));
178 }
179
180 @Test
181 public void testValues() {
182 DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource();
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700183 DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource();
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700184
Sho SHIMIZU09ed3872016-06-28 11:17:09 -0700185 DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2));
Sho SHIMIZUae40b572016-06-08 17:45:14 -0700186
187 assertThat(sut.values(), is(ImmutableSet.of(res1, res2)));
188 }
189}