package com.produban.openbus.console.domain;
import java.io.IOException;
import java.net.URI;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.client.RestTemplate;
import com.produban.openbus.console.repository.TableCepRepository;
import com.produban.openbus.console.service.MetricaOnLineService;
import com.produban.openbus.console.service.OrigenEstructuradoService;
import com.produban.openbus.console.service.QueryCepService;
import com.produban.openbus.console.service.StreamCepService;
import com.produban.openbus.console.service.TableCepService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:META-INF/spring/*.xml")
public class TestMetricasOnLine {
@Autowired
private TableCepService tableCepService;
@Autowired
private TableCepRepository tableCepRepository;
@Autowired
private QueryCepService queryCepService;
@Autowired
private MetricaOnLineService metricaOnLineService;
@Autowired
private OrigenEstructuradoService origenService;
@Autowired
private StreamCepService streamService;
public void testCreateOrigen() {
CamposOrigen campo = new CamposOrigen();
campo.setNombreCampo("");
OrigenEstructurado origen = new OrigenEstructurado();
origen.setIsKafkaOnline(true);
origen.setKafkaTopic("ob_src_postfix");
origen.setTopologyName("ob_src_postfix");
}
@Test
public void testCreate() {
String queryFinal = "from streamPostfix[DSN=='2.0.0' or DSN=='2.6.0' or DSN=='2.4.0']#window.time(20000) as resp "+
"join "+
"streamPostfix[ USERFROM != 'null' and SIZE >0 ]#window.time(20000) as tam "+
"on resp.MSGID==tam.MSGID "+
"insert all-events into respuestasOK "+
"tam.MSGID as MSG,resp.DSN as DSN,sum(tam.SIZE) as TAMANO group by tam.MSGID,tam.DSN;";
String querydef = "from streamPostfix[DSN=='2.0.0' or DSN=='2.6.0' or DSN=='2.4.0']#window.time(20000) as resp "+
"join "+
"streamPostfix[ USERFROM != 'null' and SIZE >0 ]#window.time(20000) as tam "+
"on resp.MSGID==tam.MSGID ";
String outputUser = "tam.MSGID as MSG,resp.DSN as DSN,sum(tam.SIZE) as TAMANO";
String outputNames = "tam.MSGID,resp.DSN,sum(tam.SIZE)";
String outputStream = "insert all-events into respuestasOK ";
String groupBy = "group by tam.MSGID,tam.DSN;";
OrigenEstructurado origen = origenService.findOrigenEstructurado(new Long(5));
StreamCep streamCep = new StreamCep();
streamCep.setStreamName("prueba");
streamCep.setOrigenEstructurado(origen);
MetricaOnLine metricaOnLine = new MetricaOnLine();
metricaOnLine.setOnLineMetricName("Prueba 1 metrica online");
metricaOnLine.setStreamCep(streamCep);
QueryCep queryCep = new QueryCep();
Set<QueryCep> sQueryCep = new HashSet<QueryCep>();
queryCep.setGroupBy(groupBy);
queryCep.setHasCallback(false);
queryCep.setOutputFieldNames(outputNames);
queryCep.setOutputFieldUser(outputUser);
queryCep.setOutputStream(outputStream);
queryCep.setQueryCepId(null);
queryCep.setQueryDefinition(querydef);
queryCep.setQueryFinal(queryFinal);
queryCep.setQueryName("prueba");
sQueryCep.add(queryCep);
metricaOnLine.setHsQueryCep(sQueryCep);
//metricaOnLineService.saveMetricaOnLine(metricaOnLine);
}
public void testDelete() {/*
QueryCep queryCep = queryCepService.findQueryCep(new Long(7));
queryCepService.deleteQueryCep(queryCep);*/
MetricaOnLine metricaOnLine = metricaOnLineService.findMetricaOnLine(new Long(1));
for (TableCep table : metricaOnLine.getHsTableCep()){
if (table.getId().equals(new Long(3))){
metricaOnLine.getHsTableCep().remove(table);
}
}
metricaOnLineService.updateMetricaOnLine(metricaOnLine);
}
public void testFindAllQueryCep() {
List<QueryCep> lstQueryCep = queryCepService.findAllQueryCeps();
for (QueryCep queryCep : lstQueryCep){
ObjectMapper mapper = new ObjectMapper();
try {
System.out.println(mapper.writeValueAsString(queryCep));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void testFindAllMetricaOnLine() {
List<MetricaOnLine> lstMetricaOnLine = metricaOnLineService.findAllMetricaOnLines();
for (MetricaOnLine metricaOnLine : lstMetricaOnLine){
ObjectMapper mapper = new ObjectMapper();
try {
System.out.println(mapper.writeValueAsString(metricaOnLine));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void updateMetricaOnLine(){
RestTemplate restTemplate = new RestTemplate();
MetricaOnLine metricaOnLine = metricaOnLineService.findMetricaOnLine(new Long(1));
restTemplate.put("http://localhost:8080//web_console/online/updateOnLineMetric", metricaOnLine, MetricaOnLine.class);
}
public void deleteMetricaOnLine(){
class HttpEntityEnclosingDeleteRequest extends HttpEntityEnclosingRequestBase {
public HttpEntityEnclosingDeleteRequest(final URI uri) {
super();
setURI(uri);
}
@Override
public String getMethod() {
return "DELETE";
}
}
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory() {
@Override
protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) {
if (HttpMethod.DELETE == httpMethod) {
return new HttpEntityEnclosingDeleteRequest(uri);
}
return super.createHttpUriRequest(httpMethod, uri);
}
});
MetricaOnLine metricaOnLine = metricaOnLineService.findMetricaOnLine(new Long(13));
HttpEntity<MetricaOnLine> request = new HttpEntity<MetricaOnLine>(metricaOnLine);
restTemplate.exchange("http://localhost:8080//web_console/online/deleteOnLineMetric", HttpMethod.DELETE, request, MetricaOnLine.class);
}
}