Search in sources :

Example 66 with Entitlement

use of org.candlepin.model.Entitlement in project candlepin by candlepin.

the class ExportRulesTest method canExportProductConsumer.

@Test
public void canExportProductConsumer() throws NoSuchMethodException {
    Entitlement entitlement = mock(Entitlement.class);
    Consumer consumer = mock(Consumer.class);
    ConsumerType consumerType = new ConsumerType("system");
    consumerType.setId("consumer_type");
    Pool pool = mock(Pool.class);
    Product product = mock(Product.class);
    Map<String, String> attributes = new HashMap<>();
    attributes.put(Pool.Attributes.DERIVED_POOL, "true");
    when(entitlement.getPool()).thenReturn(pool);
    when(entitlement.getConsumer()).thenReturn(consumer);
    when(pool.getProductId()).thenReturn("12345");
    when(product.getAttributes()).thenReturn(new HashMap<>());
    when(pool.getAttributes()).thenReturn(attributes);
    when(consumer.getTypeId()).thenReturn(consumerType.getId());
    when(consumerTypeCuratorMock.find(eq(consumerType.getId()))).thenReturn(consumerType);
    when(consumerTypeCuratorMock.getConsumerType(eq(consumer))).thenReturn(consumerType);
    assertTrue(exportRules.canExport(entitlement));
}
Also used : Consumer(org.candlepin.model.Consumer) HashMap(java.util.HashMap) Product(org.candlepin.model.Product) Pool(org.candlepin.model.Pool) Entitlement(org.candlepin.model.Entitlement) ConsumerType(org.candlepin.model.ConsumerType) Test(org.junit.Test)

Example 67 with Entitlement

use of org.candlepin.model.Entitlement in project candlepin by candlepin.

the class PoolRulesStackDerivedTest method createEntFromPool.

private Entitlement createEntFromPool(Pool pool) {
    Entitlement e = new Entitlement(pool, consumer, owner, 2);
    e.setCreated(new Date());
    try {
        Thread.sleep(1);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }
    return e;
}
Also used : Entitlement(org.candlepin.model.Entitlement) Date(java.util.Date)

Example 68 with Entitlement

use of org.candlepin.model.Entitlement in project candlepin by candlepin.

the class PoolRulesStackDerivedTest method virtLimitFromFirstVirtLimitEntBatch.

@Test
public void virtLimitFromFirstVirtLimitEntBatch() {
    CandlepinQuery cqmock = mock(CandlepinQuery.class);
    stackedEnts.clear();
    Entitlement e1 = createEntFromPool(pool1);
    e1.setQuantity(4);
    stackedEnts.add(e1);
    Entitlement e2 = createEntFromPool(pool4);
    e2.setQuantity(16);
    stackedEnts.add(e2);
    Class<Set<String>> listClass = (Class<Set<String>>) (Class) HashSet.class;
    ArgumentCaptor<Set<String>> arg = ArgumentCaptor.forClass(listClass);
    when(cqmock.iterator()).thenReturn(stackedEnts.iterator());
    when(entCurMock.findByStackIds(eq(consumer), arg.capture())).thenReturn(cqmock);
    List<PoolUpdate> updates = poolRules.updatePoolsFromStack(consumer, Arrays.asList(stackDerivedPool, stackDerivedPool2), false);
    Set<String> stackIds = arg.getValue();
    assertEquals(2, stackIds.size());
    assertThat(stackIds, hasItems(STACK, STACK + "3"));
    for (PoolUpdate update : updates) {
        assertTrue(update.changed());
        assertTrue(update.getQuantityChanged());
    }
    assertEquals((Long) 2L, stackDerivedPool.getQuantity());
    assertEquals((Long) 9L, stackDerivedPool2.getQuantity());
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) CandlepinQuery(org.candlepin.model.CandlepinQuery) Entitlement(org.candlepin.model.Entitlement) PoolUpdate(org.candlepin.policy.js.pool.PoolUpdate) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 69 with Entitlement

