Fix random test failure in TestChefApiClient
[appc.git] / appc-adapters / appc-iaas-adapter / appc-iaas-adapter-bundle / src / test / java / org / onap / appc / adapter / iaas / provider / operation / impl / MockGenerator.java
1 package org.onap.appc.adapter.iaas.provider.operation.impl;
2
3 import java.util.HashMap;
4 import java.util.Map;
5 import static org.mockito.Matchers.any;
6 import static org.mockito.Mockito.doReturn;
7 import static org.mockito.Mockito.mock;
8 import org.onap.appc.Constants;
9 import org.onap.appc.adapter.iaas.ProviderAdapter;
10 import org.onap.appc.adapter.iaas.impl.ProviderCache;
11 import org.onap.appc.adapter.iaas.impl.RequestContext;
12 import org.onap.appc.adapter.iaas.impl.TenantCache;
13 import org.onap.appc.adapter.iaas.impl.VMURL;
14 import org.onap.appc.configuration.Configuration;
15 import org.onap.appc.configuration.ConfigurationFactory;
16 import com.att.cdp.zones.model.Hypervisor;
17 import com.att.cdp.zones.model.Server;
18 import com.att.cdp.zones.model.Server.Status;
19 import com.att.cdp.zones.Provider;
20 import com.att.cdp.zones.ImageService;
21 import com.att.cdp.exceptions.ZoneException;
22 import com.att.cdp.openstack.OpenStackContext;
23 import com.att.cdp.zones.ComputeService;
24 import org.onap.appc.pool.Pool;
25 import org.onap.appc.pool.PoolDrainedException;
26 import org.onap.appc.pool.PoolExtensionException;
27 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
28
29 public class MockGenerator {
30
31     private Map<String, ProviderCache> providerCacheMap;
32     private Map<String, String> params;
33     private SvcLogicContext ctx;
34     private Server server;
35     private ImageService imageService;
36     private OpenStackContext context;
37     private ComputeService computeService;
38
39     public static final String SERVER_ID = "12442";
40     public static final String SERVER_NAME = "Server1";
41     private final Configuration configuration = ConfigurationFactory.getConfiguration();
42
43     /**
44      * This method created a mocked up object representing the OpenStack objects which would be
45      * gathered from remote systems during runtime, but which are not available during a unit test.
46      * 
47      * @param serverStatus Most of the classes in the package we are testing have different actions
48      *        depending on the status of the server. This allows a different set of mock data to be
49      *        created depending on which status is being tested.
50      */
51     public MockGenerator(Status serverStatus) {
52         configuration.setProperty(Constants.PROPERTY_STACK_STATE_CHANGE_TIMEOUT, "2");
53         configuration.setProperty(Constants.PROPERTY_RETRY_LIMIT, "10");
54         ctx = mock(SvcLogicContext.class);
55         RequestContext requestContext = mock(RequestContext.class);
56         server = mock(Server.class);
57         doReturn(SERVER_NAME).when(server).getName();
58         doReturn(SERVER_ID).when(server).getId();
59         Status status = serverStatus;
60         doReturn(status).when(server).getStatus();
61         // the example base image that our fake server was built off of
62         doReturn("linuxBase").when(server).getImage();
63         Hypervisor hypervisor = mock(Hypervisor.class);
64         com.att.cdp.zones.model.Hypervisor.Status hypervisorStatus =
65                 com.att.cdp.zones.model.Hypervisor.Status.ENABLED;
66         doReturn(hypervisorStatus).when(hypervisor).getStatus();
67         com.att.cdp.zones.model.Hypervisor.State hypervisorState =
68                 com.att.cdp.zones.model.Hypervisor.State.UP;
69         doReturn(hypervisorState).when(hypervisor).getState();
70         doReturn(hypervisor).when(server).getHypervisor();
71         context = mock(OpenStackContext.class);
72         Provider provider = mock(Provider.class);
73         imageService = mock(ImageService.class);
74         computeService = mock(ComputeService.class);
75         try {
76             doReturn(server).when(computeService).getServer("abc12345-1234-5678-890a-abcdefb12345");
77         } catch (ZoneException e2) {
78             // TODO Auto-generated catch block
79             e2.printStackTrace();
80         }
81         doReturn(context).when(server).getContext();
82         doReturn(provider).when(context).getProvider();
83         doReturn(imageService).when(context).getImageService();
84         doReturn(computeService).when(context).getComputeService();
85         doReturn(false).when(requestContext).attempt();
86         doReturn(true).when(requestContext).isFailed();
87         params = new HashMap<String, String>();
88         params.put(ProviderAdapter.PROPERTY_INSTANCE_URL,
89                 "http://10.1.1.2:5000/v2/abc12345-1234-5678-890a-abcdefb12345/servers/abc12345-1234-5678-890a-abcdefb12345");
90         params.put(ProviderAdapter.PROPERTY_PROVIDER_NAME, "provider1");
91         params.put(ProviderAdapter.PROPERTY_IDENTITY_URL,
92                 "http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/identity/v3");
93         ProviderCache providerCache = mock(ProviderCache.class);
94         TenantCache tenantCache = mock(TenantCache.class);
95         doReturn("cloudowner_region").when(tenantCache).determineRegion(any(VMURL.class));
96         doReturn("abc12345-1234-5678-890a-abcdefb12345").when(tenantCache).getTenantId();
97         doReturn("abc12345-1234-5678-890a-abcdefb12345").when(tenantCache).getTenantName();
98         Pool pool = mock(Pool.class);
99         try {
100             doReturn(context).when(pool).reserve();
101         } catch (PoolExtensionException | PoolDrainedException e1) {
102             // TODO Auto-generated catch block
103             e1.printStackTrace();
104         }
105
106         Map<String, Pool> tenantCachePools = new HashMap<String, Pool>();
107         tenantCachePools.put("cloudowner_region", pool);
108         doReturn(tenantCachePools).when(tenantCache).getPools();
109         doReturn(tenantCache).when(providerCache).getTenant("abc12345-1234-5678-890a-abcdefb12345");
110         providerCacheMap = new HashMap<String, ProviderCache>();
111         providerCacheMap.put(
112                 "http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/identity/v3",
113                 providerCache);
114     }
115
116     public Map<String, String> getParams() {
117         return params;
118     }
119
120     public Map<String, ProviderCache> getProviderCacheMap() {
121         return providerCacheMap;
122     }
123
124     public SvcLogicContext getSvcLogicContext() {
125         return ctx;
126     }
127
128     public Server getServer() {
129         return server;
130     }
131
132     public ImageService getImageService() {
133         return imageService;
134     }
135
136     public OpenStackContext getContext() {
137         return context;
138     }
139
140     public ComputeService getComputeService() {
141         return computeService;
142     }
143
144 }