Initial code drop of yang model driven configuration system
[controller.git] / opendaylight / config / config-manager / src / test / java / org / opendaylight / controller / config / manager / testingservices / parallelapsp / test / MockedDependenciesTest.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.manager.testingservices.parallelapsp.test;
9
10 import java.io.Closeable;
11 import java.io.IOException;
12 import java.util.concurrent.Executor;
13
14 import javax.management.ObjectName;
15
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.controller.config.api.DynamicMBeanWithInstance;
19 import org.opendaylight.controller.config.api.ModuleIdentifier;
20 import org.opendaylight.controller.config.manager.impl.ClassBasedModuleFactory;
21 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
22 import org.opendaylight.controller.config.manager.testingservices.parallelapsp.TestingParallelAPSPImpl;
23 import org.opendaylight.controller.config.manager.testingservices.parallelapsp.TestingParallelAPSPModuleFactory;
24 import org.opendaylight.controller.config.manager.testingservices.seviceinterface.TestingThreadPoolServiceInterface;
25 import org.opendaylight.controller.config.manager.testingservices.threadpool.TestingThreadPoolConfigMXBean;
26 import org.opendaylight.controller.config.manager.testingservices.threadpool.TestingThreadPoolIfc;
27 import org.opendaylight.controller.config.spi.Module;
28 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
29
30 public class MockedDependenciesTest extends AbstractParallelAPSPTest {
31     private final String threadPoolImplementationName = "mockedthreadpool";
32
33     @Before
34     public void setUp() {
35
36         ClassBasedModuleFactory mockedThreadPoolConfigFactory = new ClassBasedModuleFactory(
37                 threadPoolImplementationName, MockedThreadPoolModule.class);
38
39         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
40                 new TestingParallelAPSPModuleFactory(),
41                 mockedThreadPoolConfigFactory));
42     }
43
44     public static interface MockedTestingThreadPoolConfigMXBean extends
45             TestingThreadPoolConfigMXBean {
46         public void setThreadCount(int threadCount);
47     }
48
49     public static class MockedThreadPoolModule implements Module,
50             MockedTestingThreadPoolConfigMXBean,
51             TestingThreadPoolServiceInterface {
52         int threadCount;
53
54         public MockedThreadPoolModule() {
55         }
56
57         public MockedThreadPoolModule(
58                 DynamicMBeanWithInstance dynamicMBeanWithInstance) {
59             // no reconfiguration / reuse is supported
60         }
61
62         @Override
63         public ModuleIdentifier getName() {
64             return new ModuleIdentifier("a", "b");
65         }
66
67         @Override
68         public int getThreadCount() {
69             return threadCount;
70         }
71
72         @Override
73         public void setThreadCount(int threadCount) {
74             this.threadCount = threadCount;
75         }
76
77         @Override
78         public void validate() {
79
80         }
81
82         @Override
83         public Closeable getInstance() {
84             return new MockedThreadPool(threadCount);
85         }
86     }
87
88     public static class MockedThreadPool implements TestingThreadPoolIfc,
89             Closeable {
90         private final int threadCount;
91
92         public MockedThreadPool(int threadCount) {
93             this.threadCount = threadCount;
94         }
95
96         @Override
97         public Executor getExecutor() {
98             return null;
99         }
100
101         @Override
102         public int getMaxNumberOfThreads() {
103             return threadCount;
104         }
105
106         @Override
107         public void close() throws IOException {
108
109         }
110     }
111
112     @Override
113     String getThreadPoolImplementationName() {
114         return threadPoolImplementationName;
115     }
116
117     @Test
118     public void testDependencies() throws Exception {
119         ConfigTransactionJMXClient transaction = configRegistryClient
120                 .createTransaction();
121         // create fixed1
122         ObjectName threadPoolTransactionON = createFixed1(transaction,
123                 TestingParallelAPSPImpl.MINIMAL_NUMBER_OF_THREADS);
124         // create apsp-parallel
125         createParallelAPSP(transaction, threadPoolTransactionON);
126
127         transaction.commit();
128     }
129
130 }