2 * Copyright (c) 2018 Orange
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.nbi.test;
19 import static org.assertj.core.api.Assertions.assertThat;
21 import com.github.tomakehurst.wiremock.admin.model.ListStubMappingsResult;
22 import com.github.tomakehurst.wiremock.http.ResponseDefinition;
23 import com.github.tomakehurst.wiremock.stubbing.StubMapping;
24 import java.util.Calendar;
25 import java.util.Date;
26 import java.util.List;
27 import javax.validation.Validation;
28 import javax.validation.Validator;
29 import javax.validation.ValidatorFactory;
30 import org.junit.After;
31 import org.junit.AfterClass;
32 import org.junit.Before;
33 import org.junit.BeforeClass;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.onap.nbi.apis.assertions.ServiceOrderExecutionTaskAssertions;
37 import org.onap.nbi.apis.serviceorder.model.ActionType;
38 import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
39 import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
40 import org.onap.nbi.apis.serviceorder.model.StateType;
41 import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask;
42 import org.onap.nbi.apis.serviceorder.repositories.ExecutionTaskRepository;
43 import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderRepository;
44 import org.onap.nbi.apis.serviceorder.workflow.SOTaskProcessor;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.boot.test.context.SpringBootTest;
47 import org.springframework.mock.web.MockHttpServletRequest;
48 import org.springframework.test.annotation.DirtiesContext;
49 import org.springframework.test.annotation.DirtiesContext.ClassMode;
50 import org.springframework.test.context.ActiveProfiles;
51 import org.springframework.test.context.junit4.SpringRunner;
52 import org.springframework.web.context.request.RequestContextHolder;
53 import org.springframework.web.context.request.ServletRequestAttributes;
55 @RunWith(SpringRunner.class)
56 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
57 @ActiveProfiles("test")
58 @DirtiesContext(classMode= ClassMode.AFTER_CLASS)
59 public class ExecutionTaskTest {
62 ServiceOrderRepository serviceOrderRepository;
65 ExecutionTaskRepository executionTaskRepository;
68 SOTaskProcessor SoTaskProcessor;
71 static Validator validator;
74 public void before() {
75 MockHttpServletRequest request = new MockHttpServletRequest();
76 RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
80 public static void setUp() throws Exception {
81 ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
82 validator = factory.getValidator();
83 Context.startWiremock();
87 public static void tearsDown() throws Exception {
88 Context.stopServers();
93 public void tearsDownUpPort() throws Exception {
94 executionTaskRepository.deleteAll();
95 serviceOrderRepository.deleteAll();
96 Context.wireMockServer.resetToDefaultMappings();
101 public ExecutionTask getExecutionTask(String orderItemId) {
102 for (ExecutionTask executionTask : executionTaskRepository.findAll()) {
103 if (executionTask.getOrderItemId().equalsIgnoreCase(orderItemId)) {
104 return executionTask;
111 private void changeWireMockResponse(String s,int statusCode, String bodyContent) {
112 ListStubMappingsResult listStubMappingsResult = Context.wireMockServer.listAllStubMappings();
113 ResponseDefinition responseDefinition = new ResponseDefinition(statusCode,bodyContent);
114 List<StubMapping> mappings = listStubMappingsResult.getMappings();
115 for (StubMapping mapping : mappings) {
116 if (mapping.getRequest().getUrl().equals(s)) {
117 mapping.setResponse(responseDefinition);
128 public void testExecutionTaskSuccess() throws Exception {
130 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
131 executionTaskRepository, ActionType.ADD);
132 ExecutionTask executionTaskB;
135 SoTaskProcessor.processOrderItem(executionTaskA);
136 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
137 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
138 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
139 if (serviceOrderItem.getId().equals("A")) {
140 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
142 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
146 executionTaskB = getExecutionTask("B");
147 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
148 executionTaskA = getExecutionTask("A");
149 assertThat(executionTaskA).isNull();
151 SoTaskProcessor.processOrderItem(executionTaskB);
152 serviceOrderChecked = serviceOrderRepository.findOne("test");
153 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
154 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
155 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
159 assertThat(executionTaskRepository.count()).isEqualTo(0);
166 public void testE2EExecutionTaskSuccess() throws Exception {
168 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucess(serviceOrderRepository,
169 executionTaskRepository, ActionType.ADD);
170 ExecutionTask executionTaskB;
173 SoTaskProcessor.processOrderItem(executionTaskA);
174 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
175 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
176 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
177 if (serviceOrderItem.getId().equals("A")) {
178 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
180 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
184 executionTaskB = getExecutionTask("B");
185 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
186 executionTaskA = getExecutionTask("A");
187 assertThat(executionTaskA).isNull();
189 SoTaskProcessor.processOrderItem(executionTaskB);
190 serviceOrderChecked = serviceOrderRepository.findOne("test");
191 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
192 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
193 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
197 assertThat(executionTaskRepository.count()).isEqualTo(0);
204 public void testExecutionTaskDeleteSuccess() throws Exception {
206 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
207 executionTaskRepository, ActionType.DELETE);
208 ExecutionTask executionTaskB;
211 SoTaskProcessor.processOrderItem(executionTaskA);
212 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
213 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
214 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
215 if (serviceOrderItem.getId().equals("A")) {
216 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
218 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
222 executionTaskB = getExecutionTask("B");
223 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
224 executionTaskA = getExecutionTask("A");
225 assertThat(executionTaskA).isNull();
227 SoTaskProcessor.processOrderItem(executionTaskB);
228 serviceOrderChecked = serviceOrderRepository.findOne("test");
229 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
230 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
231 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
235 assertThat(executionTaskRepository.count()).isEqualTo(0);
242 public void testE2EExecutionTaskDeleteSuccess() throws Exception {
244 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucess(serviceOrderRepository,
245 executionTaskRepository, ActionType.DELETE);
246 ExecutionTask executionTaskB;
249 SoTaskProcessor.processOrderItem(executionTaskA);
250 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
251 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
252 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
253 if (serviceOrderItem.getId().equals("A")) {
254 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
256 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
260 executionTaskB = getExecutionTask("B");
261 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
262 executionTaskA = getExecutionTask("A");
263 assertThat(executionTaskA).isNull();
265 SoTaskProcessor.processOrderItem(executionTaskB);
266 serviceOrderChecked = serviceOrderRepository.findOne("test");
267 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
268 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
269 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
273 assertThat(executionTaskRepository.count()).isEqualTo(0);
281 public void testExecutionTaskFailed() throws Exception {
283 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
284 executionTaskRepository, ActionType.ADD);
286 Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
289 SoTaskProcessor.processOrderItem(executionTaskA);
290 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
291 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
292 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
293 if (serviceOrderItem.getId().equals("A")) {
294 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
296 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
299 executionTaskA = getExecutionTask("A");
300 Date createDate = executionTaskA.getCreateDate();
301 assertThat(executionTaskA.getLastAttemptDate().getTime()> createDate.getTime()).isTrue();
303 changeCreationDate(executionTaskA);
304 SoTaskProcessor.processOrderItem(executionTaskA);
306 serviceOrderChecked = serviceOrderRepository.findOne("test");
307 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
308 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
309 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
313 assertThat(executionTaskRepository.count()).isEqualTo(0);
318 private void changeCreationDate(ExecutionTask executionTaskA) {
319 Calendar cal = Calendar.getInstance();
320 cal.setTime(executionTaskA.getCreateDate());
321 cal.add(Calendar.SECOND, -30);
322 executionTaskA.setCreateDate(cal.getTime());
327 public void testE2EExecutionTaskFailed() throws Exception {
329 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucess(serviceOrderRepository,
330 executionTaskRepository, ActionType.ADD);
332 Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
335 SoTaskProcessor.processOrderItem(executionTaskA);
336 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
337 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
338 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
339 if (serviceOrderItem.getId().equals("A")) {
340 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
342 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
345 executionTaskA = getExecutionTask("A");
346 assertThat(executionTaskA.getLastAttemptDate().getTime()>executionTaskA.getCreateDate().getTime()).isTrue();
347 changeCreationDate(executionTaskA);
348 SoTaskProcessor.processOrderItem(executionTaskA);
350 serviceOrderChecked = serviceOrderRepository.findOne("test");
351 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
352 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
353 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
357 assertThat(executionTaskRepository.count()).isEqualTo(0);
363 public void testExecutionTaskFailedNoSoResponse() throws Exception {
365 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
366 executionTaskRepository, ActionType.ADD);
368 Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances/");
371 SoTaskProcessor.processOrderItem(executionTaskA);
372 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
373 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
374 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
375 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
378 assertThat(executionTaskRepository.count()).isEqualTo(0);
385 public void testExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
387 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
388 executionTaskRepository, ActionType.ADD);
390 Context.removeWireMockMapping("/onap/so/infra/serviceInstantiation/v7/serviceInstances/");
391 Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
394 SoTaskProcessor.processOrderItem(executionTaskA);
395 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
396 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
397 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
398 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
401 assertThat(executionTaskRepository.count()).isEqualTo(0);
406 public void testE2EExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
408 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForE2EExecutionTaskSucess(serviceOrderRepository,
409 executionTaskRepository, ActionType.ADD);
411 Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3");
412 Context.removeWireMockMapping("/onap/so/infra/e2eServiceInstances/v3/serviceId/operations/operationId");
415 SoTaskProcessor.processOrderItem(executionTaskA);
416 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
417 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
418 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
419 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
422 assertThat(executionTaskRepository.count()).isEqualTo(0);
428 public void testExecutionTaskFailedBadRequestSo() throws Exception {
430 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
431 executionTaskRepository, ActionType.ADD);
434 changeWireMockResponse("/onap/so/infra/serviceInstantiation/v7/serviceInstances/",400,"\"serviceException\": {\n"
435 + " \"messageId\": \"SVC0002\",\n"
436 + " \"text\": \"Error parsing request. org.openecomp.mso.apihandler.common.ValidationException: serviceInstance already existsd\"\n"
440 SoTaskProcessor.processOrderItem(executionTaskA);
441 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
442 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
443 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
444 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
447 assertThat(executionTaskRepository.count()).isEqualTo(0);
449 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
450 if(serviceOrderItem.getId().equals("A")) {
451 assertThat(serviceOrderItem.getOrderItemMessage().size()).isEqualTo(1);
452 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getCode()).isEqualTo("105");
453 assertThat(serviceOrderItem.getOrderItemMessage().get(0).getField()).isEqualTo("service.name");
461 public void testExecutionTaskModifySuccess() throws Exception {
463 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
464 executionTaskRepository, ActionType.MODIFY);
465 ExecutionTask executionTaskB;
468 SoTaskProcessor.processOrderItem(executionTaskA);
469 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
470 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
471 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
472 if (serviceOrderItem.getId().equals("A")) {
473 //assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
474 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_ITEM_TO_CREATE);
476 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
479 SoTaskProcessor.processOrderItem(executionTaskA);
480 serviceOrderChecked = serviceOrderRepository.findOne("test");
481 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
482 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
483 if (serviceOrderItem.getId().equals("A")) {
484 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
486 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
490 executionTaskB = getExecutionTask("B");
491 assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty();
492 executionTaskA = getExecutionTask("A");
493 assertThat(executionTaskA).isNull();
495 SoTaskProcessor.processOrderItem(executionTaskB);
496 SoTaskProcessor.processOrderItem(executionTaskB);
498 serviceOrderChecked = serviceOrderRepository.findOne("test");
499 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED);
500 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
501 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED);
505 assertThat(executionTaskRepository.count()).isEqualTo(0);
513 public void testExecutionTaskModifyFailed() throws Exception {
515 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
516 executionTaskRepository, ActionType.MODIFY);
517 ExecutionTask executionTaskB;
518 Context.removeWireMockMapping("/onap/so/infra/orchestrationRequests/v7/requestId");
521 SoTaskProcessor.processOrderItem(executionTaskA);
522 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
523 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS);
524 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
525 if (serviceOrderItem.getId().equals("A")) {
526 //assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS);
527 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.INPROGRESS_MODIFY_REQUEST_DELETE_SEND);
529 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED);
532 executionTaskA = getExecutionTask("A");
533 assertThat(executionTaskA.getLastAttemptDate().getTime()>executionTaskA.getCreateDate().getTime()).isTrue();
534 changeCreationDate(executionTaskA);
535 SoTaskProcessor.processOrderItem(executionTaskA);
537 serviceOrderChecked = serviceOrderRepository.findOne("test");
538 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
539 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
540 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
544 assertThat(executionTaskRepository.count()).isEqualTo(0);
549 public void testExecutionTaskWithoutOnap() throws Exception {
550 Context.stopWiremock();
551 ExecutionTask executionTaskA = ServiceOrderExecutionTaskAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
552 executionTaskRepository, ActionType.ADD);
554 SoTaskProcessor.processOrderItem(executionTaskA);
555 ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
556 assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
557 for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
558 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
560 assertThat(serviceOrderChecked.getOrderMessage().size()).isGreaterThan(0);
561 assertThat(serviceOrderChecked.getOrderMessage().get(0).getCode()).isEqualTo("502");
562 assertThat(serviceOrderChecked.getOrderMessage().get(0).getMessageInformation()).isEqualTo("Problem with SO API");
564 assertThat(executionTaskRepository.count()).isEqualTo(0);
565 Context.startWiremock();