Package com.betfair.cougar.testing.concurrency

Source Code of com.betfair.cougar.testing.concurrency.RestSustainedPostRequestsJETTTest

/*
* Copyright 2013, The Sporting Exchange Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.betfair.cougar.testing.concurrency;

import com.betfair.testing.utils.cougar.beans.HttpCallBean;
import com.betfair.testing.utils.cougar.beans.HttpResponseBean;
import com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum;
import com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum;
import com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum;
import com.betfair.testing.utils.cougar.manager.CougarManager;
import com.betfair.testing.utils.cougar.misc.XMLHelpers;
import org.w3c.dom.Document;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class RestSustainedPostRequestsJETTTest {

  private XMLHelpers xHelpers = new XMLHelpers();
  private CougarManager cougarManager = CougarManager.getInstance();
  private static final int OK_STATUS_CODE = 200;
 
  public RestSustainedPostRequestsTestResultBean executeTest(Integer numberOfRequests, CougarMessageProtocolRequestTypeEnum protocolRequestType, CougarMessageContentTypeEnum responseContentType) {
   
    List<HttpCallBean> httpCallBeans = new ArrayList<HttpCallBean>();
    Map<String, HttpResponseBean> expectedResponses = new LinkedHashMap<String, HttpResponseBean>();
    Map<String, HttpResponseBean> actualResponses = new LinkedHashMap<String, HttpResponseBean>();
    Map<String, Timestamp> expectedRequestTimes = new LinkedHashMap<String, Timestamp>();
    
   
    for (int i = 0; i < numberOfRequests+1; i++) {
      //Setup call beans
      HttpCallBean callBean = createComplexCallBean(responseContentType, i);
      httpCallBeans.add(callBean);
     
      //Store expected responses
      HttpResponseBean responseBean = createExpectedResponse(responseContentType, callBean, i);
      expectedResponses.put("Response " + i, responseBean);
    }
   
    //Make the calls
    int loopCounter = 0;
    for(HttpCallBean callBean: httpCallBeans) {
      Date time = new Date();     
      expectedRequestTimes.put("Response " + loopCounter, new Timestamp(time.getTime()));
     
      cougarManager.makeRestCougarHTTPCall(callBean, protocolRequestType);
      loopCounter++;
    }
   
   
    //Get actual responses
    loopCounter=0;
    for (HttpCallBean httpCallBean: httpCallBeans) {
      HttpResponseBean responseBean = httpCallBean.getResponseObjectsByEnum(CougarMessageProtocolResponseTypeEnum.REST);
      responseBean.setResponseHeaders(null);
      actualResponses.put("Response " + loopCounter, responseBean);
      loopCounter++;
    }
   
    //Set the expected response time
    for(Map.Entry<String, HttpResponseBean> entry: expectedResponses.entrySet()){
      HttpResponseBean responseBean = entry.getValue();
      String keyString = entry.getKey();
      Timestamp requestTime = expectedRequestTimes.get(keyString);
      responseBean.setRequestTime(requestTime);
      responseBean.setResponseTime(requestTime);
    }
   
    RestSustainedPostRequestsTestResultBean returnBean = new RestSustainedPostRequestsTestResultBean();
    returnBean.setActualResponses(actualResponses);
    returnBean.setExpectedResponses(expectedResponses);
    return returnBean; 
  }
 
  private HttpCallBean createComplexCallBean(CougarMessageContentTypeEnum responseContentType, int i){
   
    HttpCallBean callBean = new HttpCallBean();
    callBean.setServiceName("baseline","cougarBaseline");
    callBean.setVersion("v2");
    callBean.setOperationName("testComplexMutator","complex");
         
    Map<String, String> acceptProtocols = new HashMap<String,String>();
    switch (responseContentType) {
    case JSON:
      acceptProtocols.put("application/json", "");
      break;
    case XML:
      acceptProtocols.put("application/xml", "");
      break;
    }
    callBean.setAcceptProtocols(acceptProtocols);
   
    String requestXmlString = "";
    requestXmlString = "<message><name>sum</name><value1> " + i + "</value1><value2>" + i + "</value2></message>";
    Document requestDocument = xHelpers.getXMLObjectFromString(requestXmlString);
    callBean.setRestPostQueryObjects(requestDocument);
   
    return callBean;
  }
 
  private HttpResponseBean createExpectedResponse(CougarMessageContentTypeEnum responseContentType, HttpCallBean callBean, int i){
   
    HttpResponseBean responseBean = new HttpResponseBean();
    String responseXmlString = "<SimpleResponse><message>sum = " + i*2 + "</message></SimpleResponse>";
    Document responseBaseObject = xHelpers.getXMLObjectFromString(responseXmlString);
    Map<CougarMessageProtocolRequestTypeEnum, Object> builtExpectedResponse = cougarManager.convertResponseToRestTypes(responseBaseObject, callBean);
    switch (responseContentType) {
    case XML:
      responseBean.setResponseObject(builtExpectedResponse.get(CougarMessageProtocolRequestTypeEnum.RESTXML));
      break;
    case JSON:
      responseBean.setResponseObject(builtExpectedResponse.get(CougarMessageProtocolRequestTypeEnum.RESTJSON));
      break;
    }
    responseBean.setHttpStatusCode(OK_STATUS_CODE);
    responseBean.setHttpStatusText("OK");
   
    return responseBean;

  }
 
  public static class RestSustainedPostRequestsTestResultBean {
   
    private Map<String, HttpResponseBean> expectedResponses = new LinkedHashMap<String, HttpResponseBean>();
    private Map<String, HttpResponseBean> actualResponses = new LinkedHashMap<String, HttpResponseBean>();
   
    public Map<String, HttpResponseBean> getActualResponses() {
      return actualResponses;
    }
    public void setActualResponses(Map<String, HttpResponseBean> actualResponses) {
      this.actualResponses = actualResponses;
    }
    public Map<String, HttpResponseBean> getExpectedResponses() {
      return expectedResponses;
    }
    public void setExpectedResponses(Map<String, HttpResponseBean> expectedResponses) {
      this.expectedResponses = expectedResponses;
    }
   
  }
 
}
TOP

Related Classes of com.betfair.cougar.testing.concurrency.RestSustainedPostRequestsJETTTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.