/* * Copyright (c) 2014 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.protocol.data.change.counter; import static org.junit.Assert.assertEquals; import static org.opendaylight.protocol.util.CheckUtil.checkNotPresentOperational; import static org.opendaylight.protocol.util.CheckUtil.checkPresentOperational; import static org.opendaylight.protocol.util.CheckUtil.readDataOperational; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.data.change.counter.rev160315.DataChangeCounter; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.data.change.counter.rev160315.data.change.counter.Counter; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.data.change.counter.rev160315.data.change.counter.CounterKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class TopologyDataChangeCounterTest extends AbstractConcurrentDataBrokerTest { private static final String COUNTER_ID1 = "counter1"; private static final String COUNTER_ID2 = "counter2"; private final InstanceIdentifier<Counter> counterInstanceId_1 = InstanceIdentifier.builder(DataChangeCounter.class) .child(Counter.class, new CounterKey(COUNTER_ID1)).build(); private final InstanceIdentifier<Counter> counterInstanceId_2 = InstanceIdentifier.builder(DataChangeCounter.class) .child(Counter.class, new CounterKey(COUNTER_ID2)).build(); @Test public void testDataChangeCounter() throws Exception { final TopologyDataChangeCounter counter = new TopologyDataChangeCounter(getDataBroker(), COUNTER_ID1); readDataOperational(getDataBroker(), this.counterInstanceId_1, count -> { assertEquals(0, count.getCount().longValue()); return count; }); counter.onDataTreeChanged(null); readDataOperational(getDataBroker(), this.counterInstanceId_1, count -> { assertEquals(1, count.getCount().longValue()); return count; }); counter.close(); checkNotPresentOperational(getDataBroker(), this.counterInstanceId_1); } @Test public void testDataChangeCounterTwoInstances() throws Exception { final TopologyDataChangeCounter counter1 = new TopologyDataChangeCounter(getDataBroker(), COUNTER_ID1); readDataOperational(getDataBroker(), this.counterInstanceId_1, count -> { assertEquals(0, count.getCount().longValue()); return count; }); final TopologyDataChangeCounter counter2 = new TopologyDataChangeCounter(getDataBroker(), COUNTER_ID2); readDataOperational(getDataBroker(), this.counterInstanceId_2, count -> { assertEquals(0, count.getCount().longValue()); return count; }); counter1.onDataTreeChanged(null); readDataOperational(getDataBroker(), this.counterInstanceId_1, count -> { assertEquals(1, count.getCount().longValue()); return count; }); readDataOperational(getDataBroker(), this.counterInstanceId_2, count -> { assertEquals(0, count.getCount().longValue()); return count; }); counter1.close(); checkNotPresentOperational(getDataBroker(), this.counterInstanceId_1); // Check that counter2 does not get deleted checkPresentOperational(getDataBroker(), this.counterInstanceId_2); counter2.close(); checkNotPresentOperational(getDataBroker(), this.counterInstanceId_2); } }