Toshio Koide

Fix bugs on SimpleLinkResourceStore.

...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
15 */ 15 */
16 package org.onlab.onos.store.trivial.impl; 16 package org.onlab.onos.store.trivial.impl;
17 17
18 -import static com.google.common.base.Preconditions.*; 18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +import static com.google.common.base.Preconditions.checkState;
19 import static org.slf4j.LoggerFactory.getLogger; 20 import static org.slf4j.LoggerFactory.getLogger;
20 21
21 import java.util.Collections; 22 import java.util.Collections;
...@@ -65,6 +66,13 @@ public class SimpleLinkResourceStore implements LinkResourceStore { ...@@ -65,6 +66,13 @@ public class SimpleLinkResourceStore implements LinkResourceStore {
65 log.info("Stopped"); 66 log.info("Stopped");
66 } 67 }
67 68
69 + /**
70 + * Returns free resources for a given link obtaining from topology
71 + * information.
72 + *
73 + * @param link the target link
74 + * @return free resources
75 + */
68 private Set<ResourceAllocation> readOriginalFreeResources(Link link) { 76 private Set<ResourceAllocation> readOriginalFreeResources(Link link) {
69 // TODO read capacity and lambda resources from topology 77 // TODO read capacity and lambda resources from topology
70 Set<ResourceAllocation> allocations = new HashSet<>(); 78 Set<ResourceAllocation> allocations = new HashSet<>();
...@@ -75,6 +83,15 @@ public class SimpleLinkResourceStore implements LinkResourceStore { ...@@ -75,6 +83,15 @@ public class SimpleLinkResourceStore implements LinkResourceStore {
75 return allocations; 83 return allocations;
76 } 84 }
77 85
86 + /**
87 + * Finds and returns {@link BandwidthResourceAllocation} object from a given
88 + * set.
89 + *
90 + * @param freeRes a set of ResourceAllocation object.
91 + * @return {@link BandwidthResourceAllocation} object if found, otherwise
92 + * {@link BandwidthResourceAllocation} object with 0 bandwidth
93 + *
94 + */
78 private BandwidthResourceAllocation getBandwidth(Set<ResourceAllocation> freeRes) { 95 private BandwidthResourceAllocation getBandwidth(Set<ResourceAllocation> freeRes) {
79 for (ResourceAllocation res : freeRes) { 96 for (ResourceAllocation res : freeRes) {
80 if (res.type() == ResourceType.BANDWIDTH) { 97 if (res.type() == ResourceType.BANDWIDTH) {
...@@ -84,12 +101,16 @@ public class SimpleLinkResourceStore implements LinkResourceStore { ...@@ -84,12 +101,16 @@ public class SimpleLinkResourceStore implements LinkResourceStore {
84 return new BandwidthResourceAllocation(Bandwidth.valueOf(0)); 101 return new BandwidthResourceAllocation(Bandwidth.valueOf(0));
85 } 102 }
86 103
104 + /**
105 + * Subtracts given resources from free resources for given link.
106 + *
107 + * @param link the target link
108 + * @param allocations the resources to be subtracted
109 + */
87 private void subtractFreeResources(Link link, LinkResourceAllocations allocations) { 110 private void subtractFreeResources(Link link, LinkResourceAllocations allocations) {
88 // TODO Use lock or version for updating freeResources. 111 // TODO Use lock or version for updating freeResources.
89 checkNotNull(link); 112 checkNotNull(link);
90 - Set<ResourceAllocation> freeRes = freeResources.get(link); 113 + Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link));
91 - checkNotNull(freeRes);
92 - freeRes = new HashSet<>(freeRes);
93 Set<ResourceAllocation> subRes = allocations.getResourceAllocation(link); 114 Set<ResourceAllocation> subRes = allocations.getResourceAllocation(link);
94 for (ResourceAllocation res : subRes) { 115 for (ResourceAllocation res : subRes) {
95 switch (res.type()) { 116 switch (res.type()) {
...@@ -114,11 +135,15 @@ public class SimpleLinkResourceStore implements LinkResourceStore { ...@@ -114,11 +135,15 @@ public class SimpleLinkResourceStore implements LinkResourceStore {
114 135
115 } 136 }
116 137
138 + /**
139 + * Adds given resources to free resources for given link.
140 + *
141 + * @param link the target link
142 + * @param allocations the resources to be added
143 + */
117 private void addFreeResources(Link link, LinkResourceAllocations allocations) { 144 private void addFreeResources(Link link, LinkResourceAllocations allocations) {
118 // TODO Use lock or version for updating freeResources. 145 // TODO Use lock or version for updating freeResources.
119 - Set<ResourceAllocation> freeRes = freeResources.get(link); 146 + Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link));
120 - checkNotNull(freeRes);
121 - freeRes = new HashSet<>(freeRes);
122 Set<ResourceAllocation> addRes = allocations.getResourceAllocation(link); 147 Set<ResourceAllocation> addRes = allocations.getResourceAllocation(link);
123 for (ResourceAllocation res : addRes) { 148 for (ResourceAllocation res : addRes) {
124 switch (res.type()) { 149 switch (res.type()) {
......