+ @Test
+ public void test_CreateLocationForAddrEndpoint_EndpointWriteFirst() throws Exception {
+ AddressEndpoint endpoint =
+ createAddressEndpoint(IPv4_HOST_ADDRESS_1, IpPrefixType.class, L3_CONTEXT_ID, L3Context.class);
+ InstanceIdentifier<AddressEndpoint> iid = IidFactory.addressEndpointIid(endpoint.getKey());
+ WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.OPERATIONAL, iid, endpoint, true);
+ wtx.submit().get();
+
+ NetworkElements nes = createNetworkElements(NODE_ID_1, CONNECTOR_ID_1, L3_CONTEXT_ID, IPv4_NETWORK_ADDRESS_1);
+ InstanceIdentifier<NetworkElements> neIid = InstanceIdentifier.builder(NetworkElements.class).build();
+ wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.CONFIGURATION, neIid, nes);
+ wtx.submit().get();
+
+ ReadOnlyTransaction rtx = dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<LocationProviders> locationIid = InstanceIdentifier.builder(LocationProviders.class).build();
+ CheckedFuture<Optional<LocationProviders>, ReadFailedException> read =
+ rtx.read(LogicalDatastoreType.OPERATIONAL, locationIid);
+ assertTrue(read.get().isPresent());
+ rtx.close();
+ LocationProviders locations = read.get().get();
+ LocationProviders locationReference =
+ new LocationProvidersBuilder()
+ .setLocationProvider(Collections.singletonList(new LocationProviderBuilder()
+ .setProvider(new ProviderName(NeLocationProvider.NE_LOCATION_PROVIDER_NAME))
+ .setProviderAddressEndpointLocation(Collections.singletonList(
+ new ProviderAddressEndpointLocationBuilder()
+ .setAddress(IPv4_HOST_ADDRESS_1)
+ .setAddressType(IpPrefixType.class)
+ .setContextId(new ContextId(L3_CONTEXT_ID))
+ .setContextType(L3Context.class)
+ .setAbsoluteLocation(new AbsoluteLocationBuilder()
+ .setLocationType(new ExternalLocationCaseBuilder()
+ .setExternalNodeMountPoint(createNetworkElementIid(NODE_ID_1))
+ .setExternalNodeConnector(createInterfaceIid(
+ NODE_ID_1, CONNECTOR_ID_1).toString())
+ .build())
+ .build())
+ .build()))
+ .build()))
+ .build();
+ assertEquals(locationReference, locations);
+ }
+
+ @Test
+ public void test_CreateLocationForAddrEndpoint_NEWriteFirst() throws Exception {
+ NetworkElements nes = createNetworkElements(NODE_ID_1, CONNECTOR_ID_1, L3_CONTEXT_ID, IPv4_NETWORK_ADDRESS_1);
+ InstanceIdentifier<NetworkElements> neIid = InstanceIdentifier.builder(NetworkElements.class).build();
+ WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.CONFIGURATION, neIid, nes);
+
+ AddressEndpoint endpoint =
+ createAddressEndpoint(IPv4_HOST_ADDRESS_1, IpPrefixType.class, L3_CONTEXT_ID, L3Context.class);
+ InstanceIdentifier<AddressEndpoint> iid = IidFactory.addressEndpointIid(endpoint.getKey());
+ wtx.put(LogicalDatastoreType.OPERATIONAL, iid, endpoint, true);
+ wtx.submit().get();
+
+ ReadOnlyTransaction rtx = dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<LocationProviders> locationIid = InstanceIdentifier.builder(LocationProviders.class).build();
+ CheckedFuture<Optional<LocationProviders>, ReadFailedException> read =
+ rtx.read(LogicalDatastoreType.OPERATIONAL, locationIid);
+ assertTrue(read.get().isPresent());
+ rtx.close();
+ LocationProviders locations = read.get().get();
+ LocationProviders locationReference =
+ new LocationProvidersBuilder()
+ .setLocationProvider(Collections.singletonList(new LocationProviderBuilder()
+ .setProvider(new ProviderName(NeLocationProvider.NE_LOCATION_PROVIDER_NAME))
+ .setProviderAddressEndpointLocation(Collections.singletonList(
+ new ProviderAddressEndpointLocationBuilder()
+ .setAddress(IPv4_HOST_ADDRESS_1)
+ .setAddressType(IpPrefixType.class)
+ .setContextId(new ContextId(L3_CONTEXT_ID))
+ .setContextType(L3Context.class)
+ .setAbsoluteLocation(new AbsoluteLocationBuilder()
+ .setLocationType(new ExternalLocationCaseBuilder()
+ .setExternalNodeMountPoint(createNetworkElementIid(NODE_ID_1))
+ .setExternalNodeConnector(createInterfaceIid(
+ NODE_ID_1, CONNECTOR_ID_1).toString())
+ .build())
+ .build())
+ .build()))
+ .build()))
+ .build();
+ assertEquals(locationReference, locations);
+ }
+
+ @Test
+ public void test_CreateLocationForAddrEndpoint_SimultaneousWrite() throws Exception {
+ NetworkElements nes = createNetworkElements(NODE_ID_1, CONNECTOR_ID_1, L3_CONTEXT_ID, IPv4_NETWORK_ADDRESS_1);
+ InstanceIdentifier<NetworkElements> neIid = InstanceIdentifier.builder(NetworkElements.class).build();
+ WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.CONFIGURATION, neIid, nes);
+ wtx.submit().get();
+
+ AddressEndpoint endpoint =
+ createAddressEndpoint(IPv4_HOST_ADDRESS_1, IpPrefixType.class, L3_CONTEXT_ID, L3Context.class);
+ InstanceIdentifier<AddressEndpoint> iid = IidFactory.addressEndpointIid(endpoint.getKey());
+ wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.OPERATIONAL, iid, endpoint, true);
+ wtx.submit().get();
+
+ ReadOnlyTransaction rtx = dataBroker.newReadOnlyTransaction();
+ InstanceIdentifier<LocationProviders> locationIid = InstanceIdentifier.builder(LocationProviders.class).build();
+ CheckedFuture<Optional<LocationProviders>, ReadFailedException> read =
+ rtx.read(LogicalDatastoreType.OPERATIONAL, locationIid);
+ assertTrue(read.get().isPresent());
+ rtx.close();
+ LocationProviders locations = read.get().get();
+ LocationProviders locationReference =
+ new LocationProvidersBuilder()
+ .setLocationProvider(Collections.singletonList(new LocationProviderBuilder()
+ .setProvider(new ProviderName(NeLocationProvider.NE_LOCATION_PROVIDER_NAME))
+ .setProviderAddressEndpointLocation(Collections.singletonList(
+ new ProviderAddressEndpointLocationBuilder()
+ .setAddress(IPv4_HOST_ADDRESS_1)
+ .setAddressType(IpPrefixType.class)
+ .setContextId(new ContextId(L3_CONTEXT_ID))
+ .setContextType(L3Context.class)
+ .setAbsoluteLocation(new AbsoluteLocationBuilder()
+ .setLocationType(new ExternalLocationCaseBuilder()
+ .setExternalNodeMountPoint(createNetworkElementIid(NODE_ID_1))
+ .setExternalNodeConnector(createInterfaceIid(
+ NODE_ID_1, CONNECTOR_ID_1).toString())
+ .build())
+ .build())
+ .build()))
+ .build()))
+ .build();
+ assertEquals(locationReference, locations);
+ }
+
+ private AddressEndpoint writeBaseAddrEndpoint () throws Exception {
+ AddressEndpoint endpoint =
+ createAddressEndpoint(IPv4_HOST_ADDRESS_1, IpPrefixType.class, L3_CONTEXT_ID, L3Context.class);
+ InstanceIdentifier<AddressEndpoint> iid = IidFactory.addressEndpointIid(endpoint.getKey());
+ WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.OPERATIONAL, iid, endpoint, true);
+ wtx.submit().get();
+ return endpoint;
+ }
+
+ private NetworkElements writeBaseNetworkElements () throws Exception {
+ NetworkElements nes = createNetworkElements(NODE_ID_1, CONNECTOR_ID_1, L3_CONTEXT_ID, IPv4_NETWORK_ADDRESS_1);
+ InstanceIdentifier<NetworkElements> iid = InstanceIdentifier.builder(NetworkElements.class).build();
+ WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
+ wtx.put(LogicalDatastoreType.CONFIGURATION, iid, nes);
+ wtx.submit().get();
+ return nes;
+ }
+