Fix checkstyle warnings for config-persister-impl
[controller.git] / opendaylight / netconf / config-persister-impl / src / test / java / org / opendaylight / controller / netconf / persist / impl / osgi / MockedBundleContext.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.netconf.persist.impl.osgi;
9
10 import static org.mockito.Matchers.any;
11 import static org.mockito.Matchers.anyString;
12 import static org.mockito.Matchers.eq;
13 import static org.mockito.Mockito.doNothing;
14 import static org.mockito.Mockito.doReturn;
15
16 import com.google.common.collect.Lists;
17 import com.google.common.collect.Sets;
18 import java.io.Closeable;
19 import java.io.IOException;
20 import java.util.Collections;
21 import java.util.Dictionary;
22 import java.util.List;
23 import java.util.SortedSet;
24 import java.util.TreeSet;
25 import org.mockito.Mock;
26 import org.mockito.MockitoAnnotations;
27 import org.opendaylight.controller.config.persist.api.ConfigPusher;
28 import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
29 import org.opendaylight.controller.config.persist.api.Persister;
30 import org.opendaylight.controller.config.persist.api.PropertiesProvider;
31 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider;
32 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService;
33 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory;
34 import org.opendaylight.controller.netconf.persist.impl.DummyAdapter;
35 import org.osgi.framework.Bundle;
36 import org.osgi.framework.BundleContext;
37 import org.osgi.framework.Filter;
38 import org.osgi.framework.ServiceListener;
39 import org.osgi.framework.ServiceReference;
40 import org.osgi.framework.ServiceRegistration;
41
42 final class MockedBundleContext {
43     @Mock
44     private BundleContext context;
45     @Mock
46     private Filter outerFilter, innerFilter;
47     @Mock
48     private ServiceReference<?> serviceReference;
49     @Mock
50     private Bundle bundle;
51     @Mock
52     NetconfOperationServiceFactory serviceFactory;
53     @Mock
54     private NetconfOperationService service;
55     @Mock
56     private ServiceRegistration<?> registration;
57
58     MockedBundleContext(long maxWaitForCapabilitiesMillis, long conflictingVersionTimeoutMillis) throws Exception {
59         MockitoAnnotations.initMocks(this);
60         doReturn(null).when(context).getProperty(anyString());
61         initContext(maxWaitForCapabilitiesMillis, conflictingVersionTimeoutMillis);
62
63         String outerFilterString = "(objectClass=org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider)";
64         doReturn(outerFilter).when(context).createFilter(outerFilterString);
65         doNothing().when(context).addServiceListener(any(ServiceListener.class), eq(outerFilterString));
66         ServiceReference<?>[] toBeReturned = {serviceReference};
67         doReturn(toBeReturned).when(context).getServiceReferences(NetconfOperationProvider.class.getName(), null);
68
69         String innerFilterString = "innerfilter";
70         doReturn(innerFilterString).when(outerFilter).toString();
71
72         doReturn(innerFilter).when(context).createFilter(ConfigPersisterActivator.getFilterString());
73         doReturn(innerFilterString).when(innerFilter).toString();
74         doNothing().when(context).addServiceListener(any(ServiceListener.class), eq(innerFilterString));
75
76         doReturn(toBeReturned).when(context).getServiceReferences((String) null, innerFilterString);
77         doReturn(bundle).when(serviceReference).getBundle();
78         doReturn(context).when(bundle).getBundleContext();
79         doReturn("").when(serviceReference).toString();
80         doReturn(serviceFactory).when(context).getService(any(ServiceReference.class));
81         doReturn(service).when(serviceFactory).createService(anyString());
82         doReturn(Collections.emptySet()).when(service).getCapabilities();
83         doNothing().when(service).close();
84         doReturn("serviceFactoryMock").when(serviceFactory).toString();
85
86         doNothing().when(registration).unregister();
87         doReturn(registration).when(context).registerService(
88                 eq(ConfigPusher.class.getName()), any(Closeable.class),
89                 any(Dictionary.class));
90     }
91
92     public BundleContext getBundleContext() {
93         return context;
94     }
95
96     private void initContext(long maxWaitForCapabilitiesMillis, long conflictingVersionTimeoutMillis) {
97         initProp(context, "active", "1");
98         initProp(context, "1." + ConfigPersisterActivator.STORAGE_ADAPTER_CLASS_PROP_SUFFIX, DummyAdapterWithInitialSnapshot.class.getName());
99         initProp(context, "1." + "readonly", "false");
100         initProp(context, "1." + ".properties.fileStorage", "target/configuration-persister-test/initial/");
101         initProp(context, ConfigPersisterActivator.MAX_WAIT_FOR_CAPABILITIES_MILLIS_PROPERTY, String.valueOf(maxWaitForCapabilitiesMillis));
102         initProp(context, ConfigPersisterActivator.CONFLICTING_VERSION_TIMEOUT_MILLIS_PROPERTY, String.valueOf(conflictingVersionTimeoutMillis));
103     }
104
105     private void initProp(BundleContext context, String key, String value) {
106         initPropNoPrefix(context, ConfigPersisterActivator.NETCONF_CONFIG_PERSISTER + "." + key, value);
107     }
108
109     private void initPropNoPrefix(BundleContext context, String key, String value) {
110         doReturn(value).when(context).getProperty(key);
111     }
112
113     public static class DummyAdapterWithInitialSnapshot extends DummyAdapter {
114
115         public static final String CONFIG_SNAPSHOT = "config-snapshot";
116         public static String expectedCapability = "cap2";
117
118         @Override
119         public List<ConfigSnapshotHolder> loadLastConfigs() throws IOException {
120             return Lists.newArrayList(getConfigSnapshot());
121         }
122
123         @Override
124         public Persister instantiate(PropertiesProvider propertiesProvider) {
125             return this;
126         }
127
128         public ConfigSnapshotHolder getConfigSnapshot() {
129             return new ConfigSnapshotHolder() {
130                 @Override
131                 public String getConfigSnapshot() {
132                     return "<data><" + CONFIG_SNAPSHOT + "/></data>";
133                 }
134
135                 @Override
136                 public SortedSet<String> getCapabilities() {
137                     TreeSet<String> strings = Sets.newTreeSet();
138                     strings.add(expectedCapability);
139                     return strings;
140                 }
141
142                 @Override
143                 public String toString() {
144                     return getConfigSnapshot();
145                 }
146             };
147         }
148     }
149 }