use of org.candlepin.model.Entitlement in project candlepin by candlepin.

the class PoolRulesStackDerivedTest method setUp.

@Before
public void setUp() {
    // Load the default production rules:
    InputStream is = this.getClass().getResourceAsStream(RulesCurator.DEFAULT_RULES_FILE);
    Rules rules = new Rules(Util.readFile(is));
    when(rulesCuratorMock.getUpdated()).thenReturn(new Date());
    when(rulesCuratorMock.getRules()).thenReturn(rules);
    when(configMock.getInt(eq(ConfigProperties.PRODUCT_CACHE_MAX))).thenReturn(100);
    poolRules = new PoolRules(poolManagerMock, configMock, entCurMock, ownerProductCuratorMock, productCurator);
    principal = TestUtil.createOwnerPrincipal();
    owner = principal.getOwners().get(0);
    ConsumerType ctype = new ConsumerType(ConsumerTypeEnum.SYSTEM);
    ctype.setId("test-ctype");
    consumer = new Consumer("consumer", "registeredbybob", owner, ctype);
    // Two subtly different products stacked together:
    prod1 = TestUtil.createProduct("prod1", "prod1");
    prod1.setAttribute(Product.Attributes.VIRT_LIMIT, "2");
    prod1.setAttribute(Product.Attributes.STACKING_ID, STACK);
    prod1.setAttribute("testattr1", "1");
    when(ownerProductCuratorMock.getProductById(owner, prod1.getId())).thenReturn(prod1);
    prod2 = TestUtil.createProduct("prod2", "prod2");
    prod2.setAttribute(Product.Attributes.VIRT_LIMIT, "unlimited");
    prod2.setAttribute(Product.Attributes.STACKING_ID, STACK);
    prod2.setAttribute("testattr2", "2");
    when(ownerProductCuratorMock.getProductById(owner, prod2.getId())).thenReturn(prod2);
    prod3 = TestUtil.createProduct("prod3", "prod3");
    prod3.setAttribute(Product.Attributes.VIRT_LIMIT, "9");
    prod3.setAttribute(Product.Attributes.STACKING_ID, STACK + "3");
    prod3.setAttribute("testattr2", "2");
    when(ownerProductCuratorMock.getProductById(owner, prod3.getId())).thenReturn(prod3);
    provided1 = TestUtil.createProduct();
    provided2 = TestUtil.createProduct();
    provided3 = TestUtil.createProduct();
    provided4 = TestUtil.createProduct();
    // Create three subscriptions with various start/end dates:
    sub1 = createStackedVirtSub(owner, prod1, TestUtil.createDate(2010, 1, 1), TestUtil.createDate(2015, 1, 1));
    sub1.getProvidedProducts().add(provided1.toDTO());
    pool1 = copyFromSub(sub1);
    sub2 = createStackedVirtSub(owner, prod2, TestUtil.createDate(2011, 1, 1), TestUtil.createDate(2017, 1, 1));
    sub2.getProvidedProducts().add(provided2.toDTO());
    pool2 = copyFromSub(sub2);
    sub3 = createStackedVirtSub(owner, prod2, TestUtil.createDate(2012, 1, 1), TestUtil.createDate(2020, 1, 1));
    sub3.getProvidedProducts().add(provided3.toDTO());
    pool3 = copyFromSub(sub3);
    sub4 = createStackedVirtSub(owner, prod3, TestUtil.createDate(2012, 1, 1), TestUtil.createDate(2020, 1, 1));
    sub4.getProvidedProducts().add(provided4.toDTO());
    pool4 = copyFromSub(sub4);
    // Initial entitlement from one of the pools:
    stackedEnts.add(createEntFromPool(pool2));
    CandlepinQuery cqmock = mock(CandlepinQuery.class);
    when(cqmock.list()).thenReturn(stackedEnts);
    when(entCurMock.findByStackId(consumer, STACK)).thenReturn(cqmock);
    pool2.setAttribute(Product.Attributes.VIRT_LIMIT, "60");
    pool4.setAttribute(Product.Attributes.VIRT_LIMIT, "80");
    List<Pool> reqPools = new ArrayList<>();
    reqPools.add(pool2);
    Map<String, Entitlement> entitlements = new HashMap<>();
    entitlements.put(pool2.getId(), stackedEnts.get(0));
    Map<String, Map<String, String>> attributes = new HashMap<>();
    attributes.put(pool2.getId(), PoolHelper.getFlattenedAttributes(pool2));
    when(poolManagerMock.createPools(Matchers.anyListOf(Pool.class))).then(returnsFirstArg());
    List<Pool> resPools = PoolHelper.createHostRestrictedPools(poolManagerMock, consumer, reqPools, entitlements, attributes, productCurator);
    stackDerivedPool = resPools.get(0);
    reqPools.clear();
    reqPools.add(pool4);
    entitlements.clear();
    entitlements.put(pool4.getId(), createEntFromPool(pool4));
    attributes.clear();
    attributes.put(pool4.getId(), PoolHelper.getFlattenedAttributes(pool4));
    stackDerivedPool2 = PoolHelper.createHostRestrictedPools(poolManagerMock, consumer, reqPools, entitlements, attributes, productCurator).get(0);
}
Also used : PoolRules(org.candlepin.policy.js.pool.PoolRules) HashMap(java.util.HashMap) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) CandlepinQuery(org.candlepin.model.CandlepinQuery) PoolRules(org.candlepin.policy.js.pool.PoolRules) Rules(org.candlepin.model.Rules) Date(java.util.Date) Consumer(org.candlepin.model.Consumer) Pool(org.candlepin.model.Pool) ConsumerType(org.candlepin.model.ConsumerType) Entitlement(org.candlepin.model.Entitlement) HashMap(java.util.HashMap) Map(java.util.Map) Before(org.junit.Before)

