/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.resolver;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
import org.opendaylight.groupbasedpolicy.util.IidFactory;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.Forwarding;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenant;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenantBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import com.google.common.base.Optional;
public class ForwardingResolverTest extends CustomDataBrokerTest {
private static final TenantId TENANT_ID_1 = new TenantId("tenant_1");
private ForwardingResolver fwdResolver;
@Before
public void init() {
fwdResolver = new ForwardingResolver(getDataBroker());
}
@Override
public Collection<Class<?>> getClassesFromModules() {
return Arrays.asList(Forwarding.class);
}
@Test
public void testOnWrite() throws Exception {
ForwardingByTenant forwardingByTenant = new ForwardingByTenantBuilder().setTenantId(TENANT_ID_1).build();
DataObjectModification<ForwardingByTenant> domMock = Mockito.mock(DataObjectModification.class);
Mockito.when(domMock.getDataAfter()).thenReturn(forwardingByTenant);
InstanceIdentifier<ForwardingByTenant> forwardingByTenantIid = IidFactory.forwardingByTenantIid(TENANT_ID_1);
fwdResolver.onWrite(domMock, forwardingByTenantIid);
ReadOnlyTransaction rTx = getDataBroker().newReadOnlyTransaction();
Optional<ForwardingByTenant> potenatialFwdByTenant =
rTx.read(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid).get();
Assert.assertTrue(potenatialFwdByTenant.isPresent());
Assert.assertEquals(forwardingByTenant, potenatialFwdByTenant.get());
}
@Test
public void testOnSubtreeModified() throws Exception {
ForwardingByTenant forwardingByTenant = new ForwardingByTenantBuilder().setTenantId(TENANT_ID_1).build();
DataObjectModification<ForwardingByTenant> domMock = Mockito.mock(DataObjectModification.class);
Mockito.when(domMock.getDataAfter()).thenReturn(forwardingByTenant);
InstanceIdentifier<ForwardingByTenant> forwardingByTenantIid = IidFactory.forwardingByTenantIid(TENANT_ID_1);
fwdResolver.onSubtreeModified(domMock, forwardingByTenantIid);
ReadOnlyTransaction rTx = getDataBroker().newReadOnlyTransaction();
Optional<ForwardingByTenant> potenatialFwdByTenant =
rTx.read(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid).get();
Assert.assertTrue(potenatialFwdByTenant.isPresent());
Assert.assertEquals(forwardingByTenant, potenatialFwdByTenant.get());
}
@Test
public void testOnDelete() throws Exception {
ForwardingByTenant forwardingByTenant = new ForwardingByTenantBuilder().setTenantId(TENANT_ID_1).build();
InstanceIdentifier<ForwardingByTenant> forwardingByTenantIid = IidFactory.forwardingByTenantIid(TENANT_ID_1);
WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
wTx.put(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid, forwardingByTenant);
wTx.submit().get();
ReadOnlyTransaction rTx = getDataBroker().newReadOnlyTransaction();
Optional<ForwardingByTenant> potenatialFwdByTenant =
rTx.read(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid).get();
Assert.assertTrue(potenatialFwdByTenant.isPresent());
fwdResolver.onDelete(null, forwardingByTenantIid);
rTx = getDataBroker().newReadOnlyTransaction();
potenatialFwdByTenant = rTx.read(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid).get();
Assert.assertFalse(potenatialFwdByTenant.isPresent());
}
@Test
public void testUpdateForwarding() throws Exception {
ForwardingByTenant forwardingByTenant = new ForwardingByTenantBuilder().setTenantId(TENANT_ID_1).build();
InstanceIdentifier<ForwardingByTenant> forwardingByTenantIid = IidFactory.forwardingByTenantIid(TENANT_ID_1);
fwdResolver.updateForwarding(forwardingByTenantIid, forwardingByTenant);
ReadOnlyTransaction rTx = getDataBroker().newReadOnlyTransaction();
Optional<ForwardingByTenant> potenatialFwdByTenant =
rTx.read(LogicalDatastoreType.OPERATIONAL, forwardingByTenantIid).get();
Assert.assertTrue(potenatialFwdByTenant.isPresent());
Assert.assertEquals(forwardingByTenant, potenatialFwdByTenant.get());
}
}