-/**
+/*
* 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.openflowplugin.applications.frsync.util;
import com.google.common.base.Splitter;
+import com.google.common.collect.Maps;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.FlowCapableTransactionService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.SendBarrierInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.SendBarrierOutput;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
/**
* Test for {@link ReconcileUtil}.
*/
@Test
public void testResolveAndDivideGroupDiffs1() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroup(2L));
- installedGroups.put(3L, createGroup(3L));
+ final Map<Uint32, Group> installedGroups = createGroups(1, 2, 3);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroup(2L));
*/
@Test
public void testResolveAndDivideGroupDiffs2() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
+ final Map<Uint32, Group> installedGroups = createGroups(1);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroup(2L));
*/
@Test
public void testResolveAndDivideGroupDiffs3() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroupWithPreconditions(2L, 1L));
+ final Map<Uint32, Group> installedGroups = new HashMap<>();
+ installedGroups.put(Uint32.ONE, createGroup(1L));
+ installedGroups.put(Uint32.valueOf(2), createGroupWithPreconditions(2L, 1L));
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroup(1L));
*/
@Test
public void testResolveAndDivideGroupDiffs4() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroup(2L));
+ final Map<Uint32, Group> installedGroups = createGroups(1, 2);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroupWithPreconditions(1L, 2L));
*/
@Test
public void testResolveAndDivideGroupDiffs5() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroup(2L));
+ final Map<Uint32, Group> installedGroups = createGroups(1, 2);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroupWithPreconditions(1L, 2L));
*/
@Test
public void testResolveAndDivideGroupDiffs_negative1() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroup(2L));
+ final Map<Uint32, Group> installedGroups = createGroups(1, 2);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroupWithPreconditions(3L, 4L));
*/
@Test
public void testResolveAndDivideGroupDiffs_negative2() {
- final Map<Long, Group> installedGroups = new HashMap<>();
- installedGroups.put(1L, createGroup(1L));
- installedGroups.put(2L, createGroup(2L));
+ final Map<Uint32, Group> installedGroups = createGroups(1, 2);
final List<Group> pendingGroups = new ArrayList<>();
pendingGroups.add(createGroupWithPreconditions(1L, 3L));
@Test
public void testCheckGroupPrecondition() {
- final Set<Long> installedGroups = new HashSet<>(Arrays.asList(new Long[]{1L, 2L}));
+ final Set<Uint32> installedGroups = new HashSet<>(Arrays.asList(Uint32.ONE, Uint32.valueOf(2)));
final Group pendingGroup1 = createGroupWithPreconditions(3L, 2L, 4L);
Assert.assertFalse(ReconcileUtil.checkGroupPrecondition(installedGroups, pendingGroup1));
Assert.assertTrue(ReconcileUtil.checkGroupPrecondition(installedGroups, pendingGroup3));
}
- private Group createGroupWithPreconditions(final long groupIdValue, final long... requiredId) {
+ private static Group createGroupWithPreconditions(final long groupIdValue, final long... requiredId) {
final List<Action> actionBag = new ArrayList<>();
+ int key = 0;
for (long groupIdPrecondition : requiredId) {
final GroupAction groupAction = new GroupActionBuilder()
.setGroupId(groupIdPrecondition)
.build();
final Action action = new ActionBuilder()
.setAction(groupActionCase)
+ .withKey(new ActionKey(key++))
.build();
actionBag.add(action);
}
.build();
}
- private Group createGroup(final long groupIdValue) {
+ private static Map<Uint32, Group> createGroups(long... groupIds) {
+ final Map<Uint32, Group> ret = Maps.newHashMapWithExpectedSize(groupIds.length);
+ for (long groupId : groupIds) {
+ ret.put(Uint32.valueOf(groupId), createGroup(groupId));
+ }
+ return ret;
+ }
+
+ private static Group createGroup(final long groupIdValue) {
final Buckets buckets = new BucketsBuilder()
.setBucket(Collections.emptyList())
.build();