4a1e71fe9db9e166a8de72e6e71a92666aaa23fd
[lispflowmapping.git] / mappingservice / dsbackend / src / test / java / org / opendaylight / lispflowmapping / dsbackend / DataStoreBackEndTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.lispflowmapping.dsbackend;
9
10 import static org.junit.Assert.assertEquals;
11
12 import com.google.common.util.concurrent.FluentFuture;
13 import java.util.ArrayList;
14 import java.util.LinkedHashMap;
15 import java.util.Map;
16 import java.util.Optional;
17 import javax.xml.bind.DatatypeConverter;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.junit.runner.RunWith;
21 import org.mockito.ArgumentCaptor;
22 import org.mockito.Captor;
23 import org.mockito.Mock;
24 import org.mockito.Mockito;
25 import org.mockito.junit.MockitoJUnitRunner;
26 import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier;
27 import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
28 import org.opendaylight.mdsal.binding.api.DataBroker;
29 import org.opendaylight.mdsal.binding.api.ReadTransaction;
30 import org.opendaylight.mdsal.binding.api.Transaction;
31 import org.opendaylight.mdsal.binding.api.TransactionChain;
32 import org.opendaylight.mdsal.binding.api.WriteTransaction;
33 import org.opendaylight.mdsal.common.api.CommitInfo;
34 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.container.MappingRecordBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkeyBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.VniUri;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.XtrIdUri;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyKey;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingKey;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.mapping.XtrIdMapping;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.mapping.XtrIdMappingBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.mapping.XtrIdMappingKey;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifierBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifierKey;
57 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
58 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
59 import org.opendaylight.yangtools.yang.common.Uint16;
60 import org.powermock.api.mockito.PowerMockito;
61 import org.powermock.core.classloader.annotations.PowerMockIgnore;
62 import org.powermock.core.classloader.annotations.PrepareForTest;
63 import org.powermock.modules.junit4.PowerMockRunner;
64 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
65 import org.slf4j.Logger;
66 import org.slf4j.LoggerFactory;
67
68 @RunWith(PowerMockRunner.class)
69 @PowerMockRunnerDelegate(MockitoJUnitRunner.class)
70 @PowerMockIgnore({"javax.xml.datatype.*"}) // for Java 9+ compatibility, see https://github.com/powermock/powermock/issues/864
71 @PrepareForTest({LoggerFactory.class})
72 public class DataStoreBackEndTest {
73
74     @Captor private static ArgumentCaptor<InstanceIdentifier<AuthenticationKey>> iidCaptorAuthKey;
75     @Captor private static ArgumentCaptor<InstanceIdentifier<Mapping>> iidCaptorMapping;
76     @Captor private static ArgumentCaptor<InstanceIdentifier<XtrIdMapping>> iidCaptorXtrIdMapping;
77     @Mock private static TransactionChain txChainMock;
78     @Mock private static WriteTransaction wTxMock;
79     private static DataStoreBackEnd dataStoreBackEnd;
80
81     private static final String IPV4_STRING_1 = "1.2.3.0";
82     private static final String IPV4_STRING_2 = "1.2.4.0";
83     private static final String IPV4_STRING_3 = "1.2.5.0";
84     private static final String IPV4_STRING_4 = "1.2.6.0";
85     private static final String DUMMY_URI = "dummy/uri";
86     private static final Eid EID_IPV4_1 = LispAddressUtil.asIpv4Eid(IPV4_STRING_1);
87     private static final Eid EID_IPV4_2 = LispAddressUtil.asIpv4Eid(IPV4_STRING_2);
88     private static final Eid EID_IPV4_3 = LispAddressUtil.asIpv4Eid(IPV4_STRING_3);
89     private static final Eid EID_IPV4_4 = LispAddressUtil.asIpv4Eid(IPV4_STRING_4);
90     private static final byte[] XTR_ID = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
91     private static final InstanceIdentifier<MappingDatabase> DATABASE_ROOT =
92             InstanceIdentifier.create(MappingDatabase.class);
93
94     @Before
95     public void init() {
96         final DataBroker brokerMock = Mockito.mock(DataBroker.class);
97         final Logger logMock = Mockito.mock(Logger.class, "LOG");
98
99         PowerMockito.mockStatic(LoggerFactory.class);
100         PowerMockito.when(LoggerFactory.getLogger(DataStoreBackEnd.class))
101                 .thenReturn(logMock);
102         Mockito.when(logMock.isDebugEnabled()).thenReturn(true);
103         Mockito.when(brokerMock.createMergingTransactionChain(Mockito.any(DataStoreBackEnd.class)))
104                 .thenReturn(txChainMock);
105         dataStoreBackEnd = PowerMockito.spy(new DataStoreBackEnd(brokerMock));
106
107         Mockito.when(txChainMock.newWriteOnlyTransaction()).thenReturn(wTxMock);
108         Mockito.doReturn(CommitInfo.emptyFluentFuture()).when(wTxMock).commit();
109     }
110
111     /**
112      * Tests {@link DataStoreBackEnd#addAuthenticationKey} method.
113      */
114     @Test
115     public void addAuthenticationKeyTest() {
116         final AuthenticationKey authenticationKey = getDefaultAuthenticationKeyBuilder().build();
117
118         dataStoreBackEnd.addAuthenticationKey(authenticationKey);
119         Mockito.verify(wTxMock).mergeParentStructurePut(Mockito.eq(LogicalDatastoreType.CONFIGURATION),
120                 iidCaptorAuthKey.capture(), Mockito.eq(authenticationKey));
121
122         // result
123         AuthenticationKeyKey result = iidCaptorAuthKey.getValue().firstKeyOf(AuthenticationKey.class);
124         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
125     }
126
127     /**
128      * Tests {@link DataStoreBackEnd#addMapping} method.
129      */
130     @Test
131     public void addMappingTest() {
132         final Mapping mapping = new MappingBuilder()
133                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_1)),
134                         MappingOrigin.Northbound))
135                 .setMappingRecord(getDefaultMappingRecordBuilder().build())
136                 .setOrigin(MappingOrigin.Northbound).build();
137
138         dataStoreBackEnd.addMapping(mapping);
139         Mockito.verify(wTxMock).mergeParentStructurePut(Mockito.eq(LogicalDatastoreType.CONFIGURATION),
140                 iidCaptorMapping.capture(), Mockito.eq(mapping));
141
142         // result
143         MappingKey result = iidCaptorMapping.getValue().firstKeyOf(Mapping.class);
144         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
145         assertEquals(MappingOrigin.Northbound, result.getOrigin());
146     }
147
148     /**
149      * Tests {@link DataStoreBackEnd#addXtrIdMapping} method.
150      */
151     @Test
152     public void addXtrIdMappingTest() {
153         XtrIdMapping xtrIdMapping = new XtrIdMappingBuilder()
154                 .setXtrIdUri(new XtrIdUri(DUMMY_URI))
155                 .setMappingRecord(getDefaultMappingRecordBuilder().build()).build();
156
157         dataStoreBackEnd.addXtrIdMapping(xtrIdMapping);
158         Mockito.verify(wTxMock).mergeParentStructurePut(Mockito.eq(LogicalDatastoreType.OPERATIONAL),
159                 iidCaptorXtrIdMapping.capture(), Mockito.eq(xtrIdMapping));
160
161         // result
162         XtrIdMappingKey xtrIdResult = iidCaptorXtrIdMapping.getValue().firstKeyOf(XtrIdMapping.class);
163         MappingKey mappingResult = iidCaptorXtrIdMapping.getValue().firstKeyOf(Mapping.class);
164
165         assertEquals(DatatypeConverter.printHexBinary(XTR_ID), xtrIdResult.getXtrIdUri().getValue());
166         assertEquals(MappingOrigin.Southbound, mappingResult.getOrigin());
167         assertEquals("ipv4:" + IPV4_STRING_1, mappingResult.getEidUri().getValue());
168     }
169
170     /**
171      * Tests {@link DataStoreBackEnd#removeAuthenticationKey} method.
172      */
173     @Test
174     public void removeAuthenticationKeyTest() {
175         final AuthenticationKey authenticationKey = getDefaultAuthenticationKeyBuilder().build();
176
177         dataStoreBackEnd.removeAuthenticationKey(authenticationKey);
178         Mockito.verify(wTxMock).delete(Mockito.eq(LogicalDatastoreType.CONFIGURATION), iidCaptorAuthKey.capture());
179
180         // result
181         AuthenticationKeyKey result = iidCaptorAuthKey.getValue().firstKeyOf(AuthenticationKey.class);
182         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
183     }
184
185     /**
186      * Tests {@link DataStoreBackEnd#removeMapping} method.
187      */
188     @Test
189     public void removeMapping() {
190         final Mapping mapping = new MappingBuilder()
191                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_1)),
192                         MappingOrigin.Northbound))
193                 .setMappingRecord(getDefaultMappingRecordBuilder().build())
194                 .setOrigin(MappingOrigin.Northbound).build();
195
196         dataStoreBackEnd.removeMapping(mapping);
197         Mockito.verify(wTxMock).delete(Mockito.eq(LogicalDatastoreType.CONFIGURATION), iidCaptorMapping.capture());
198
199         // result
200         MappingKey result = iidCaptorMapping.getValue().firstKeyOf(Mapping.class);
201         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
202         assertEquals(MappingOrigin.Northbound, result.getOrigin());
203     }
204
205     /**
206      * Tests {@link DataStoreBackEnd#addXtrIdMapping} method.
207      */
208     @Test
209     public void removeXtrIdMappingTest() {
210         XtrIdMapping xtrIdMapping = new XtrIdMappingBuilder()
211                 .setXtrIdUri(new XtrIdUri(DUMMY_URI))
212                 .setMappingRecord(getDefaultMappingRecordBuilder().build()).build();
213
214         dataStoreBackEnd.removeXtrIdMapping(xtrIdMapping);
215         Mockito.verify(wTxMock).delete(Mockito.eq(LogicalDatastoreType.OPERATIONAL), iidCaptorXtrIdMapping.capture());
216
217         // result
218         XtrIdMappingKey xtrIdResult = iidCaptorXtrIdMapping.getValue().firstKeyOf(XtrIdMapping.class);
219         MappingKey mappingResult = iidCaptorXtrIdMapping.getValue().firstKeyOf(Mapping.class);
220
221         assertEquals(DatatypeConverter.printHexBinary(XTR_ID), xtrIdResult.getXtrIdUri().getValue());
222         assertEquals(MappingOrigin.Southbound, mappingResult.getOrigin());
223         assertEquals("ipv4:" + IPV4_STRING_1, mappingResult.getEidUri().getValue());
224     }
225
226     /**
227      * Tests {@link DataStoreBackEnd#updateAuthenticationKey} method.
228      */
229     @Test
230     public void updateAuthenticationKeyTest() {
231         final AuthenticationKey authenticationKey = getDefaultAuthenticationKeyBuilder().build();
232
233         dataStoreBackEnd.updateAuthenticationKey(authenticationKey);
234         Mockito.verify(wTxMock).mergeParentStructurePut(Mockito.eq(LogicalDatastoreType.CONFIGURATION),
235                 iidCaptorAuthKey.capture(), Mockito.eq(authenticationKey));
236
237         // result
238         AuthenticationKeyKey result = iidCaptorAuthKey.getValue().firstKeyOf(AuthenticationKey.class);
239         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
240     }
241
242     /**
243      * Tests {@link DataStoreBackEnd#updateMapping} method.
244      */
245     @Test
246     public void updateMappingTest() {
247         final Mapping mapping = new MappingBuilder()
248                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_1)),
249                         MappingOrigin.Northbound))
250                 .setMappingRecord(getDefaultMappingRecordBuilder().build())
251                 .setOrigin(MappingOrigin.Northbound).build();
252
253         dataStoreBackEnd.updateMapping(mapping);
254         Mockito.verify(wTxMock).mergeParentStructurePut(Mockito.eq(LogicalDatastoreType.CONFIGURATION),
255                 iidCaptorMapping.capture(), Mockito.eq(mapping));
256
257         // result
258         MappingKey result = iidCaptorMapping.getValue().firstKeyOf(Mapping.class);
259         assertEquals("ipv4:" + IPV4_STRING_1, result.getEidUri().getValue());
260         assertEquals(MappingOrigin.Northbound, result.getOrigin());
261     }
262
263     /**
264      * Tests {@link DataStoreBackEnd#getAllMappings} method.
265      */
266     @Test
267     public void getAllMappingsTest() {
268         final ReadTransaction rTxMock = Mockito.mock(ReadTransaction.class);
269         final FluentFuture<Optional<MappingDatabase>> readFutureMock = FluentFutures.immediateFluentFuture(
270             Optional.of(getDefaultMappingDatabase().build()));
271
272         Mockito.when(txChainMock.newReadOnlyTransaction()).thenReturn(rTxMock);
273         Mockito.when(rTxMock.read(LogicalDatastoreType.CONFIGURATION, DATABASE_ROOT)).thenReturn(readFutureMock);
274         Mockito.when(rTxMock.read(LogicalDatastoreType.OPERATIONAL, DATABASE_ROOT)).thenReturn(readFutureMock);
275
276         assertEquals(8, dataStoreBackEnd.getAllMappings().size());
277     }
278
279     /**
280      * Tests {@link DataStoreBackEnd#getAllAuthenticationKeys} method.
281      */
282     @Test
283     public void getAllAuthenticationKeysTest() {
284         final ReadTransaction rTxMock = Mockito.mock(ReadTransaction.class);
285         final FluentFuture<Optional<MappingDatabase>> readFutureMock = FluentFutures.immediateFluentFuture(
286             Optional.of(getDefaultMappingDatabase().build()));
287
288         Mockito.when(txChainMock.newReadOnlyTransaction()).thenReturn(rTxMock);
289         Mockito.when(rTxMock.read(LogicalDatastoreType.CONFIGURATION, DATABASE_ROOT)).thenReturn(readFutureMock);
290
291         assertEquals(4, dataStoreBackEnd.getAllAuthenticationKeys().size());
292     }
293
294     /**
295      * Tests {@link DataStoreBackEnd#removeAllDatastoreContent} method.
296      */
297     @Test
298     public void removeAllDatastoreContentTest() {
299         dataStoreBackEnd.removeAllDatastoreContent();
300         Mockito.verify(wTxMock).delete(LogicalDatastoreType.CONFIGURATION, DATABASE_ROOT);
301         Mockito.verify(wTxMock).delete(LogicalDatastoreType.OPERATIONAL, DATABASE_ROOT);
302     }
303
304     /**
305      * Increases {@link DataStoreBackEnd} code coverage.
306      */
307     @Test
308     public void onTransactionChainFailedTest() {
309         Transaction asyncTransactionMock = Mockito.mock(Transaction.class);
310         Mockito.when(asyncTransactionMock.getIdentifier()).thenReturn(new Object());
311         dataStoreBackEnd.onTransactionChainFailed(Mockito.mock(TransactionChain.class), asyncTransactionMock,
312                 Mockito.mock(Throwable.class));
313     }
314
315     /**
316      * Increases {@link DataStoreBackEnd} code coverage.
317      */
318     @Test
319     public void onTransactionChainSuccessfulTest() {
320         dataStoreBackEnd.onTransactionChainSuccessful(Mockito.mock(TransactionChain.class));
321     }
322
323     private static MappingRecordBuilder getDefaultMappingRecordBuilder() {
324         return new MappingRecordBuilder()
325                 .setEid(EID_IPV4_1)
326                 .setLocatorRecord(new ArrayList<>())
327                 .setXtrId(new XtrId(XTR_ID));
328     }
329
330     private static AuthenticationKeyBuilder getDefaultAuthenticationKeyBuilder() {
331         return new AuthenticationKeyBuilder()
332                 .withKey(new AuthenticationKeyKey(new EidUri(DUMMY_URI)))
333                 .setEid(EID_IPV4_1)
334                 .setMappingAuthkey(new MappingAuthkeyBuilder().setKeyString("password").setKeyType(Uint16.valueOf(0))
335                 .build());
336     }
337
338     private static MappingDatabaseBuilder getDefaultMappingDatabase() {
339         final Mapping mapping_1 = new MappingBuilder()
340                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_1)),
341                         MappingOrigin.Northbound))
342                 .setMappingRecord(getDefaultMappingRecordBuilder().build()).build();
343         final Mapping mapping_2 = new MappingBuilder()
344                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_2)),
345                         MappingOrigin.Northbound))
346                 .setMappingRecord(getDefaultMappingRecordBuilder().setEid(EID_IPV4_2).build()).build();
347         final Mapping mapping_3 = new MappingBuilder()
348                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_3)),
349                         MappingOrigin.Northbound))
350                 .setMappingRecord(getDefaultMappingRecordBuilder().setEid(EID_IPV4_3).build()).build();
351         final Mapping mapping_4 = new MappingBuilder()
352                 .withKey(new MappingKey(new EidUri(LispAddressStringifier.getURIString(EID_IPV4_4)),
353                         MappingOrigin.Northbound))
354                 .setMappingRecord(getDefaultMappingRecordBuilder().setEid(EID_IPV4_4).build()).build();
355
356         final Map<MappingKey, Mapping> mappingEntries_1 = new LinkedHashMap<>();
357         mappingEntries_1.put(new MappingKey(new EidUri("uri-1"), MappingOrigin.Northbound), mapping_1);
358         mappingEntries_1.put(new MappingKey(new EidUri("uri-2"), MappingOrigin.Northbound), mapping_2);
359         final Map<MappingKey, Mapping> mappingEntries_2 = new LinkedHashMap<>();
360         mappingEntries_2.put(new MappingKey(new EidUri("uri-3"), MappingOrigin.Northbound), mapping_3);
361         mappingEntries_2.put(new MappingKey(new EidUri("uri-4"), MappingOrigin.Northbound), mapping_4);
362
363         final AuthenticationKey authenticationKey_1 = new AuthenticationKeyBuilder()
364                 .withKey(new AuthenticationKeyKey(new EidUri("uri-1"))).build();
365         final AuthenticationKey authenticationKey_2 = new AuthenticationKeyBuilder()
366                 .withKey(new AuthenticationKeyKey(new EidUri("uri-2"))).build();
367         final AuthenticationKey authenticationKey_3 = new AuthenticationKeyBuilder()
368                 .withKey(new AuthenticationKeyKey(new EidUri("uri-3"))).build();
369         final AuthenticationKey authenticationKey_4 = new AuthenticationKeyBuilder()
370                 .withKey(new AuthenticationKeyKey(new EidUri("uri-4"))).build();
371
372         final Map<AuthenticationKeyKey, AuthenticationKey> authKey_1 = new LinkedHashMap<>();
373         authKey_1.put(new AuthenticationKeyKey(new EidUri("uri-1")), authenticationKey_1);
374         authKey_1.put(new AuthenticationKeyKey(new EidUri("uri-2")), authenticationKey_2);
375         final Map<AuthenticationKeyKey, AuthenticationKey> authKey_2 = new LinkedHashMap<>();
376         authKey_2.put(new AuthenticationKeyKey(new EidUri("uri-3")), authenticationKey_3);
377         authKey_2.put(new AuthenticationKeyKey(new EidUri("uri-4")), authenticationKey_4);
378
379         final VirtualNetworkIdentifier vni_1 = new VirtualNetworkIdentifierBuilder()
380                 .setVni(new VniUri("vni/uri/1"))
381                 .setMapping(mappingEntries_1)
382                 .setAuthenticationKey(authKey_1).build();
383         final VirtualNetworkIdentifier vni_2 = new VirtualNetworkIdentifierBuilder()
384                 .setVni(new VniUri("vni/uri/2"))
385                 .setMapping(mappingEntries_2)
386                 .setAuthenticationKey(authKey_2).build();
387
388         final Map<VirtualNetworkIdentifierKey, VirtualNetworkIdentifier> vniEntries = new LinkedHashMap<>();
389         vniEntries.put(new VirtualNetworkIdentifierKey(new VniUri("vni/uri/1")), vni_1);
390         vniEntries.put(new VirtualNetworkIdentifierKey(new VniUri("vni/uri/2")), vni_2);
391
392         return new MappingDatabaseBuilder().setVirtualNetworkIdentifier(vniEntries);
393     }
394 }