/* * Copyright (c) 2015 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 static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Before; import org.junit.Test; import org.opendaylight.groupbasedpolicy.dto.ConditionSet; import org.opendaylight.groupbasedpolicy.dto.EndpointConstraint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ConditionName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.EndpointIdentificationConstraints; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.EndpointIdentificationConstraintsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.L3EndpointIdentificationConstraints; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.L3EndpointIdentificationConstraintsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraintBuilder; public class EndpointConstraintTest { private EndpointConstraint constraint; private ConditionSet conditionSet; private EndpointIdentificationConstraints consEpIdentificationConstraint; private L3EndpointIdentificationConstraints l3Constraints; private PrefixConstraint prefixConstraint; private IpPrefix ipPrefix; @Before public void init() { conditionSet = mock(ConditionSet.class); ipPrefix = new IpPrefix(new Ipv4Prefix("10.0.0.0/8")); prefixConstraint = new PrefixConstraintBuilder().setIpPrefix(ipPrefix).build(); l3Constraints = new L3EndpointIdentificationConstraintsBuilder().setPrefixConstraint( Collections.singletonList(prefixConstraint)).build(); consEpIdentificationConstraint = new EndpointIdentificationConstraintsBuilder().setL3EndpointIdentificationConstraints( l3Constraints).build(); constraint = new EndpointConstraint(conditionSet, consEpIdentificationConstraint); } @Test public void testConstructor() { assertEquals(conditionSet, constraint.getConditionSet()); assertTrue(constraint.getL3EpPrefixes().contains(prefixConstraint)); assertNotNull(constraint.hashCode()); constraint = new EndpointConstraint(null, consEpIdentificationConstraint); assertEquals(ConditionSet.EMPTY, constraint.getConditionSet()); } @Test public void testConditionsMatch() { ConditionName conditionName = new ConditionName("condition1"); List<ConditionName> epConditions = Collections.singletonList(conditionName); when(conditionSet.matches(epConditions)).thenReturn(true); assertTrue(constraint.conditionsMatch(epConditions)); } @Test public void testGetIpPrefixesFrom() { Set<PrefixConstraint> prefixConstraints = new HashSet<>(); prefixConstraints.add(prefixConstraint); Set<IpPrefix> ipPrefixes = EndpointConstraint.getIpPrefixesFrom(prefixConstraints); assertEquals(1, ipPrefixes.size()); assertTrue(ipPrefixes.contains(ipPrefix)); } @Test public void testEquals() { assertTrue(constraint.equals(constraint)); assertFalse(constraint.equals(null)); assertFalse(constraint.equals(new Object())); EndpointConstraint other; ConditionSet conditionSetOther = mock(ConditionSet.class); EndpointIdentificationConstraints consEpIdentificationConstraintOther = mock(EndpointIdentificationConstraints.class); other = new EndpointConstraint(conditionSet, consEpIdentificationConstraintOther); assertFalse(constraint.equals(other)); other = new EndpointConstraint(conditionSetOther, consEpIdentificationConstraint); assertFalse(constraint.equals(other)); other = new EndpointConstraint(conditionSet, consEpIdentificationConstraint); assertTrue(constraint.equals(other)); } }