import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.RibKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.rib.LocRib;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.AttributesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpOrigin;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.IsoSystemIdentifier;
import org.opendaylight.yangtools.yang.binding.DataObject;
@Mock
private Peer peer;
+
+
private LinkstateAdjRIBsIn lrib;
private CLinkstateDestinationBuilder dBuilder;
public void setUp() {
MockitoAnnotations.initMocks(this);
TablesKey key = new TablesKey(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class);
- InstanceIdentifier<?> iid = InstanceIdentifier.builder(BgpRib.class).child(Rib.class, new RibKey(new RibId("test-rib"))).toInstance();
+ final InstanceIdentifier<Rib> iid = InstanceIdentifier.builder(BgpRib.class).child(Rib.class, new RibKey(new RibId("test-rib"))).toInstance();
Mockito.doAnswer(new Answer<String>() {
@Override
public String answer(final InvocationOnMock invocation) throws Throwable {
@Override
public Object answer(final InvocationOnMock invocation) throws Throwable {
final Object[] args = invocation.getArguments();
- return LinkstateAdjRIBsInTest.this.data.get(args[0]);
+ Object result = LinkstateAdjRIBsInTest.this.data.get(args[0]);
+ if (result == null) {
+ InstanceIdentifier<Attributes> attrId = iid.child(LocRib.class).child(Tables.class).child(Attributes.class);
+ if (attrId.containsWildcarded((InstanceIdentifier<?>) args[0])) {
+ result = new AttributesBuilder().setUptodate(Boolean.TRUE).build();
+ }
+ }
+
+ return result;
}
}).when(this.trans).readOperationalData(Matchers.any(InstanceIdentifier.class));
this.lrib.addRoutes(this.trans, this.peer, this.builder.build(), pa.build());
- Mockito.verify(this.trans, Mockito.times(2)).putOperationalData(Matchers.any(InstanceIdentifier.class),
+ Mockito.verify(this.trans, Mockito.times(3)).putOperationalData(Matchers.any(InstanceIdentifier.class),
Matchers.any(DataObject.class));
- assertEquals(2,this.data.size());
+ assertEquals(3,this.data.size());
}
@Test
this.lrib.addRoutes(this.trans, this.peer, this.builder.build(), pa.build());
- Mockito.verify(this.trans, Mockito.times(2)).putOperationalData(Matchers.any(InstanceIdentifier.class),
+ Mockito.verify(this.trans, Mockito.times(3)).putOperationalData(Matchers.any(InstanceIdentifier.class),
Matchers.any(DataObject.class));
- assertEquals(2,this.data.size());
+ assertEquals(3,this.data.size());
}
@Test
this.lrib.addRoutes(this.trans, this.peer, this.builder.build(), pa.build());
- Mockito.verify(this.trans, Mockito.times(2)).putOperationalData(Matchers.any(InstanceIdentifier.class),
+ Mockito.verify(this.trans, Mockito.times(3)).putOperationalData(Matchers.any(InstanceIdentifier.class),
Matchers.any(DataObject.class));
- assertEquals(2,this.data.size());
+ assertEquals(3,this.data.size());
MpUnreachNlriBuilder builder = new MpUnreachNlriBuilder();
builder.setAfi(LinkstateAddressFamily.class);
new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.update.path.attributes.mp.unreach.nlri.withdrawn.routes.destination.type.destination.linkstate._case.DestinationLinkstateBuilder().setCLinkstateDestination(this.destinations).build()).build()).build());
this.lrib.removeRoutes(this.trans, this.peer, builder.build());
- Mockito.verify(this.trans, Mockito.times(1)).removeOperationalData(Matchers.any(InstanceIdentifier.class));
- assertEquals(1,this.data.size());
+ Mockito.verify(this.trans, Mockito.times(2)).removeOperationalData(Matchers.any(InstanceIdentifier.class));
+ assertEquals(2,this.data.size());
}
}
uses bgp-mp:bgp-table-type;
key "afi safi";
- leaf uptodate {
- type boolean;
- default false;
+ container attributes {
+ leaf uptodate {
+ type boolean;
+ default false;
+ }
}
choice routes {
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.AttributesBuilder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
}
protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
- return toStringHelper.add("attributes", attributes);
+ return toStringHelper.add("attributes", this.attributes);
}
}
new MpReachNlriBuilder().setAfi(key.getAfi()).setSafi(key.getSafi()).build()).build()).build()).build();
trans.putOperationalData(this.basePath,
- new TablesBuilder().setAfi(key.getAfi()).setSafi(key.getSafi()).setUptodate(Boolean.FALSE).build());
+ new TablesBuilder().setAfi(key.getAfi()).setSafi(key.getSafi()).
+ setAttributes(new AttributesBuilder().setUptodate(Boolean.TRUE).build()).build());
}
private void setUptodate(final DataModificationTransaction trans, final Boolean uptodate) {
- final Tables t = (Tables) trans.readOperationalData(this.basePath);
- Preconditions.checkState(t != null);
- if (!uptodate.equals(t.isUptodate())) {
- LOG.debug("Table {} switching uptodate to {}", t, uptodate);
- trans.putOperationalData(this.basePath, new TablesBuilder(t).setRoutes(t.getRoutes()).setUptodate(uptodate).build());
+ final InstanceIdentifier<Attributes> aid = this.basePath.child(Attributes.class);
+ final Attributes a = (Attributes) trans.readOperationalData(aid);
+ Preconditions.checkState(a != null);
+
+ if (!uptodate.equals(a.isUptodate())) {
+ LOG.debug("Table {} switching uptodate to {}", this.basePath, uptodate);
+ trans.removeOperationalData(aid);
+ trans.putOperationalData(aid, new AttributesBuilder().setUptodate(uptodate).build());
}
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.BgpRib;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.rib.LocRib;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.AttributesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
public class ParserToSalTest {
private static final Logger LOG = LoggerFactory.getLogger(ParserToSalTest.class);
+ private static final InstanceIdentifier<Attributes> attrId =
+ InstanceIdentifier.builder(BgpRib.class).child(Rib.class).child(LocRib.class).child(Tables.class).child(Attributes.class).build();
private final String hex_messages = "/bgp_hex.txt";
Mockito.doAnswer(new Answer<String>() {
@Override
- public String answer(final InvocationOnMock invocation) throws Throwable {
+ public String answer(final InvocationOnMock invocation) {
final Object[] args = invocation.getArguments();
LOG.debug("Put key {} value {}", args[0]);
LOG.debug("Put value {}", args[1]);
Mockito.doAnswer(new Answer<Object>() {
@Override
- public Object answer(final InvocationOnMock invocation) throws Throwable {
+ public Object answer(final InvocationOnMock invocation) {
final Object[] args = invocation.getArguments();
- LOG.debug("Get key {}", args[0]);
- return data.get(args[0]);
+ final InstanceIdentifier<?> id = (InstanceIdentifier<?>) args[0];
+
+ LOG.debug("Remove key {}", id);
+ data.remove(id);
+ return null;
+ }
+ }).when(this.mockedTransaction).removeOperationalData(Matchers.any(InstanceIdentifier.class));
+
+ Mockito.doAnswer(new Answer<Object>() {
+ @Override
+ public Object answer(final InvocationOnMock invocation) {
+ final Object[] args = invocation.getArguments();
+ final InstanceIdentifier<?> id = (InstanceIdentifier<?>) args[0];
+
+ LOG.debug("Get key {}", id);
+ Object ret = data.get(id);
+ if (ret != null) {
+ return ret;
+ }
+
+ if (attrId.containsWildcarded(id)) {
+ return new AttributesBuilder().setUptodate(true).build();
+ }
+ return null;
}
}).when(this.mockedTransaction).readOperationalData(Matchers.any(InstanceIdentifier.class));
(BgpTableType) new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class),
new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class)));
- Mockito.verify(this.mockedTransaction, Mockito.times(81)).putOperationalData(Matchers.any(InstanceIdentifier.class),
+ Mockito.verify(this.mockedTransaction, Mockito.times(83)).putOperationalData(Matchers.any(InstanceIdentifier.class),
Matchers.any(DataObject.class));
}
runTestWithTables(ImmutableList.of(
(BgpTableType) new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)));
- Mockito.verify(this.mockedTransaction, Mockito.times(27)).putOperationalData(Matchers.any(InstanceIdentifier.class),
+ Mockito.verify(this.mockedTransaction, Mockito.times(28)).putOperationalData(Matchers.any(InstanceIdentifier.class),
Matchers.any(DataObject.class));
}