Resolve Bug:745 - remove windows line endings from config and netconf.
[controller.git] / opendaylight / config / threadpool-config-impl / src / test / java / org / opendaylight / controller / config / threadpool / fixed / FixedThreadPoolConfigBeanTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.threadpool.fixed;
9
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.opendaylight.controller.config.api.ConflictingVersionException;
13 import org.opendaylight.controller.config.api.ValidationException;
14 import org.opendaylight.controller.config.api.jmx.CommitStatus;
15 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
16 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
17 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
18 import org.opendaylight.controller.config.yang.threadpool.impl.NamingThreadFactoryModuleFactory;
19 import org.opendaylight.controller.config.yang.threadpool.impl.NamingThreadFactoryModuleMXBean;
20 import org.opendaylight.controller.config.yang.threadpool.impl.fixed.FixedThreadPoolModuleFactory;
21 import org.opendaylight.controller.config.yang.threadpool.impl.fixed.FixedThreadPoolModuleMXBean;
22
23 import javax.management.InstanceAlreadyExistsException;
24 import javax.management.InstanceNotFoundException;
25 import javax.management.ObjectName;
26
27 import static org.junit.Assert.assertThat;
28 import static org.junit.Assert.fail;
29 import static org.junit.matchers.JUnitMatchers.containsString;
30
31 public class FixedThreadPoolConfigBeanTest extends AbstractConfigTest {
32
33     private FixedThreadPoolModuleFactory factory;
34     private final String nameInstance = "fixedInstance";
35
36     @Before
37     public void setUp() {
38         factory = new FixedThreadPoolModuleFactory();
39         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory,
40                 new NamingThreadFactoryModuleFactory()));
41     }
42
43     @Test
44     public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException,
45             ConflictingVersionException {
46         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
47         createFixed(transaction, nameInstance, 2);
48
49         transaction.validateConfig();
50         CommitStatus status = transaction.commit();
51
52         assertBeanCount(1, factory.getImplementationName());
53         assertStatus(status, 2, 0, 0);
54     }
55
56     @Test
57     public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException,
58             ValidationException {
59         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
60         createFixed(transaction, nameInstance, 4);
61
62         transaction.validateConfig();
63         transaction.commit();
64
65         assertBeanCount(1, factory.getImplementationName());
66
67         transaction = configRegistryClient.createTransaction();
68         CommitStatus status = transaction.commit();
69
70         assertBeanCount(1, factory.getImplementationName());
71         assertStatus(status, 0, 0, 2);
72     }
73
74     @Test
75     public void testNegative() throws ConflictingVersionException, ValidationException, InstanceAlreadyExistsException {
76         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
77
78         createFixed(transaction, nameInstance, 5);
79         transaction.commit();
80
81         transaction = configRegistryClient.createTransaction();
82         try {
83             createFixed(transaction, nameInstance, 0);
84             fail();
85         } catch (InstanceAlreadyExistsException e) {
86             assertThat(
87                     e.getMessage(),
88                     containsString("There is an instance registered with name ModuleIdentifier{factoryName='threadpool-fixed', instanceName='fixedInstance'}"));
89         }
90     }
91
92     @Test
93     public void testDestroy() throws InstanceAlreadyExistsException, ValidationException, ConflictingVersionException,
94             InstanceNotFoundException {
95         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
96         createFixed(transaction, nameInstance, 1);
97
98         transaction.commit();
99
100         transaction = configRegistryClient.createTransaction();
101         transaction.destroyConfigBean(factory.getImplementationName(), nameInstance);
102         CommitStatus status = transaction.commit();
103
104         assertBeanCount(0, factory.getImplementationName());
105         assertStatus(status, 0, 0, 1);
106     }
107
108     @Test
109     public void testValidationException() throws InstanceAlreadyExistsException {
110         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
111         createFixed(transaction, nameInstance, -1);
112         try {
113             transaction.validateConfig();
114             fail();
115         } catch (ValidationException e) {
116             assertThat(e.getMessage(), containsString("MaxThreadCount must be greater than zero"));
117         }
118     }
119
120     private ObjectName createFixed(ConfigTransactionJMXClient transaction, String name, int numberOfThreads)
121             throws InstanceAlreadyExistsException {
122         ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), name);
123         FixedThreadPoolModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, FixedThreadPoolModuleMXBean.class);
124         mxBean.setMaxThreadCount(numberOfThreads);
125
126         ObjectName threadFactoryON = transaction.createModule(NamingThreadFactoryModuleFactory.NAME, "naming");
127         NamingThreadFactoryModuleMXBean namingThreadFactoryModuleMXBean = transaction.newMXBeanProxy(threadFactoryON,
128                 NamingThreadFactoryModuleMXBean.class);
129         namingThreadFactoryModuleMXBean.setNamePrefix("prefix");
130
131         mxBean.setThreadFactory(threadFactoryON);
132
133         return nameCreated;
134     }
135
136 }