Fix: Set default state as ADDED for newly added mapping by router

Change-Id: I34eda7f5b229efe273d4a4e61e72082f8f123a2c
This commit is contained in:
Jian Li 2017-04-25 19:12:53 +09:00
parent c56cded49f
commit a1f960b651
4 changed files with 16 additions and 9 deletions

View File

@ -80,7 +80,7 @@ public interface MappingStore extends Store<MappingEvent, MappingStoreDelegate>
* @param type store type
* @param mapping the mapping to add
*/
void storeMapping(Type type, Mapping mapping);
void storeMapping(Type type, MappingEntry mapping);
/**
* Marks a mapping for deletion. Actual deletion will occur when the

View File

@ -191,7 +191,7 @@ public class DistributedMappingStore
}
@Override
public void storeMapping(Type type, Mapping mapping) {
public void storeMapping(Type type, MappingEntry mapping) {
getStore(type).put(mapping.id(), mapping);
}

View File

@ -26,6 +26,7 @@ import org.apache.felix.scr.annotations.Service;
import org.onosproject.mapping.DefaultMappingEntry;
import org.onosproject.mapping.Mapping;
import org.onosproject.mapping.MappingEntry;
import org.onosproject.mapping.MappingEntry.MappingEntryState;
import org.onosproject.mapping.MappingEvent;
import org.onosproject.mapping.MappingId;
import org.onosproject.mapping.MappingStore;
@ -213,14 +214,15 @@ public class SimpleMappingStore
}
@Override
public void storeMapping(Type type, Mapping mapping) {
public void storeMapping(Type type, MappingEntry mapping) {
List<StoredMappingEntry> entries =
getMappingEntriesInternal(type, mapping.deviceId(), mapping.id());
synchronized (entries) {
if (!entries.contains(mapping)) {
StoredMappingEntry entry = new DefaultMappingEntry(mapping);
StoredMappingEntry entry =
new DefaultMappingEntry(mapping, mapping.state());
entries.add(entry);
}
}
@ -252,7 +254,7 @@ public class SimpleMappingStore
for (StoredMappingEntry stored : entries) {
if (stored.equals(entry)) {
if (stored.state() == PENDING_ADD) {
stored.setState(MappingEntry.MappingEntryState.ADDED);
stored.setState(MappingEntryState.ADDED);
return new MappingEvent(MAPPING_ADDED, entry);
}
return new MappingEvent(MAPPING_UPDATED, entry);

View File

@ -22,10 +22,12 @@ import org.junit.Test;
import org.onlab.packet.ChassisId;
import org.onlab.packet.IpPrefix;
import org.onosproject.mapping.DefaultMapping;
import org.onosproject.mapping.DefaultMappingEntry;
import org.onosproject.mapping.DefaultMappingKey;
import org.onosproject.mapping.DefaultMappingTreatment;
import org.onosproject.mapping.DefaultMappingValue;
import org.onosproject.mapping.Mapping;
import org.onosproject.mapping.MappingEntry;
import org.onosproject.mapping.MappingKey;
import org.onosproject.mapping.MappingTreatment;
import org.onosproject.mapping.MappingValue;
@ -59,8 +61,8 @@ public class DistributedMappingStoreTest {
private static final String IP_ADDRESS = "1.2.3.4/24";
private DistributedMappingStore mappingStore;
private Mapping mapping1;
private Mapping mapping2;
private MappingEntry mapping1;
private MappingEntry mapping2;
private Device device1;
private Device device2;
@ -103,20 +105,23 @@ public class DistributedMappingStoreTest {
"foo.inc", "0", "0", "0", null,
DefaultAnnotations.builder().build());
mapping1 = DefaultMapping.builder()
Mapping originalMapping1 = DefaultMapping.builder()
.forDevice(DEVICE_ID_1)
.withId(1000L)
.withKey(key)
.withValue(value)
.build();
mapping2 = DefaultMapping.builder()
Mapping originalMapping2 = DefaultMapping.builder()
.forDevice(DEVICE_ID_2)
.withId(2000L)
.withKey(key)
.withValue(value)
.build();
mapping1 = new DefaultMappingEntry(originalMapping1);
mapping2 = new DefaultMappingEntry(originalMapping2);
mappingStore.activate();
}