提交 7674dcfe 编写于 作者: U unknown

modify the pom of sonar,modify the failure js

上级 d00061e1
......@@ -91,6 +91,14 @@ public class FailureReportAnalyzer extends AbstractMessageAnalyzer<FailureReport
return new ArrayList<String>(result);
}
public Map<String, FailureReport> getReports() {
return m_reports;
}
public void setReports(Map<String, FailureReport> reports) {
m_reports = reports;
}
private FailureReport getReportByDomainAndIp(String domain, String ip) {
String domainAndIp = new StringBuffer().append(domain).append(":").append(ip).toString();
FailureReport report = m_reports.get(domainAndIp);
......
......@@ -113,4 +113,5 @@ public class FailureAnalyzerStoreTest extends ComponentTestCase {
String exceptedResult = FailureReportStore.getStoreString(targetReport);
Assert.assertEquals("Check file content!", exceptedResult, realResult);
}
}
......@@ -33,7 +33,7 @@ public class FailureAnalyzerTest extends ComponentTestCase {
long current = System.currentTimeMillis();
long duration = 60 * 60 * 1000;
long extraTime = 5 * 60 * 1000;
long start = current - current % (60 * 60 * 1000) -HOUR;
long start = current - current % (60 * 60 * 1000) - HOUR;
AnalyzerFactory factory = lookup(AnalyzerFactory.class);
FailureReportAnalyzer analyzer = (FailureReportAnalyzer) factory.create("failure", start, duration, m_domain,
......@@ -94,7 +94,7 @@ public class FailureAnalyzerTest extends ComponentTestCase {
FailureReport report = analyzer.generateByDomainAndIp(m_domain, m_host);
assertEquals("Check the domain", report.getDomain(), "domain1");
assertEquals("Check the machines", m_host,report.getMachine());
assertEquals("Check the machines", m_host, report.getMachine());
assertEquals("Check the threads", threadNumber, report.getThreads().getThreads().size());
Date startDate = report.getStartTime();
......@@ -115,9 +115,9 @@ public class FailureAnalyzerTest extends ComponentTestCase {
for (int i = 0; i < number / 10; i++) {
String minuteStr = sdf2.format(startDate);
Segment temp = segments.get(minuteStr);
List<Entry> entries = temp.getEntries();
if (entries == null) {
System.out.println(minuteStr);
} else {
......@@ -155,7 +155,7 @@ public class FailureAnalyzerTest extends ComponentTestCase {
}
FailureReport report = analyzer.generateByDomainAndIp(domain, m_host);
assertEquals("Check the machines", m_host,report.getMachine());
assertEquals("Check the machines", m_host, report.getMachine());
assertEquals("Check the domain", report.getDomain(), "domain1");
Date startDate = report.getStartTime();
......@@ -181,4 +181,67 @@ public class FailureAnalyzerTest extends ComponentTestCase {
startDate.setTime(startDate.getTime() + 1000 * 60);
}
}
@Test
public void testManyDomainAndIp() throws Exception {
long current = System.currentTimeMillis();
long duration = 60 * 60 * 1000;
long extraTime = 5 * 60 * 1000;
long start = current - current % (60 * 60 * 1000) - HOUR;
String baseDaomain = "domain";
String baseIp = "192.168.1.";
AnalyzerFactory factory = lookup(AnalyzerFactory.class);
FailureReportAnalyzer analyzer = (FailureReportAnalyzer) factory
.create("failure", start, duration, "", extraTime);
int number = 60;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int index = 0; index < number; index++) {
DefaultTransaction t = new DefaultTransaction("A1", "B1", null);
MessageTree tree = new DefaultMessageTree();
tree.setMessageId("thread0001");
tree.setDomain(baseDaomain + i);
tree.setIpAddress(baseIp + j);
tree.setMessage(t);
t.setDuration(3 * 1000);
t.setTimestamp(start + 1000L * 60 * index);
analyzer.process(tree);
}
}
}
Map<String, FailureReport> reports = analyzer.getReports();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
FailureReport report = reports.get(baseDaomain + i + ":" + baseIp + j);
assertEquals("Check the report is not null", report == null, false);
assertEquals("Check the machine", baseIp + j, report.getMachine());
assertEquals("Check the domain", baseDaomain + i, report.getDomain());
Date startDate = report.getStartTime();
Date endDate = report.getEndTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startStr = sdf.format(startDate);
String endStr = sdf.format(endDate);
Date realStartDate = new Date(start);
Date realEndDate = new Date(start + duration - 60 * 1000);
assertEquals("Check the report start time", sdf.format(realStartDate), startStr);
assertEquals("Check the report end time", sdf.format(realEndDate), endStr);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Map<String, Segment> segments = report.getSegments();
for (int k = 0; k < 60; k++) {
String minuteStr = sdf2.format(startDate);
Segment temp = segments.get(minuteStr);
assertEquals("Check the segment size ",temp.getEntries().size(), 1);
startDate.setTime(startDate.getTime() + 1000 * 60);
}
}
}
}
}
......@@ -5,6 +5,7 @@ import java.io.IOException;
import java.util.Date;
import java.util.Map;
import com.dianping.cat.consumer.failure.FailureReportAnalyzer;
import com.dianping.cat.consumer.failure.model.entity.FailureReport;
import com.dianping.cat.consumer.failure.model.entity.Segment;
import com.dianping.cat.consumer.failure.model.entity.Threads;
......@@ -13,19 +14,21 @@ import com.dianping.cat.tool.DateUtil;
import com.site.helper.Files;
public class FailureData {
private static final int CURRENT=1;
public String getFailureJsonDate(FailureReport report) {
private static String getFailureJsonDate(FailureReport report) {
DefaultJsonBuilder builder = new DefaultJsonBuilder();
report.accept(builder);
return builder.getString();
}
/*public String getFailureDataFromMemory(FailureReportAnalyzer analyzer, String domain) {
FailureReport report = analyzer.generateByDomain(domain);
public static String getFailureDataFromMemory(FailureReportAnalyzer analyzer, String domain, String ip) {
FailureReport report = analyzer.generateByDomainAndIp(domain, ip);
return getFailureJsonDate(report);
}
*/
public String getFailureDataFromFile(String basePath, String file) {
public static String getFailureDataFromFile(String basePath, String file) {
String result = "";
try {
result = Files.forIO().readFrom(new File(basePath + file), "utf-8");
......@@ -36,19 +39,20 @@ public class FailureData {
return result;
}
public String getFailureDataByNew(int pos, String domain) {
public static String getFailureDataByNew(int pos, String domain, String ip) {
long currentTime = System.currentTimeMillis();
long currentStart = currentTime - currentTime % DateUtil.HOUR;
long lastStart = currentTime - currentTime % DateUtil.HOUR - DateUtil.HOUR;
Date date = new Date();
if (pos == 1) {
if (pos == CURRENT) {
date.setTime(currentStart);
} else {
date.setTime(lastStart);
}
FailureReport report = new FailureReport();
//TODO
//report.setMachines(new Machines());
report.setMachine(ip);
report.setThreads(new Threads());
report.setStartTime(date);
report.setEndTime(new Date(date.getTime() + DateUtil.HOUR - DateUtil.MINUTE));
......
package com.dianping.cat.report.page.failure;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import com.dianping.cat.consumer.RealtimeConsumer;
import com.dianping.cat.consumer.failure.FailureReportAnalyzer;
import com.dianping.cat.consumer.failure.model.entity.FailureReport;
import com.dianping.cat.consumer.failure.model.entity.Segment;
import com.dianping.cat.consumer.failure.model.entity.Threads;
import com.dianping.cat.consumer.failure.model.transform.DefaultJsonBuilder;
import com.dianping.cat.message.spi.MessageConsumer;
import com.dianping.cat.report.ReportPage;
import com.site.helper.Files;
import com.site.lookup.annotation.Inject;
import com.site.web.mvc.PageHandler;
import com.site.web.mvc.annotation.InboundActionMeta;
......@@ -52,32 +45,6 @@ public class Handler implements PageHandler<Context> {
@Inject(type = MessageConsumer.class, value = "realtime")
private RealtimeConsumer m_consumer;
private FailureReport getFailureReport(int pos, String domain) {
long currentTime = System.currentTimeMillis();
long currentStart = currentTime - currentTime % HOUR;
long lastStart = currentTime - currentTime % HOUR - HOUR;
Date date = new Date();
if (pos == 1) {
date.setTime(currentStart);
} else {
date.setTime(lastStart);
}
FailureReport report = new FailureReport();
//report.setMachines(new Machines());
report.setThreads(new Threads());
report.setStartTime(date);
report.setEndTime(new Date(date.getTime() + HOUR - MINUTE));
report.setDomain(domain);
long start = report.getStartTime().getTime();
long endTime = report.getEndTime().getTime();
Map<String, Segment> segments = report.getSegments();
for (; start <= endTime; start = start + 60 * 1000) {
String minute = SDF_SEG.format(new Date(start));
segments.put(minute, new Segment(minute));
}
return report;
}
private String getFailureReportName(Payload payload, Model model) {
long currentTimeMillis = System.currentTimeMillis();
long currentTime = currentTimeMillis;
......@@ -125,17 +92,6 @@ public class Handler implements PageHandler<Context> {
return result.toString();
}
private String getJsonResultFromFile(String basePath, String file) {
String result = "";
try {
result = Files.forIO().readFrom(new File(basePath + file), "utf-8");
result = result.substring(result.indexOf("<body>") + 6, result.indexOf("</body>"));
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
@PayloadMeta(Payload.class)
@InboundActionMeta(name = "f")
......@@ -151,7 +107,6 @@ public class Handler implements PageHandler<Context> {
model.setPage(ReportPage.FAILURE);
Payload payload = ctx.getPayload();
FailureReportAnalyzer analyzerForPage = (FailureReportAnalyzer) m_consumer.getCurrentAnalyzer("failure");
//Set all domain of page
......@@ -159,8 +114,6 @@ public class Handler implements PageHandler<Context> {
Collections.sort(domains);
model.setDomains(domains);
//Set all ip of the domain
//Set the default domain and default ip
String domain = payload.getDomain();
if (null == domain) {
......@@ -192,6 +145,7 @@ public class Handler implements PageHandler<Context> {
String file = getFailureReportName(payload, model);
domain = model.getCurrentDomain();
ip = model.getCurrentIp();
String jsonResult="";
if (file.equals(MEMORY_CURRENT) || file.equals(MEMORY_LAST)) {
FailureReportAnalyzer analyzer;
int pos = 0;
......@@ -202,21 +156,16 @@ public class Handler implements PageHandler<Context> {
analyzer = (FailureReportAnalyzer) m_consumer.getLastAnalyzer("failure");
pos = 0;
}
FailureReport report;
if (analyzer == null) {
report = getFailureReport(pos, domain);
jsonResult= FailureData.getFailureDataByNew(pos, domain, ip);
} else {
report = analyzer.generateByDomainAndIp(domain,ip);
jsonResult = FailureData.getFailureDataFromMemory(analyzer, domain, ip);
}
DefaultJsonBuilder builder = new DefaultJsonBuilder();
report.accept(builder);
model.setJsonResult(builder.getString());
} else {
String baseFilePath = analyzerForPage.getReportPath();
model.setJsonResult(getJsonResultFromFile(baseFilePath, file));
jsonResult =FailureData.getFailureDataFromFile(baseFilePath, file);
}
model.setJsonResult(jsonResult);
m_jspViewer.view(ctx, model);
}
}
......@@ -2,25 +2,27 @@ function generateTable(wrap, json) {
var table = $('<table />').addClass('report-table'), caption = $('<caption />'), thead = $('<thead />'), thr = $(
'<tr />').appendTo(thead), threads = json.threads.threads, ths = [ "Minute" ]
.concat(threads);
if(threads==null){
threads =[];
if (threads == null) {
threads = [];
}
/*caption.html(
"From " + json.startTime + " To " + json.endTime
+ " Failure Report Domain:" + json.domain).appendTo(table);*/
/*
* caption.html( "From " + json.startTime + " To " + json.endTime + "
* Failure Report Domain:" + json.domain).appendTo(table);
*/
thead.appendTo(table);
ths.forEach(function(th) {
var temp = $('<th />').html(th);
if(temp!="")
var temp = $('<th />').html(th);
if (temp != "")
temp.appendTo(thr);
});
/*$('<tr />').append(
$('<td />').attr('colspan', threads.length + 1).html(
"machines:" + json.machines.machines.join(','))).appendTo(
table);*/
/*
* $('<tr />').append( $('<td />').attr('colspan', threads.length +
* 1).html( "machines:" + json.machines.machines.join(','))).appendTo(
* table);
*/
for ( var key in json.segments) {
var seg = json.segments[key];
var tr = $('<tr />'), tds = [];
......@@ -33,23 +35,23 @@ function generateTable(wrap, json) {
if (seg.entries == null) {
seg.entries = [];
}
seg.entries
.forEach(function(entry) {
var index = threads.indexOf(entry.threadId), td = tds[index], type = entry.type, anchor = $(
'<a />').attr("href",
"m/" + entry.path).addClass(type).html(entry.text);
seg.entries
.forEach(function(entry) {
var index = threads.indexOf(entry.threadId), td = tds[index], type = entry.type, anchor = $(
'<a />').attr("href", "m/" + entry.path).addClass(
type).html(entry.text);
if (td.html()) {
td.append($('<br />'));
}
if (td.html()) {
td.append($('<br />'));
}
if (!type) {
type = "Other";
}
td.append(anchor);
});
tr.appendTo(table);
if (!type) {
type = "Other";
}
td.append(anchor);
});
tr.appendTo(table);
}
$(wrap).append(table);
}
......@@ -57,8 +59,7 @@ function generateTable(wrap, json) {
generateTable('#failureTable', jsonData);
var currentDomain = $("#currentDomain").val();
$("#domain-"+currentDomain).css("background", "#FFCC00");
$("#domain-" + currentDomain).css("background", "#FFCC00");
var currentIp = $("#currentIp").val();
$("a[data-id='ip-"+currentIp+"']").css("background", "#FFCC00");
$("a[data-id='ip-" + currentIp + "']").css("background", "#FFCC00");
......@@ -164,6 +164,11 @@ org.eclipse.jdt.core.compiler.compliance=1.6
</additionalConfig>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.13</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
......@@ -195,4 +200,17 @@ org.eclipse.jdt.core.compiler.compliance=1.6
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>
<profiles>
<profile>
<id>sonar</id>
<properties>
<sonar.jdbc.url>
jdbc:mysql://192.168.8.22:3306/sonar?useUnicode=true&amp;characterEncoding=utf-8
</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>123456</sonar.jdbc.password>
<sonar.host.url>http://192.168.8.22:9000/sonar</sonar.host.url>
</properties>
</profile></profiles>
</project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册