Example 70 with Entitlement

use of org.candlepin.model.Entitlement in project candlepin by candlepin.

the class PoolRulesStackDerivedTest method mergedProductAttributes.

@Test
public void mergedProductAttributes() {
    Entitlement ent1 = createEntFromPool(pool1);
    ent1.setCreated(new Date(System.currentTimeMillis() - 86400000));
    stackedEnts.add(ent1);
    stackedEnts.add(createEntFromPool(pool3));
    PoolUpdate update = poolRules.updatePoolFromStack(stackDerivedPool, null);
    assertTrue(update.changed());
    assertTrue(update.getProductAttributesChanged());
    assertEquals(pool1.getProductAttributes(), stackDerivedPool.getProductAttributes());
}
Also used : Entitlement(org.candlepin.model.Entitlement) PoolUpdate(org.candlepin.policy.js.pool.PoolUpdate) Date(java.util.Date) Test(org.junit.Test)

Aggregations

Entitlement (org.candlepin.model.Entitlement)301 Test (org.junit.Test)201 Consumer (org.candlepin.model.Consumer)164 Pool (org.candlepin.model.Pool)125 LinkedList (java.util.LinkedList)84 Product (org.candlepin.model.Product)68 Date (java.util.Date)62 ArrayList (java.util.ArrayList)61 HashSet (java.util.HashSet)59 HashMap (java.util.HashMap)55 Owner (org.candlepin.model.Owner)44 PoolQuantity (org.candlepin.model.PoolQuantity)35 ConsumerType (org.candlepin.model.ConsumerType)34 List (java.util.List)30 ConsumerInstalledProduct (org.candlepin.model.ConsumerInstalledProduct)24 Matchers.anyString (org.mockito.Matchers.anyString)17 Set (java.util.Set)16 Subscription (org.candlepin.model.dto.Subscription)16 ApiOperation (io.swagger.annotations.ApiOperation)15 ApiResponses (io.swagger.annotations.ApiResponses)15