import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.SubtableDumpExecutor;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
import io.fd.honeycomb.lisp.translate.read.trait.SubtableReader;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
import io.fd.honeycomb.translate.vpp.util.NamingContext;
import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
private static final String CACHE_KEY = BridgeDomainSubtableCustomizer.class.getName();
private final DumpCacheManager<LispEidTableMapDetailsReplyDump, SubtableDumpParams> dumpManager;
- private final SubtableDumpExecutor dumpExecutor;
private final NamingContext bridgeDomainContext;
public BridgeDomainSubtableCustomizer(@Nonnull final FutureJVppCore futureJvppCore,
@Nonnull final NamingContext bridgeDomainContext) {
super(futureJvppCore);
- dumpExecutor = new SubtableDumpExecutor(futureJvppCore);
- dumpManager =
- new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
- .withExecutor(dumpExecutor)
- .build();
+ dumpManager = new DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
+ .withExecutor(createExecutor(futureJvppCore))
+ .build();
this.bridgeDomainContext = checkNotNull(bridgeDomainContext, "Bridge domain context cannot be null");
}
import static com.google.common.base.Preconditions.checkState;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorDumpExecutor;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorReader;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
*/
public class InterfaceCustomizer
extends FutureJVppCustomizer
- implements ListReaderCustomizer<Interface, InterfaceKey, InterfaceBuilder> {
+ implements ListReaderCustomizer<Interface, InterfaceKey, InterfaceBuilder>, LocatorReader {
private static final String KEY_BASE = InterfaceCustomizer.class.getName();
private final NamingContext locatorSetContext;
private final DumpCacheManager<LispLocatorDetailsReplyDump, LocatorDumpParams> dumpCacheManager;
- public InterfaceCustomizer(
- @Nonnull final FutureJVppCore futureJvpp,
- @Nonnull final NamingContext interfaceContext,
- @Nonnull final NamingContext locatorSetContext) {
+ public InterfaceCustomizer(@Nonnull final FutureJVppCore futureJvpp, @Nonnull final NamingContext interfaceContext,
+ @Nonnull final NamingContext locatorSetContext) {
super(futureJvpp);
this.interfaceContext = checkNotNull(interfaceContext, "Interface context cannot be null");
this.locatorSetContext = checkNotNull(locatorSetContext, "Locator set context cannot be null");
this.dumpCacheManager =
new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorDetailsReplyDump, LocatorDumpParams>()
- .withExecutor(new LocatorDumpExecutor(futureJvpp))
+ .withExecutor(createLocatorDumpExecutor(futureJvpp))
.build();
}
import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.ItrRemoteLocatorSetDumpExecutor;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocs;
import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocsReply;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class ItrRemoteLocatorSetCustomizer extends FutureJVppCustomizer
- implements ReaderCustomizer<ItrRemoteLocatorSet, ItrRemoteLocatorSetBuilder>, ByteDataTranslator {
+ implements ReaderCustomizer<ItrRemoteLocatorSet, ItrRemoteLocatorSetBuilder>, ByteDataTranslator,
+ JvppReplyConsumer {
private static final String CACHE_KEY = ItrRemoteLocatorSetCustomizer.class.getName();
public ItrRemoteLocatorSetCustomizer(@Nonnull final FutureJVppCore futureJVppCore) {
super(futureJVppCore);
dumpCacheManager = new DumpCacheManagerBuilder<LispGetMapRequestItrRlocsReply, Void>()
- .withExecutor(new ItrRemoteLocatorSetDumpExecutor(futureJVppCore)).build();
+ .withExecutor(((identifier, params) -> getReplyForRead(
+ futureJVppCore.lispGetMapRequestItrRlocs(new LispGetMapRequestItrRlocs()).toCompletableFuture(),
+ identifier)))
+ .build();
}
@Nonnull
import com.google.common.base.Optional;
import io.fd.honeycomb.lisp.context.util.EidMappingContext;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.lisp.translate.read.trait.MappingFilterProvider;
+import io.fd.honeycomb.lisp.translate.read.trait.MappingReader;
import io.fd.honeycomb.lisp.translate.util.EidTranslator;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
public class LocalMappingCustomizer
extends FutureJVppCustomizer
implements ListReaderCustomizer<LocalMapping, LocalMappingKey, LocalMappingBuilder>, EidTranslator,
- MappingFilterProvider {
+ MappingReader {
private static final Logger LOG = LoggerFactory.getLogger(LocalMappingCustomizer.class);
private static final String KEY = LocalMappingCustomizer.class.getName();
-
private final DumpCacheManager<LispEidTableDetailsReplyDump, MappingsDumpParams> dumpManager;
- private final MappingsDumpExecutor dumpExecutor;
private final NamingContext locatorSetContext;
private final EidMappingContext localMappingContext;
super(futureJvpp);
this.locatorSetContext = checkNotNull(locatorSetContext, "Locator Set Mapping Context cannot be null");
this.localMappingContext = checkNotNull(localMappingsContext, "Local mappings context cannot be null");
- this.dumpExecutor = new MappingsDumpExecutor(futureJvpp);
this.dumpManager =
new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableDetailsReplyDump, MappingsDumpParams>()
- .withExecutor(dumpExecutor)
+ .withExecutor(createMappingDumpExecutor(futureJvpp))
.build();
}
import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorSetsDumpExecutor;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorSetReader;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
import org.slf4j.LoggerFactory;
public class LocatorSetCustomizer extends FutureJVppCustomizer
- implements ListReaderCustomizer<LocatorSet, LocatorSetKey, LocatorSetBuilder>, ByteDataTranslator {
+ implements ListReaderCustomizer<LocatorSet, LocatorSetKey, LocatorSetBuilder>, ByteDataTranslator,
+ LocatorSetReader {
//TODO - temporary as public because of hack in write customizer in *.write.LocatorSetCustomizer
public static final String LOCATOR_SETS_CACHE_ID = LocatorSetCustomizer.class.getName();
super(futureJvpp);
this.locatorSetContext = checkNotNull(locatorSetContext, "Locator Set mapping context cannot be null");
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorSetDetailsReplyDump, Void>()
- .withExecutor(new LocatorSetsDumpExecutor(futureJvpp))
+ .withExecutor(createExecutor(futureJvpp))
.build();
}
import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MapResolversDumpExecutor;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
import io.fd.honeycomb.translate.vpp.util.AddressTranslator;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.vpp.jvpp.core.dto.LispMapResolverDetails;
import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispMapResolverDump;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.Arrays;
import java.util.Collections;
import org.slf4j.LoggerFactory;
public class MapResolverCustomizer extends FutureJVppCustomizer
- implements ListReaderCustomizer<MapResolver, MapResolverKey, MapResolverBuilder>, AddressTranslator {
+ implements ListReaderCustomizer<MapResolver, MapResolverKey, MapResolverBuilder>, AddressTranslator,
+ JvppReplyConsumer {
private static final Logger LOG = LoggerFactory.getLogger(MapResolverCustomizer.class);
private static final String MAP_RESOLVERS_CACHE_ID = MapResolverCustomizer.class.getName();
public MapResolverCustomizer(FutureJVppCore futureJvpp) {
super(futureJvpp);
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispMapResolverDetailsReplyDump, Void>()
- .withExecutor(new MapResolversDumpExecutor((futureJvpp)))
+ .withExecutor((identifier, params) -> getReplyForRead(
+ futureJvpp.lispMapResolverDump(new LispMapResolverDump()).toCompletableFuture(), identifier))
.build();
}
import com.google.common.base.Optional;
import io.fd.honeycomb.lisp.context.util.EidMappingContext;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorDumpExecutor;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.QuantityType;
-import io.fd.honeycomb.lisp.translate.read.trait.MappingFilterProvider;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorReader;
+import io.fd.honeycomb.lisp.translate.read.trait.MappingReader;
import io.fd.honeycomb.lisp.translate.util.EidTranslator;
import io.fd.honeycomb.translate.ModificationCache;
import io.fd.honeycomb.translate.read.ReadContext;
*/
public class RemoteMappingCustomizer extends FutureJVppCustomizer
implements ListReaderCustomizer<RemoteMapping, RemoteMappingKey, RemoteMappingBuilder>,
- EidTranslator, AddressTranslator, ByteDataTranslator, MappingFilterProvider {
+ EidTranslator, AddressTranslator, ByteDataTranslator, MappingReader, LocatorReader {
private static final Logger LOG = LoggerFactory.getLogger(RemoteMappingCustomizer.class);
private static final String KEY = RemoteMappingCustomizer.class.getName();
this.remoteMappingContext = checkNotNull(remoteMappingContext, "Remote mappings not present");
this.dumpManager =
new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableDetailsReplyDump, MappingsDumpParams>()
- .withExecutor(new MappingsDumpExecutor(futureJvpp))
+ .withExecutor(createMappingDumpExecutor(futureJvpp))
.build();
this.locatorsDumpManager =
new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorDetailsReplyDump, LocatorDumpParams>()
- .withExecutor(new LocatorDumpExecutor(futureJvpp))
+ .withExecutor(createLocatorDumpExecutor(futureJvpp))
.build();
}
import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.VniTableDumpExecutor;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
import io.fd.honeycomb.translate.util.RWUtils;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetails;
import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableVniDump;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.Collections;
import java.util.List;
* Handles the reads of {@link VniTable} nodes
*/
public class VniTableCustomizer extends FutureJVppCustomizer
- implements ListReaderCustomizer<VniTable, VniTableKey, VniTableBuilder> {
+ implements ListReaderCustomizer<VniTable, VniTableKey, VniTableBuilder>, JvppReplyConsumer {
private static final Logger LOG = LoggerFactory.getLogger(VniTableCustomizer.class);
public VniTableCustomizer(@Nonnull final FutureJVppCore futureJvpp) {
super(futureJvpp);
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableVniDetailsReplyDump, Void>()
- .withExecutor(new VniTableDumpExecutor(futureJvpp))
+ .withExecutor(((identifier, params) -> getReplyForRead(
+ futureJvpp.lispEidTableVniDump(new LispEidTableVniDump()).toCompletableFuture(), identifier)))
.build();
}
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.SubtableDumpExecutor;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
import io.fd.honeycomb.lisp.translate.read.trait.SubtableReader;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final String CACHE_KEY = VrfSubtableCustomizer.class.getName();
private final DumpCacheManager<LispEidTableMapDetailsReplyDump, SubtableDumpParams> dumpManager;
- private final SubtableDumpExecutor dumpExecutor;
public VrfSubtableCustomizer(@Nonnull final FutureJVppCore futureJvpp) {
super(futureJvpp);
- dumpExecutor = new SubtableDumpExecutor(futureJvpp);
- dumpManager =
- new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
- .withExecutor(dumpExecutor)
- .build();
+ dumpManager = new DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
+ .withExecutor(createExecutor(futureJvpp))
+ .build();
}
@Nonnull
+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Nonnull;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-
-
-/**
- * Abstract holder for jvpp reference
- */
-public abstract class AbstractJvppDumpExecutor {
-
- protected final FutureJVppCore vppApi;
-
- public AbstractJvppDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
- this.vppApi = checkNotNull(vppApi, "VPP Api reference cannot be null");
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocs;
-import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocsReply;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class ItrRemoteLocatorSetDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispGetMapRequestItrRlocsReply, Void>, JvppReplyConsumer {
-
- public ItrRemoteLocatorSetDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
- super(vppApi);
- }
-
- @Override
- public LispGetMapRequestItrRlocsReply executeDump(final InstanceIdentifier<?> identifier, final Void params) throws
- ReadFailedException {
- return getReplyForRead(vppApi.lispGetMapRequestItrRlocs(new LispGetMapRequestItrRlocs()).toCompletableFuture(),
- identifier);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class MapResolversDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispMapResolverDetailsReplyDump, Void>, JvppReplyConsumer {
-
- public MapResolversDumpExecutor(@Nonnull FutureJVppCore api) {
- super(api);
- }
-
- @Override
- @Nonnull
- public LispMapResolverDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final Void params) throws
- ReadFailedException {
- return getReplyForRead(vppApi.lispMapResolverDump(new LispMapResolverDump()).toCompletableFuture(), identifier);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-/**
- * Common dump executor for both local and remote mappings
- */
-public class MappingsDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispEidTableDetailsReplyDump, MappingsDumpParams>, JvppReplyConsumer {
-
- public MappingsDumpExecutor(@Nonnull FutureJVppCore vppApi) {
- super(vppApi);
- }
-
-
- @Override
- @Nonnull
- public LispEidTableDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
- final MappingsDumpParams params)
- throws ReadFailedException {
- checkNotNull(params, "Params for dump request not present");
-
- LispEidTableDump request = new LispEidTableDump();
- request.eid = params.getEid();
- request.eidSet = params.getEidSet();
- request.eidType = params.getEidType();
- request.prefixLength = params.getPrefixLength();
- request.vni = params.getVni();
- request.filter = params.getFilter();
-
- return getReplyForRead(vppApi.lispEidTableDump(request).toCompletableFuture(), identifier);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Dump executor for {@link VrfSubtable}/{@link BridgeDomainSubtable}
- */
-public final class SubtableDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispEidTableMapDetailsReplyDump, SubtableDumpParams>, JvppReplyConsumer {
-
- public SubtableDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
- super(vppApi);
- }
-
- @Override
- public LispEidTableMapDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
- final SubtableDumpParams params)
- throws ReadFailedException {
- LispEidTableMapDump request = new LispEidTableMapDump();
- request.isL2 = checkNotNull(params, "Cannot bind null params").isL2();
-
- return getReplyForRead(vppApi.lispEidTableMapDump(request).toCompletableFuture(), identifier);
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class VniTableDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispEidTableVniDetailsReplyDump, Void>, JvppReplyConsumer {
-
- public VniTableDumpExecutor(@Nonnull FutureJVppCore api) {
- super(api);
- }
-
- @Override
- public LispEidTableVniDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, Void params)
- throws ReadFailedException {
- return getReplyForRead(vppApi.lispEidTableVniDump(new LispEidTableVniDump()).toCompletableFuture(), identifier);
- }
-}
package io.fd.honeycomb.lisp.translate.read.dump.executor.params;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
import java.util.Arrays;
/**
- * Parameters for executing {@link MappingsDumpExecutor}
+ * Parameters for executing dump of mappings
*/
public final class MappingsDumpParams {
* limitations under the License.
*/
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
+package io.fd.honeycomb.lisp.translate.read.trait;
import static com.google.common.base.Preconditions.checkNotNull;
import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.vpp.jvpp.core.dto.LispLocatorDetailsReplyDump;
import io.fd.vpp.jvpp.core.dto.LispLocatorDump;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
/**
- * Executor for dumping of locators
+ * Provides common logic for reading of locators
*/
-public class LocatorDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispLocatorDetailsReplyDump, LocatorDumpParams>, JvppReplyConsumer {
-
-
- public LocatorDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
- super(vppApi);
- }
-
- @Override
- @Nonnull
- public LispLocatorDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
- final LocatorDumpParams params) throws
- ReadFailedException {
- checkNotNull(params, "Params for dump request not present");
-
- LispLocatorDump request = new LispLocatorDump();
- request.lsIndex = params.getLocatorSetIndex();
- //flag that lsIndex is set
- request.isIndexSet = (byte) 1;
-
- return getReplyForRead(vppApi.lispLocatorDump(request).toCompletableFuture(), identifier);
+public interface LocatorReader extends JvppReplyConsumer {
+
+ default EntityDumpExecutor<LispLocatorDetailsReplyDump, LocatorDumpParams> createLocatorDumpExecutor(
+ @Nonnull final FutureJVppCore vppApi) {
+ return (identifier, params) -> {
+ checkNotNull(params, "Params for dump request not present");
+ final LispLocatorDump request = new LispLocatorDump();
+ request.lsIndex = params.getLocatorSetIndex();
+ //flag that lsIndex is set
+ request.isIndexSet = (byte) 1;
+
+ return getReplyForRead(vppApi.lispLocatorDump(request).toCompletableFuture(), identifier);
+ };
}
}
* limitations under the License.
*/
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
+package io.fd.honeycomb.lisp.translate.read.trait;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
import io.fd.vpp.jvpp.core.dto.LispLocatorSetDump;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorSetsDumpExecutor extends AbstractJvppDumpExecutor
- implements EntityDumpExecutor<LispLocatorSetDetailsReplyDump, Void>, JvppReplyConsumer {
-
- public LocatorSetsDumpExecutor(@Nonnull FutureJVppCore api) {
- super(api);
- }
-
- @Override
- @Nonnull
- public LispLocatorSetDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final Void params)
- throws ReadFailedException {
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
- LispLocatorSetDump request = new LispLocatorSetDump();
- //only local
- request.filter = 1;
-
- return getReplyForRead(vppApi.lispLocatorSetDump(request).toCompletableFuture(), identifier);
+/**
+ * Provides common logic for reading {@link LocatorSet}
+ */
+public interface LocatorSetReader extends JvppReplyConsumer {
+
+ default EntityDumpExecutor<LispLocatorSetDetailsReplyDump, Void> createExecutor(
+ @Nonnull final FutureJVppCore vppApi) {
+ return (identifier, params) -> {
+ final LispLocatorSetDump request = new LispLocatorSetDump();
+ //only local
+ request.filter = 1;
+ return getReplyForRead(vppApi.lispLocatorSetDump(request).toCompletableFuture(), identifier);
+ };
}
}
package io.fd.honeycomb.lisp.translate.read.trait;
+import static com.google.common.base.Preconditions.checkNotNull;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV4;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV6;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.MAC;
+import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.function.Predicate;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
/**
* Trait providing predicates to filter mappings to respective subtables
*/
-public interface MappingFilterProvider {
+public interface MappingReader extends JvppReplyConsumer {
Predicate<LispEidTableDetails> BRIDGE_DOMAIN_MAPPINGS_ONLY =
(LispEidTableDetails detail) -> detail.eidType == MAC.getValue();
throw new IllegalArgumentException("Cannot determine mappings predicate for " + identifier);
}
}
+
+ default EntityDumpExecutor<LispEidTableDetailsReplyDump, MappingsDumpParams> createMappingDumpExecutor(
+ @Nonnull final FutureJVppCore vppApi) {
+ return (identifier, params) -> {
+ checkNotNull(params, "Params for dump request not present");
+
+ LispEidTableDump request = new LispEidTableDump();
+ request.eid = params.getEid();
+ request.eidSet = params.getEidSet();
+ request.eidType = params.getEidType();
+ request.prefixLength = params.getPrefixLength();
+ request.vni = params.getVni();
+ request.filter = params.getFilter();
+
+ return getReplyForRead(vppApi.lispEidTableDump(request).toCompletableFuture(), identifier);
+ };
+ }
}
package io.fd.honeycomb.lisp.translate.read.trait;
+import static com.google.common.base.Preconditions.checkNotNull;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.MapLevel.L2;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.MapLevel.L3;
import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.SubtableDumpParamsBuilder;
import io.fd.honeycomb.translate.ModificationCache;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
import org.opendaylight.yangtools.yang.binding.ChildOf;
/**
* Provides common logic for reading Eid subtables
*/
-public interface SubtableReader {
+public interface SubtableReader extends JvppReplyConsumer {
SubtableDumpParams L2_PARAMS = new SubtableDumpParamsBuilder().setL2(L2).build();
SubtableDumpParams L3_PARAMS = new SubtableDumpParamsBuilder().setL2(L3).build();
@Nonnull final SubtableDumpParams params) throws ReadFailedException {
return dumpManager.getDump(id, cacheKey, cache, params);
}
+
+ default EntityDumpExecutor<LispEidTableMapDetailsReplyDump, SubtableDumpParams> createExecutor(
+ @Nonnull final FutureJVppCore vppApi) {
+ return (identifier, params) -> {
+ final LispEidTableMapDump request = new LispEidTableMapDump();
+ request.isL2 = checkNotNull(params, "Cannot bind null params").isL2();
+ return getReplyForRead(vppApi.lispEidTableMapDump(request).toCompletableFuture(), identifier);
+ };
+ }
}
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorSetsDumpExecutor;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorSetReader;
import io.fd.honeycomb.translate.ModificationCache;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.write.ListWriterCustomizer;
import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
import io.fd.honeycomb.translate.vpp.util.NamingContext;
import io.fd.honeycomb.translate.write.WriteContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
*/
public class LocatorSetCustomizer extends FutureJVppCustomizer
implements ListWriterCustomizer<LocatorSet, LocatorSetKey>, ByteDataTranslator,
- JvppReplyConsumer {
+ LocatorSetReader {
private final NamingContext locatorSetContext;
private final DumpCacheManager<LispLocatorSetDetailsReplyDump, Void> dumpManager;
super(futureJvpp);
this.locatorSetContext = checkNotNull(locatorSetContext, "Locator set context cannot be null");
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorSetDetailsReplyDump, Void>()
- .withExecutor(new LocatorSetsDumpExecutor(futureJvpp))
+ .withExecutor(createExecutor(futureJvpp))
.build();
}
+++ /dev/null
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDetails;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorDumpExecutorTest extends JvppDumpExecutorTest<LocatorDumpExecutor> {
-
- @Captor
- private ArgumentCaptor<LispLocatorDump> requestCaptor;
-
- private InstanceIdentifier identifier;
- private LispLocatorDetailsReplyDump validDump;
-
- @Before
- public void init() {
- identifier = InstanceIdentifier.create(LocatorSet.class);
- validDump = new LispLocatorDetailsReplyDump();
- LispLocatorDetails detail = new LispLocatorDetails();
-
- detail.swIfIndex = 1;
- detail.priority = 2;
- detail.local = 1;
- detail.weight = 3;
- detail.isIpv6 = 0;
- detail.context = 8;
- detail.ipAddress = new byte[]{-64, -88, 4, 2};
-
- validDump.lispLocatorDetails = ImmutableList.of(detail);
- }
-
- @Test
- public void testExecuteDumpTimeout() throws Exception {
- doThrowTimeoutExceptionWhen().lispLocatorDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
- } catch (Exception e) {
- assertTrue(e instanceof ReadFailedException);
- assertTrue(e.getCause() instanceof TimeoutException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown exception");
- }
-
- @Test
- public void testExecuteDumpHalted() throws ReadFailedException {
- doThrowFailExceptionWhen().lispLocatorDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof VppCallbackException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDump() throws ReadFailedException {
- doReturnResponseWhen(validDump).lispLocatorDump(Mockito.any());
-
- final LocatorDumpParams params = new LocatorDumpParamsBuilder().setLocatorSetIndex(5).build();
-
- final LispLocatorDetailsReplyDump reply = getExecutor().executeDump(identifier, params);
- verify(api, times(1)).lispLocatorDump(requestCaptor.capture());
-
- final LispLocatorDump request = requestCaptor.getValue();
-
- //check passed params
- assertNotNull(request);
- assertEquals(5, request.lsIndex);
-
- //check result
- assertNotNull(reply);
- assertEquals(1, reply.lispLocatorDetails.size());
-
- final LispLocatorDetails details = reply.lispLocatorDetails.get(0);
- assertEquals(1, details.swIfIndex);
- assertEquals(2, details.priority);
- assertEquals(1, details.local);
- assertEquals(3, details.weight);
- assertEquals(0, details.isIpv6);
- assertEquals(8, details.context);
- assertArrayEquals(new byte[]{-64, -88, 4, 2}, details.ipAddress);
- }
-
- @Override
- protected LocatorDumpExecutor initExecutor() {
- return new LocatorDumpExecutor(api);
- }
-}
\ No newline at end of file
+++ /dev/null
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetails;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDump;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorSetsDumpExecutorTest extends JvppDumpExecutorTest<LocatorSetsDumpExecutor> {
-
- public static final byte[] LOCATOR_SET_NAME_BYTES = "loc-set".getBytes(StandardCharsets.UTF_8);
-
- private LispLocatorSetDetailsReplyDump validDump;
-
- @Captor
- private ArgumentCaptor<LispLocatorSetDump> requestCaptor;
-
- private InstanceIdentifier identifier;
-
- @Before
- public void init() {
- identifier = InstanceIdentifier.create(LocatorSet.class);
- validDump = new LispLocatorSetDetailsReplyDump();
- LispLocatorSetDetails detail = new LispLocatorSetDetails();
- detail.lsIndex = 2;
- detail.lsName = LOCATOR_SET_NAME_BYTES;
- detail.context = 4;
-
- validDump.lispLocatorSetDetails = ImmutableList.of(detail);
- }
-
- @Test
- public void testExecuteDumpTimeout() throws Exception {
- doThrowTimeoutExceptionWhen().lispLocatorSetDump(any());
- try {
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- } catch (Exception e) {
- assertTrue(e instanceof ReadFailedException);
- assertTrue(e.getCause() instanceof TimeoutException);
- return;
- }
- fail("Test should have thrown exception");
- }
-
- @Test(expected = ReadFailedException.class)
- public void testExecuteDumpHalted() throws ReadFailedException {
- doThrowFailExceptionWhen().lispLocatorSetDump(any());
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- }
-
- @Test
- public void testExecuteDump() throws ReadFailedException {
- doReturnResponseWhen(validDump).lispLocatorSetDump(any());
-
- final LispLocatorSetDetailsReplyDump replyDump =
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- verify(api, times(1)).lispLocatorSetDump(requestCaptor.capture());
-
- final LispLocatorSetDump request = requestCaptor.getValue();
-
- assertNotNull(request);
- assertEquals(1, request.filter);
-
- assertNotNull(replyDump);
- assertNotNull(replyDump.lispLocatorSetDetails);
- assertEquals(1, replyDump.lispLocatorSetDetails.size());
- final LispLocatorSetDetails detail = replyDump.lispLocatorSetDetails.get(0);
-
- assertNotNull(detail);
- assertEquals(4, detail.context);
- assertEquals(2, detail.lsIndex);
- assertEquals(LOCATOR_SET_NAME_BYTES, detail.lsName);
- }
-
- @Override
- protected LocatorSetsDumpExecutor initExecutor() {
- return new LocatorSetsDumpExecutor(api);
- }
-}
\ No newline at end of file
+++ /dev/null
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetails;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.map.resolvers.grouping.map.resolvers.MapResolver;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class MapResolversDumpExecutorTest extends JvppDumpExecutorTest<MapResolversDumpExecutor> {
-
- private LispMapResolverDetailsReplyDump validDump;
-
- private InstanceIdentifier identifier;
-
- @Before
- public void init() {
- identifier = InstanceIdentifier.create(MapResolver.class);
- validDump = new LispMapResolverDetailsReplyDump();
- final LispMapResolverDetails details = new LispMapResolverDetails();
- details.isIpv6 = 0;
- details.ipAddress = new byte[]{-64, -88, 5, 4};
- details.context = 7;
-
- validDump.lispMapResolverDetails = ImmutableList.of(details);
- }
-
- @Test
- public void testExecuteDumpTimeout() throws Exception {
- doThrowTimeoutExceptionWhen().lispMapResolverDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof TimeoutException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDumpHalted() throws ReadFailedException {
- doThrowFailExceptionWhen().lispMapResolverDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof VppCallbackException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDump() throws ReadFailedException {
- doReturnResponseWhen(validDump).lispMapResolverDump(Mockito.any());
- final LispMapResolverDetailsReplyDump reply =
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-
- assertNotNull(reply);
- assertEquals(1, reply.lispMapResolverDetails.size());
-
- final LispMapResolverDetails detail = reply.lispMapResolverDetails.get(0);
- assertEquals(7, detail.context);
- assertEquals(0, detail.isIpv6);
- assertArrayEquals(new byte[]{-64, -88, 5, 4}, detail.ipAddress);
- }
-
- @Override
- protected MapResolversDumpExecutor initExecutor() {
- return new MapResolversDumpExecutor(api);
- }
-}
\ No newline at end of file
+++ /dev/null
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.FilterType;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.MappingsDumpParamsBuilder;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.QuantityType;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class MappingsDumpExecutorTest extends JvppDumpExecutorTest<MappingsDumpExecutor> {
-
- private static final byte[] EID = {-64, -88, 2, 1};
-
- @Captor
- private ArgumentCaptor<LispEidTableDump> requestCaptor;
-
- private InstanceIdentifier identifier;
-
- private LispEidTableDetailsReplyDump validDump;
- private MappingsDumpParams emptyParams;
- private MappingsDumpParams validParams;
-
- @Before
- public void init() {
- identifier = InstanceIdentifier.create(LocalMapping.class);
- validDump = new LispEidTableDetailsReplyDump();
-
- LispEidTableDetails detail = new LispEidTableDetails();
- detail.action = 0;
- detail.authoritative = 1;
- detail.context = 4;
- detail.eid = new byte[]{-64, -88, 2, 1};
- detail.eidPrefixLen = 32;
- detail.isLocal = 1;
- detail.locatorSetIndex = 2;
- detail.ttl = 7;
- detail.vni = 2;
-
- validDump.lispEidTableDetails = ImmutableList.of(detail);
-
- emptyParams = MappingsDumpParamsBuilder.newInstance().build();
- validParams =
- MappingsDumpParamsBuilder.newInstance().setVni(2).setPrefixLength((byte) 32).setEidSet(QuantityType.ALL)
- .setEid(EID)
- .setEidType(EidType.IPV4).setFilter(FilterType.LOCAL).build();
- }
-
- @Test
- public void testExecuteDumpTimeout() throws Exception {
- doThrowTimeoutExceptionWhen().lispEidTableDump(any());
- try {
- getExecutor().executeDump(identifier, emptyParams);
- } catch (Exception e) {
- assertTrue(e instanceof ReadFailedException);
- assertTrue(e.getCause() instanceof TimeoutException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown exception");
- }
-
- @Test
- public void testExecuteDumpHalted() throws Exception {
- doThrowFailExceptionWhen().lispEidTableDump(any());
- try {
- getExecutor().executeDump(identifier, emptyParams);
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof VppCallbackException);
- assertEquals(identifier, ((ReadFailedException) e).getFailedId());
- return;
- }
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDump() throws ReadFailedException {
- doReturnResponseWhen(validDump).lispEidTableDump(any());
- final LispEidTableDetailsReplyDump reply = getExecutor().executeDump(identifier, validParams);
- verify(api, times(1)).lispEidTableDump(requestCaptor.capture());
-
- final LispEidTableDump request = requestCaptor.getValue();
- assertNotNull(request);
- assertEquals(2, request.vni);
- assertEquals(QuantityType.ALL.getValue(), request.eidSet);
- assertArrayEquals(EID, request.eid);
- assertEquals(EidType.IPV4.getValue(), request.eidType);
- assertEquals(FilterType.LOCAL.getValue(), request.filter);
- assertEquals(32, request.prefixLength);
-
- assertNotNull(reply);
- assertEquals(1, reply.lispEidTableDetails.size());
-
- final LispEidTableDetails detail = reply.lispEidTableDetails.get(0);
-
- assertNotNull(detail);
- assertEquals(0, detail.action);
- assertEquals(1, detail.authoritative);
- assertEquals(4, detail.context);
- assertArrayEquals(EID, detail.eid);
- assertEquals(32, detail.eidPrefixLen);
- assertEquals(1, detail.isLocal);
- assertEquals(2, detail.locatorSetIndex);
- assertEquals(7, detail.ttl);
- assertEquals(2, detail.vni);
- }
-
- @Override
- protected MappingsDumpExecutor initExecutor() {
- return new MappingsDumpExecutor(api);
- }
-}
\ No newline at end of file
+++ /dev/null
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class VniTableDumpExecutorTest extends JvppDumpExecutorTest<VniTableDumpExecutor> {
-
- private LispEidTableVniDetailsReplyDump validDump;
- private InstanceIdentifier<VniTable> identifier;
-
- @Before
- public void init() {
- validDump = new LispEidTableVniDetailsReplyDump();
- identifier = InstanceIdentifier.create(VniTable.class);
- LispEidTableVniDetails detail = new LispEidTableVniDetails();
- detail.vni = 2;
- detail.context = 4;
- validDump.lispEidTableVniDetails = ImmutableList.of(detail);
- }
-
- @Test
- public void testExecuteDumpFail() throws Exception {
- doThrowFailExceptionWhen().lispEidTableVniDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof VppCallbackException);
- return;
- }
-
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDumpTimeout() throws Exception {
- doThrowTimeoutExceptionWhen().lispEidTableVniDump(Mockito.any());
- try {
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
- } catch (ReadFailedException e) {
- assertTrue(e.getCause() instanceof TimeoutException);
- return;
- }
- fail("Test should have thrown ReadFailedException");
- }
-
- @Test
- public void testExecuteDump() throws Exception {
-
- doReturnResponseWhen(validDump).lispEidTableVniDump(Mockito.any());
- final LispEidTableVniDetailsReplyDump reply =
- getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-
- assertNotNull(reply);
- assertEquals(1, reply.lispEidTableVniDetails.size());
- final LispEidTableVniDetails detail = reply.lispEidTableVniDetails.get(0);
-
- assertEquals(4, detail.context);
- assertEquals(2, detail.vni);
- }
-
- @Override
- protected VniTableDumpExecutor initExecutor() {
- return new VniTableDumpExecutor(api);
- }
-}
\ No newline at end of file
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-public class MappingFilterProviderTest implements MappingFilterProvider {
+public class MappingReaderTest implements MappingReader {
private InstanceIdentifier<LocalMapping> validVrfLocal;
private InstanceIdentifier<LocalMapping> validBdLocal;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.AddressDumpExecutor;
import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
import io.fd.honeycomb.translate.vpp.util.NamingContext;
super(futureJVppCore);
this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<IpAddressDetailsReplyDump, AddressDumpParams>()
- .withExecutor(new AddressDumpExecutor(futureJVppCore))
+ .withExecutor(createExecutor(futureJVppCore))
.build();
}
import com.google.common.base.Optional;
import io.fd.honeycomb.translate.util.RWUtils;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
import io.fd.honeycomb.translate.vpp.util.Ipv4Translator;
import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.IpAddressDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
return Optional.absent();
}
+ default EntityDumpExecutor<IpAddressDetailsReplyDump, AddressDumpParams> createExecutor(
+ @Nonnull final FutureJVppCore vppApi) {
+ return (identifier, params) -> {
+ checkNotNull(params, "Address dump params cannot be null");
+
+ final IpAddressDump dumpRequest = new IpAddressDump();
+ dumpRequest.isIpv6 = booleanToByte(params.isIpv6());
+ dumpRequest.swIfIndex = params.getInterfaceIndex();
+
+ return getReplyForRead(vppApi.ipAddressDump(dumpRequest).toCompletableFuture(), identifier);
+ };
+ }
}
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.AddressDumpExecutor;
import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
import io.fd.honeycomb.translate.vpp.util.NamingContext;
super(futureJVppCore);
this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<IpAddressDetailsReplyDump, AddressDumpParams>()
- .withExecutor(new AddressDumpExecutor(futureJVppCore))
+ .withExecutor(createExecutor(futureJVppCore))
.build();
}
+++ /dev/null
-package io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
-import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.IpAddressDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.IpAddressDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class AddressDumpExecutor
- implements EntityDumpExecutor<IpAddressDetailsReplyDump, AddressDumpParams>, ByteDataTranslator,
- JvppReplyConsumer {
-
- private FutureJVppCore vppApi;
-
- public AddressDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
- this.vppApi = checkNotNull(vppApi, "Vpp api refference cannot be null");
- }
-
- @Override
- @Nonnull
- public IpAddressDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final AddressDumpParams params)
- throws ReadFailedException {
- checkNotNull(params, "Address dump params cannot be null");
-
- IpAddressDump dumpRequest = new IpAddressDump();
- dumpRequest.isIpv6 = booleanToByte(params.isIpv6());
- dumpRequest.swIfIndex = params.getInterfaceIndex();
-
- return getReplyForRead(vppApi.ipAddressDump(dumpRequest).toCompletableFuture(), identifier);
- }
-}