HttpRequestServiceTest.java 4.17 KB
package com.ecar.apm;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import com.ecar.apm.http.client.HttpSequenceHandle;
import com.ecar.apm.model.HttpRequest;
import com.ecar.apm.model.HttpRequestLog;
import com.ecar.apm.model.HttpRequest.HttpMethod;
import com.ecar.apm.model.HttpRequest.ResultType;
import com.ecar.apm.model.HttpSequence;
import com.ecar.apm.model.HttpSequence.MonitorType;
import com.ecar.apm.service.HttpRequestService;
import com.ecar.apm.service.HttpSequenceService;
import com.ecar.apm.util.GuidGenerator;
import com.ecar.apm.util.PostManResolver;


@RunWith(SpringRunner.class)
@SpringBootTest
public class HttpRequestServiceTest {

	@Autowired
	private HttpRequestService httpRequestService;

	@Autowired
	private HttpSequenceService httpSequenceService;
	
	
	@Test
	public void test() throws InterruptedException{
		
	    String guid = insertSingleInstance();
		
		enableMonitor(guid);
		Thread.sleep(30000);
		disableMonitor(guid);
		//deleteMonitor(guid);
		
	}

	

	public void cleanMonitorLogs(){
		httpRequestService.cleanMonitorLogs(4);
	}
	
	public void executeRequest(String guid){
		httpRequestService.executeRequest(guid);
	}
	
	
	public void enableMonitor(String guid){
		httpRequestService.enableMonitor(guid);
	}

	public void disableMonitor(String guid){
		httpRequestService.disableMonitor(guid);
	}
	
	public void deleteMonitor(String guid){
		httpRequestService.deleteMonitor(guid);
	}
	
	public void getAllHttpRequest(){
		List<HttpRequest> list = httpRequestService.getAllHttpRequest();
		for(HttpRequest request : list){
			System.out.println("guid="+request.getHttpMethod());
			
		}
	}

	public void getHttpRequestByGuid(){
		HttpRequest httpRequest = httpRequestService.getHttpRequestByGuid("71456d2b113d4b4a8cb00f0c9f3ccfb2");
		System.out.println(httpRequest.getHttpMethod());
	}

	
	@Transactional
	public String insertSingleInstance(){
		String guid1 = GuidGenerator.generate();
		String guid2 = GuidGenerator.generate();
		HttpSequence httpSequence = new HttpSequence();
		List<HttpRequest> list = new ArrayList<HttpRequest>();
		httpSequence.setGroup("test");
		httpSequence.setGuid(guid1);
		httpSequence.setName(guid1);
		httpSequence.setType(MonitorType.SINGLE);
		HttpRequest httpRequest = new HttpRequest();
		httpRequest.setPguid(guid1);
		httpRequest.setGuid(guid2);
		httpRequest.setSort(1);
		httpRequest.setUrl("http://www.baidu.com");
		httpRequest.setHttpMethod(HttpMethod.GET);

		list.add(httpRequest);
		httpSequence.setHttpRequest(list);
		httpRequestService.insertHttpRequest(httpRequest);
		httpSequenceService.insert(httpSequence);
		return guid1;
	}
	
	@Transactional
	public String insertSequenceInstance(){

		HttpSequence httpSequence = new HttpSequence();
		String guid = GuidGenerator.generate();
		httpSequence.setGroup("test");
		httpSequence.setGuid(guid);
		httpSequence.setName(guid);
		httpSequence.setType(MonitorType.SEQUENCE);

		httpSequenceService.insert(httpSequence);
		//从postman脚本生产request对象
		ArrayList<HttpRequest> requests = PostManResolver.readFromJsonFile("classpath:testfile/testCase.postman_collection1.json");
		//提取变量$$csrf
		HttpRequest request0 = requests.get(0);
		HashMap<String, String> variables = request0.getVariablesMap();
		variables.put("$$csrf", "//meta[@name='X-CSRF-TOKEN']/@content");
		request0.setResultType(ResultType.XML);
		request0.setVariablesMap(variables);
		//设置参数_csrf
		HttpRequest request1 = requests.get(1);
		HashMap<String, String> params = request1.getParametersMap();
		params.put("_csrf", "$$csrf");
		request1.setParametersMap(params);
		
		for(int i=0;i<requests.size();i++){
			HttpRequest item = requests.get(i);
			String id = GuidGenerator.generate();
			item.setGuid(id);
			item.setPguid(guid);
			item.setSort(i+1);
			httpRequestService.insertHttpRequest(item);
		}
		
		//执行接口链
		httpSequence.setHttpRequest(requests);
		return guid;
	}
}