Skip to content

Package: MockedLocator

MockedLocator

nameinstructionbranchcomplexitylinemethod
MockedLocator()
M: 13 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
getFactory(Class)
M: 24 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
getMockedFactory(Class)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getMockedService(Class)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getService(Class)
M: 24 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%
getServices()
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
setInjector(Injector)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
setMockedFactory(Class, KapuaObjectFactory)
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
setMockedService(Class, KapuaService)
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
static {...}
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2017, 2020 Eurotech and/or its affiliates and others
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License v1.0
6: * which accompanies this distribution, and is available at
7: * http://www.eclipse.org/legal/epl-v10.html
8: *
9: * Contributors:
10: * Eurotech
11: *******************************************************************************/
12: package org.eclipse.kapua.qa.common;
13:
14: import com.google.inject.ConfigurationException;
15: import com.google.inject.Injector;
16: import org.eclipse.kapua.locator.KapuaLocator;
17: import org.eclipse.kapua.model.KapuaObjectFactory;
18: import org.eclipse.kapua.service.KapuaService;
19: import org.slf4j.Logger;
20: import org.slf4j.LoggerFactory;
21:
22: import java.util.ArrayList;
23: import java.util.HashMap;
24: import java.util.List;
25: import java.util.Map;
26:
27: /**
28: * Locator service implementation used for mocking Kapua services and Kapua object
29: * factories. Mocking framework such as Mockito can be used to create mocked service
30: * which is than injected into this locator using setters.
31: * Mocked services can be set multiple times, for each test case individually. This
32: * locator implementation should be used only for testing purposes.
33: * <p>
34: * Locator can be configured in maven pom file or command line as system parameter:
35: * <p>
36: * -Dlocator.class.impl=org.eclipse.kapua.qa.common.MockedLocator
37: * <p>
38: * In cucumber setting is done in custom cucumber runner CucumberWithProperties.
39: * <p>
40: * Mocked locator can be used in two ways:
41: * - setting services with seter and having local Map of services and factories
42: * - setting services with Google Guice DI
43: */
44: public class MockedLocator extends KapuaLocator {
45:
46: private static final Logger logger = LoggerFactory.getLogger(MockedLocator.class);
47:
48: private Map<Class<?>, KapuaService> serviceMap = new HashMap<>();
49:
50: private Map<Class<?>, KapuaObjectFactory> factoryMap = new HashMap<>();
51:
52: /**
53: * Google Guice provided DI.
54: */
55: private Injector guiceInjector;
56:
57: public void setInjector(Injector injector) {
58:
59: this.guiceInjector = injector;
60: }
61:
62: public void setMockedService(Class<?> clazz, KapuaService service) {
63:
64: serviceMap.put(clazz, service);
65: }
66:
67: public void setMockedFactory(Class<?> clazz, KapuaObjectFactory factory) {
68:
69: factoryMap.put(clazz, factory);
70: }
71:
72: private <S extends KapuaService> S getMockedService(Class<S> clazz) {
73:
74: return (S) serviceMap.get(clazz);
75: }
76:
77: private <F extends KapuaObjectFactory> F getMockedFactory(Class<F> clazz) {
78:
79: return (F) factoryMap.get(clazz);
80: }
81:
82: @Override
83: public <S extends KapuaService> S getService(Class<S> serviceClass) {
84:
85: logger.info("Geting mocked service {} from MockedLocator", serviceClass.getName());
86: S service = getMockedService(serviceClass);
87:• if ((service == null) && (guiceInjector != null)) {
88: try {
89: service = guiceInjector.getInstance(serviceClass);
90: } catch (ConfigurationException gce) {
91: // Guice didn't find instance - eat exception and return null for instance
92: }
93: }
94:
95: return service;
96: }
97:
98: @Override
99: public <F extends KapuaObjectFactory> F getFactory(Class<F> factoryClass) {
100:
101: logger.info("Geting mocked factory {} from MockedLocator", factoryClass.getName());
102: F factory = getMockedFactory(factoryClass);
103:• if ((factory == null) && (guiceInjector != null)) {
104: try {
105: factory = guiceInjector.getInstance(factoryClass);
106: } catch (ConfigurationException gce) {
107: // Guice didn't find instance - eat exception and return null for instance
108: }
109: }
110:
111: return factory;
112: }
113:
114: @Override
115: public List<KapuaService> getServices() {
116:
117: return new ArrayList<>(serviceMap.values());
118: }
119:
120: }