提交 c6c79306 编写于 作者: A ainilife

Refactor unit tests for transaction and event

上级 2e3133b9
...@@ -11,6 +11,7 @@ import com.dianping.cat.consumer.core.ProblemHandlerTest; ...@@ -11,6 +11,7 @@ import com.dianping.cat.consumer.core.ProblemHandlerTest;
import com.dianping.cat.consumer.core.ProblemReportAggregationTest; import com.dianping.cat.consumer.core.ProblemReportAggregationTest;
import com.dianping.cat.consumer.core.aggregation.CompositeFormatTest; import com.dianping.cat.consumer.core.aggregation.CompositeFormatTest;
import com.dianping.cat.consumer.core.aggregation.DefaultFormatTest; import com.dianping.cat.consumer.core.aggregation.DefaultFormatTest;
import com.dianping.cat.consumer.event.EventAnalyzerTest;
import com.dianping.cat.consumer.transaction.TransactionAnalyzerTest; import com.dianping.cat.consumer.transaction.TransactionAnalyzerTest;
import com.dianping.cat.consumer.transaction.TransactionReportFilterTest; import com.dianping.cat.consumer.transaction.TransactionReportFilterTest;
import com.dianping.cat.consumer.transaction.TransactionReportTest; import com.dianping.cat.consumer.transaction.TransactionReportTest;
...@@ -28,12 +29,17 @@ GsonTest.class, ...@@ -28,12 +29,17 @@ GsonTest.class,
NumberFormatTest.class, NumberFormatTest.class,
/* transaction */
TransactionAnalyzerTest.class, TransactionAnalyzerTest.class,
TransactionReportTest.class, TransactionReportTest.class,
TransactionReportFilterTest.class, TransactionReportFilterTest.class,
/* event */
EventAnalyzerTest.class,
CompositeFormatTest.class, CompositeFormatTest.class,
DefaultFormatTest.class, DefaultFormatTest.class,
......
...@@ -4,6 +4,8 @@ import java.util.HashSet; ...@@ -4,6 +4,8 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Constants; import com.dianping.cat.Constants;
import com.dianping.cat.service.DefaultReportManager.StoragePolicy; import com.dianping.cat.service.DefaultReportManager.StoragePolicy;
import com.dianping.cat.service.ReportDelegate; import com.dianping.cat.service.ReportDelegate;
...@@ -11,18 +13,12 @@ import com.dianping.cat.service.ReportManager; ...@@ -11,18 +13,12 @@ import com.dianping.cat.service.ReportManager;
public class MockReportManager<T> implements ReportManager<T> { public class MockReportManager<T> implements ReportManager<T> {
@Inject
private ReportDelegate<T> m_delegate; private ReportDelegate<T> m_delegate;
private T m_report; private T m_report;
private Set<String> m_set; private Set<String> m_set;
public MockReportManager(ReportDelegate<T> delegate,String domain) {
m_delegate = delegate;
m_set = new HashSet<String>();
m_set.add(domain);
}
@Override @Override
public void cleanup() { public void cleanup() {
...@@ -34,15 +30,21 @@ public class MockReportManager<T> implements ReportManager<T> { ...@@ -34,15 +30,21 @@ public class MockReportManager<T> implements ReportManager<T> {
@Override @Override
public Set<String> getDomains(long startTime) { public Set<String> getDomains(long startTime) {
if (m_set == null) {
m_set = new HashSet<String>();
m_set.add("group");
}
return m_set; return m_set;
} }
@Override @Override
public T getHourlyReport(long startTime, String domain, boolean createIfNotExist) { public T getHourlyReport(long startTime, String domain, boolean createIfNotExist) {
if(m_report == null){ if (m_report == null) {
m_report = m_delegate.makeReport(domain, startTime, Constants.HOUR); m_report = m_delegate.makeReport(domain, startTime, Constants.HOUR);
} }
return m_report; return m_report;
} }
......
package com.dianping.cat.consumer.event;
import java.util.ArrayList;
import java.util.List;
import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import org.unidal.lookup.configuration.Component;
import com.dianping.cat.consumer.MockReportManager;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.service.ReportManager;
public class Configurator extends AbstractResourceConfigurator {
public static void main(String[] args) {
generatePlexusComponentsXmlFile(new Configurator());
}
protected Class<?> getTestClass() {
return EventAnalyzerTest.class;
}
@Override
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
final String ID = EventAnalyzer.ID;
all.add(C(ReportManager.class, ID, MockReportManager.class)//
.req(ReportDelegate.class, ID, "m_delegate"));
all.add(C(ReportDelegate.class, ID, ExtendedEventDelegate.class));
return all;
}
public static class ExtendedEventDelegate extends EventDelegate{
}
}
...@@ -7,15 +7,13 @@ import org.junit.Test; ...@@ -7,15 +7,13 @@ import org.junit.Test;
import org.unidal.helper.Files; import org.unidal.helper.Files;
import org.unidal.lookup.ComponentTestCase; import org.unidal.lookup.ComponentTestCase;
import com.dianping.cat.consumer.MockReportManager; import com.dianping.cat.analysis.MessageAnalyzer;
import com.dianping.cat.consumer.event.model.entity.EventReport; import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.message.Message; import com.dianping.cat.message.Message;
import com.dianping.cat.message.internal.DefaultEvent; import com.dianping.cat.message.internal.DefaultEvent;
import com.dianping.cat.message.internal.DefaultTransaction; import com.dianping.cat.message.internal.DefaultTransaction;
import com.dianping.cat.message.spi.MessageTree; import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree; import com.dianping.cat.message.spi.internal.DefaultMessageTree;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.service.ReportManager;
public class EventAnalyzerTest extends ComponentTestCase { public class EventAnalyzerTest extends ComponentTestCase {
...@@ -26,32 +24,28 @@ public class EventAnalyzerTest extends ComponentTestCase { ...@@ -26,32 +24,28 @@ public class EventAnalyzerTest extends ComponentTestCase {
private String m_domain = "group"; private String m_domain = "group";
@Before @Before
public void init() { public void setUp() throws Exception {
super.setUp();
m_timestamp = System.currentTimeMillis() - System.currentTimeMillis() % (3600 * 1000); m_timestamp = System.currentTimeMillis() - System.currentTimeMillis() % (3600 * 1000);
ReportDelegate<EventReport> deleaate = new EventDelegate(); m_analyzer = (EventAnalyzer) lookup(MessageAnalyzer.class, EventAnalyzer.ID);
ReportManager<EventReport> reportManager = new MockReportManager<EventReport>(deleaate, m_domain);
m_analyzer = new EventAnalyzer();
m_analyzer.setReportManager(reportManager);
} }
@Test @Test
public void testProcessTransaction() throws Exception { public void testProcess() throws Exception {
for (int i = 1; i <= 1000; i++) { for (int i = 1; i <= 1000; i++) {
MessageTree tree = newMessageTree(i); MessageTree tree = generateMessageTree(i);
m_analyzer.process(tree); m_analyzer.process(tree);
} }
EventReport report = m_analyzer.getReport(m_domain); EventReport report = m_analyzer.getReport(m_domain);
String expected = Files.forIO().readFrom(getClass().getResourceAsStream("EventAnalyzerTest.xml"), "utf-8"); String expected = Files.forIO().readFrom(getClass().getResourceAsStream("event_analyzer.xml"), "utf-8");
Assert.assertEquals(expected.replaceAll("\\s*", ""), report.toString().replaceAll("\\s*", "")); Assert.assertEquals(expected.replaceAll("\r", ""), report.toString().replaceAll("\r", ""));
} }
protected MessageTree newMessageTree(int i) { protected MessageTree generateMessageTree(int i) {
MessageTree tree = new DefaultMessageTree(); MessageTree tree = new DefaultMessageTree();
tree.setMessageId("" + i); tree.setMessageId("" + i);
......
package com.dianping.cat.consumer.transaction;
import java.util.ArrayList;
import java.util.List;
import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import org.unidal.lookup.configuration.Component;
import com.dianping.cat.consumer.MockReportManager;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.service.ReportManager;
public class Configurator extends AbstractResourceConfigurator {
public static void main(String[] args) {
generatePlexusComponentsXmlFile(new Configurator());
}
protected Class<?> getTestClass() {
return TransactionAnalyzerTest.class;
}
@Override
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
final String ID = TransactionAnalyzer.ID;
all.add(C(ReportManager.class, ID, MockReportManager.class)//
.req(ReportDelegate.class, ID, "m_delegate"));
all.add(C(ReportDelegate.class, ID, ExtendedTransactionDelegate.class));
return all;
}
public static class ExtendedTransactionDelegate extends TransactionDelegate {
}
}
...@@ -7,15 +7,12 @@ import org.junit.Test; ...@@ -7,15 +7,12 @@ import org.junit.Test;
import org.unidal.helper.Files; import org.unidal.helper.Files;
import org.unidal.lookup.ComponentTestCase; import org.unidal.lookup.ComponentTestCase;
import com.dianping.cat.ServerConfigManager; import com.dianping.cat.analysis.MessageAnalyzer;
import com.dianping.cat.consumer.MockReportManager;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.message.Message; import com.dianping.cat.message.Message;
import com.dianping.cat.message.internal.DefaultTransaction; import com.dianping.cat.message.internal.DefaultTransaction;
import com.dianping.cat.message.spi.MessageTree; import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree; import com.dianping.cat.message.spi.internal.DefaultMessageTree;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.service.ReportManager;
public class TransactionAnalyzerTest extends ComponentTestCase { public class TransactionAnalyzerTest extends ComponentTestCase {
private long m_timestamp; private long m_timestamp;
...@@ -25,25 +22,22 @@ public class TransactionAnalyzerTest extends ComponentTestCase { ...@@ -25,25 +22,22 @@ public class TransactionAnalyzerTest extends ComponentTestCase {
private String m_domain = "group"; private String m_domain = "group";
@Before @Before
public void init() { public void setUp() throws Exception {
m_timestamp = System.currentTimeMillis() - System.currentTimeMillis() % (3600 * 1000); super.setUp();
ReportDelegate<TransactionReport> transactionDelegate = new TransactionDelegate(); m_timestamp = System.currentTimeMillis() - System.currentTimeMillis() % (3600 * 1000);
ServerConfigManager serverConfigManager = new ServerConfigManager();
ReportManager<TransactionReport> reportManager = new MockReportManager<TransactionReport>(transactionDelegate,
m_domain);
m_analyzer = new TransactionAnalyzer(); try {
m_analyzer.setDelegate((TransactionDelegate) transactionDelegate); m_analyzer = (TransactionAnalyzer) lookup(MessageAnalyzer.class, TransactionAnalyzer.ID);
m_analyzer.setReportManager(reportManager); } catch (Exception e) {
m_analyzer.setServerConfigManager(serverConfigManager); e.printStackTrace();
}
} }
@Test @Test
public void testProcessTransaction() throws Exception { public void testProcess() throws Exception {
for (int i = 1; i <= 1000; i++) { for (int i = 1; i <= 1000; i++) {
MessageTree tree = newMessageTree(i); MessageTree tree = generateMessageTree(i);
m_analyzer.process(tree); m_analyzer.process(tree);
} }
...@@ -52,11 +46,12 @@ public class TransactionAnalyzerTest extends ComponentTestCase { ...@@ -52,11 +46,12 @@ public class TransactionAnalyzerTest extends ComponentTestCase {
report.accept(new TransactionStatisticsComputer()); report.accept(new TransactionStatisticsComputer());
String expected = Files.forIO().readFrom(getClass().getResourceAsStream("TransactionAnalyzerTest.xml"), "utf-8"); String expected = Files.forIO().readFrom(getClass().getResourceAsStream("transaction_analyzer.xml"),
Assert.assertEquals(expected.replaceAll("\\s*", ""), report.toString().replaceAll("\\s*", "")); "utf-8");
Assert.assertEquals(expected.replaceAll("\r", ""), report.toString().replaceAll("\r", ""));
} }
protected MessageTree newMessageTree(int i) { protected MessageTree generateMessageTree(int i) {
MessageTree tree = new DefaultMessageTree(); MessageTree tree = new DefaultMessageTree();
tree.setMessageId("" + i); tree.setMessageId("" + i);
......
...@@ -16,7 +16,7 @@ public class TransactionReportFilterTest { ...@@ -16,7 +16,7 @@ public class TransactionReportFilterTest {
@Test @Test
public void whether_url_has_max_names() throws Exception { public void whether_url_has_max_names() throws Exception {
String source = Files.forIO().readFrom(getClass().getResourceAsStream("transaction.xml"), "utf-8"); String source = Files.forIO().readFrom(getClass().getResourceAsStream("transaction_report_filter.xml"), "utf-8");
TransactionReport report = DefaultSaxParser.parse(source); TransactionReport report = DefaultSaxParser.parse(source);
TransactionType type = report.findMachine("10.1.77.193").findType("URL"); TransactionType type = report.findMachine("10.1.77.193").findType("URL");
......
...@@ -11,12 +11,11 @@ import com.dianping.cat.consumer.transaction.model.transform.DefaultXmlBuilder; ...@@ -11,12 +11,11 @@ import com.dianping.cat.consumer.transaction.model.transform.DefaultXmlBuilder;
public class TransactionReportTest { public class TransactionReportTest {
@Test @Test
public void testXml() throws Exception { public void testXml() throws Exception {
String source = Files.forIO().readFrom(getClass().getResourceAsStream("TransactionReport.xml"), "utf-8"); String source = Files.forIO().readFrom(getClass().getResourceAsStream("transaction_report.xml"), "utf-8");
TransactionReport report = DefaultSaxParser.parse(source); TransactionReport report = DefaultSaxParser.parse(source);
String xml = new DefaultXmlBuilder().buildXml(report); String xml = new DefaultXmlBuilder().buildXml(report);
String expected = source; String expected = source;
Assert.assertEquals("XML is not well parsed!", expected.replace("\r", ""), xml.replace("\r", "")); Assert.assertEquals("XML is not well parsed!", expected.replace("\r", ""), xml.replace("\r", ""));
} }
} }
<?xml version="1.0" encoding="utf-8"?> <plexus>
<event-report domain="group" startTime="1970-01-01 08:00:00" <components>
endTime="1970-01-01 08:59:59"> <component>
<domain>group</domain> <role>com.dianping.cat.service.ReportManager</role>
<ip>192.168.1.1</ip> <role-hint>event</role-hint>
<machine ip="192.168.1.1"> <implementation>com.dianping.cat.consumer.MockReportManager</implementation>
<type id="test2" totalCount="1000" failCount="1000" failPercent="100.00"> <requirements>
<failMessageUrl>1</failMessageUrl> <requirement>
<name id="fail" totalCount="1000" failCount="1000" failPercent="100.00"> <role>com.dianping.cat.service.ReportDelegate</role>
<failMessageUrl>1</failMessageUrl> <role-hint>event</role-hint>
<range value="0" count="1000" fails="1000" /> <field-name>m_delegate</field-name>
</name> </requirement>
</type> </requirements>
<type id="test1" totalCount="1000" failCount="0" failPercent="0.00"> </component>
<successMessageUrl>1</successMessageUrl> <component>
<name id="success" totalCount="1000" failCount="0" failPercent="0.00"> <role>com.dianping.cat.service.ReportDelegate</role>
<successMessageUrl>1</successMessageUrl> <role-hint>event</role-hint>
<range value="0" count="1000" fails="0" /> <implementation>com.dianping.cat.consumer.event.Configurator$ExtendedEventDelegate</implementation>
</name> </component>
</type> </components>
</machine> </plexus>
</event-report>
<?xml version="1.0" encoding="utf-8"?>
<event-report domain="group" startTime="1970-01-01 08:00:00" endTime="1970-01-01 08:59:59">
<domain>group</domain>
<ip>192.168.1.1</ip>
<machine ip="192.168.1.1">
<type id="test2" totalCount="1000" failCount="1000" failPercent="100.00">
<failMessageUrl>1</failMessageUrl>
<name id="fail" totalCount="1000" failCount="1000" failPercent="100.00">
<failMessageUrl>1</failMessageUrl>
<range value="55" count="1000" fails="1000"/>
</name>
</type>
<type id="test1" totalCount="1000" failCount="0" failPercent="0.00">
<successMessageUrl>1</successMessageUrl>
<name id="success" totalCount="1000" failCount="0" failPercent="0.00">
<successMessageUrl>1</successMessageUrl>
<range value="55" count="1000" fails="0"/>
</name>
</type>
</machine>
</event-report>
<?xml version="1.0" encoding="utf-8"?> <plexus>
<transaction-report domain="group" startTime="1970-01-01 08:00:00" <components>
endTime="1970-01-01 08:59:59"> <component>
<domain>group</domain> <role>com.dianping.cat.service.ReportManager</role>
<ip>192.168.1.1</ip> <role-hint>transaction</role-hint>
<machine ip="192.168.1.1"> <implementation>com.dianping.cat.consumer.MockReportManager</implementation>
<type id="A" totalCount="1000" failCount="500" failPercent="50.00" <requirements>
min="2.0" max="2000.0" avg="1001.0" sum="1001000.0" sum2="1335334000.0" <requirement>
std="577.3" tps="0.00" line95Value="1902.00" line99Value="2000.00"> <role>com.dianping.cat.service.ReportDelegate</role>
<successMessageUrl>1</successMessageUrl> <role-hint>transaction</role-hint>
<failMessageUrl>2</failMessageUrl> <field-name>m_delegate</field-name>
<name id="n1" totalCount="500" failCount="0" failPercent="0.00" </requirement>
min="2.0" max="1998.0" avg="1000.0" sum="500000.0" sum2="666666000.0" </requirements>
std="577.3" tps="0.00" line95Value="1902.00" line99Value="1998.00"> </component>
<successMessageUrl>1</successMessageUrl> <component>
<range value="0" count="500" sum="500000.0" avg="1000.0" <role>com.dianping.cat.service.ReportDelegate</role>
fails="0" /> <role-hint>transaction</role-hint>
<duration value="2" count="1" /> <implementation>com.dianping.cat.consumer.transaction.Configurator$ExtendedTransactionDelegate</implementation>
<duration value="8" count="1" /> </component>
<duration value="16" count="2" /> </components>
<duration value="32" count="4" /> </plexus>
<duration value="64" count="8" />
<duration value="128" count="16" />
<duration value="256" count="32" />
<duration value="512" count="64" />
<duration value="1024" count="128" />
<duration value="2048" count="244" />
</name>
<name id="n0" totalCount="500" failCount="500" failPercent="100.00"
min="4.0" max="2000.0" avg="1002.0" sum="501000.0" sum2="668668000.0"
std="577.3" tps="0.00" line95Value="1904.00" line99Value="2000.00">
<failMessageUrl>2</failMessageUrl>
<range value="0" count="500" sum="501000.0" avg="1002.0"
fails="500" />
<duration value="4" count="1" />
<duration value="8" count="1" />
<duration value="16" count="2" />
<duration value="32" count="4" />
<duration value="64" count="8" />
<duration value="128" count="16" />
<duration value="256" count="32" />
<duration value="512" count="64" />
<duration value="1024" count="128" />
<duration value="2048" count="244" />
</name>
</type>
<type id="A-1" totalCount="1000" failCount="500" failPercent="50.00"
min="1.0" max="1000.0" avg="500.5" sum="500500.0" sum2="333833500.0"
std="288.7" tps="0.00" line95Value="951.00" line99Value="1000.00">
<successMessageUrl>1</successMessageUrl>
<failMessageUrl>2</failMessageUrl>
<name id="n1" totalCount="334" failCount="167" failPercent="50.00"
min="1.0" max="1000.0" avg="500.5" sum="167167.0" sum2="111611611.0"
std="289.3" tps="0.00" line95Value="955.00" line99Value="1000.00">
<successMessageUrl>1</successMessageUrl>
<failMessageUrl>4</failMessageUrl>
<range value="0" count="334" sum="167167.0" avg="500.5" fails="167" />
<duration value="1" count="1" />
<duration value="4" count="1" />
<duration value="8" count="1" />
<duration value="16" count="3" />
<duration value="32" count="5" />
<duration value="64" count="11" />
<duration value="128" count="21" />
<duration value="256" count="43" />
<duration value="512" count="85" />
<duration value="1024" count="163" />
</name>
<name id="n2" totalCount="333" failCount="167" failPercent="50.15"
min="2.0" max="998.0" avg="500.0" sum="166500.0" sum2="110944278.0"
std="288.4" tps="0.00" line95Value="953.00" line99Value="998.00">
<successMessageUrl>5</successMessageUrl>
<failMessageUrl>2</failMessageUrl>
<range value="0" count="333" sum="166500.0" avg="500.0" fails="167" />
<duration value="2" count="1" />
<duration value="8" count="2" />
<duration value="16" count="2" />
<duration value="32" count="6" />
<duration value="64" count="10" />
<duration value="128" count="22" />
<duration value="256" count="42" />
<duration value="512" count="86" />
<duration value="1024" count="162" />
</name>
<name id="n0" totalCount="333" failCount="166" failPercent="49.85"
min="3.0" max="999.0" avg="501.0" sum="166833.0" sum2="111277611.0"
std="288.4" tps="0.00" line95Value="954.00" line99Value="999.00">
<successMessageUrl>3</successMessageUrl>
<failMessageUrl>6</failMessageUrl>
<range value="0" count="333" sum="166833.0" avg="501.0" fails="166" />
<duration value="4" count="1" />
<duration value="8" count="1" />
<duration value="16" count="3" />
<duration value="32" count="5" />
<duration value="64" count="11" />
<duration value="128" count="21" />
<duration value="256" count="43" />
<duration value="512" count="85" />
<duration value="1024" count="163" />
</name>
</type>
</machine>
</transaction-report>
\ No newline at end of file
<transaction-report domain="MobileApi" startTime="2012-06-18 14:00:00"
endTime="2012-06-18 14:59:59">
<domain>Cat</domain>
<domain>MobileApi</domain>
<ip>10.1.77.193</ip>
<machine ip="10.1.77.193">
<type id="SQL" totalCount="111507" failCount="0" failPercent="0.00"
min="0.417" max="102.919" avg="0.0" sum="1937.0" sum2="34333.7" std="0.0"
tps="0.00" line95Value="14.00" line95Sum="14.00" line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999254922-0
</successMessageUrl>
<name id="APICategory.getAllParentCategoryId" totalCount="1"
failCount="0" failPercent="0.00" min="13.326" max="13.326" avg="0.0"
sum="13.3" sum2="177.6" std="0.0" tps="0.00" line95Value="13.00"
line95Sum="13.00" line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1340002657975-0
</successMessageUrl>
<range value="55" count="1" sum="13.326" avg="0.0" fails="0" />
<duration value="16" count="1" />
</name>
<name id="APISearch.getFilterOptionList" totalCount="1"
failCount="0" failPercent="0.00" min="0.871" max="0.871" avg="0.0"
sum="0.9" sum2="0.8" std="0.0" tps="0.00" line95Value="0.00"
line95Sum="0.00" line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1340002658121-0
</successMessageUrl>
<range value="55" count="1" sum="0.871" avg="0.0" fails="0" />
<duration value="1" count="1" />
</name>
</type>
<type id="URL" totalCount="111120" failCount="0" failPercent="0.00"
min="2.354" max="2164.387" avg="0.0" sum="2689.6" sum2="4772307.3"
std="0.0" tps="0.00" line95Value="2164.00" line95Sum="2164.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999960694-0
</successMessageUrl>
<name id="/config.bin" totalCount="20" failCount="0"
failPercent="0.00" min="2.354" max="2.725" avg="0.0" sum="5.1" sum2="13.0"
std="0.0" tps="0.00" line95Value="2.00" line95Sum="2.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999960694-0
</successMessageUrl>
<range value="10" count="2" sum="5.079000000000001" avg="0.0"
fails="0" />
<duration value="4" count="2" />
</name>
<name id="/hotregion.bin" totalCount="20" failCount="0"
failPercent="0.00" min="2.908" max="8.311" avg="0.0" sum="11.2"
sum2="77.5" std="0.0" tps="0.00" line95Value="8.00" line95Sum="8.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999960753-0
</successMessageUrl>
<range value="10" count="2" sum="11.219" avg="0.0" fails="0" />
<duration value="4" count="1" />
<duration value="16" count="1" />
</name>
<name id="/category.bin" totalCount="20" failCount="0"
failPercent="0.00" min="12.934" max="13.056" avg="0.0" sum="26.0"
sum2="337.7" std="0.0" tps="0.00" line95Value="13.00" line95Sum="13.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999960794-0
</successMessageUrl>
<range value="10" count="2" sum="25.99" avg="0.0" fails="0" />
<duration value="16" count="2" />
</name>
<name id="/city.bin" totalCount="1" failCount="0" failPercent="0.00"
min="38.21" max="38.21" avg="0.0" sum="38.2" sum2="1460.0" std="0.0"
tps="0.00" line95Value="38.00" line95Sum="38.00" line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999961753-0
</successMessageUrl>
<range value="10" count="1" sum="38.21" avg="0.0" fails="0" />
<duration value="64" count="1" />
</name>
<name id="/location.bin" totalCount="1" failCount="0"
failPercent="0.00" min="249.694" max="249.694" avg="0.0" sum="249.7"
sum2="62347.1" std="0.0" tps="0.00" line95Value="249.00" line95Sum="249.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999968913-0
</successMessageUrl>
<range value="10" count="1" sum="249.694" avg="0.0" fails="0" />
<duration value="256" count="1" />
</name>
<name id="/locatecategory.bin" totalCount="10" failCount="0"
failPercent="0.00" min="5.392" max="5.392" avg="0.0" sum="5.4" sum2="29.1"
std="0.0" tps="0.00" line95Value="5.00" line95Sum="5.00"
line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1339999994494-0
</successMessageUrl>
<range value="10" count="1" sum="5.392" avg="0.0" fails="0" />
<duration value="8" count="1" />
</name>
<name id="/localshop.bin" totalCount="30" failCount="0"
failPercent="0.00" min="42.469" max="2164.387" avg="0.0" sum="2354.1"
sum2="4708042.8" std="0.0" tps="0.00" line95Value="2164.00"
line95Sum="2164.00" line95Count="1">
<successMessageUrl>MobileApi-0a014dc1-1340000001993-0
</successMessageUrl>
<range value="10" count="3" sum="2354.0570000000002" avg="0.0"
fails="0" />
<duration value="64" count="1" />
<duration value="256" count="1" />
<duration value="4096" count="1" />
</name>
</type>
</machine>
</transaction-report>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<transaction-report domain="group" startTime="1970-01-01 08:00:00" endTime="1970-01-01 08:59:59">
<domain>group</domain>
<ip>192.168.1.1</ip>
<machine ip="192.168.1.1">
<type id="A" totalCount="1000" failCount="500" failPercent="50.00" min="2.0" max="2000.0" avg="1001.0" sum="1001000.0" sum2="1335334000.0" std="577.3" tps="0.00" line95Value="1902.00" line99Value="2000.00">
<successMessageUrl>1</successMessageUrl>
<failMessageUrl>2</failMessageUrl>
<name id="n1" totalCount="500" failCount="0" failPercent="0.00" min="2.0" max="1998.0" avg="1000.0" sum="500000.0" sum2="666666000.0" std="577.3" tps="0.00" line95Value="1902.00" line99Value="1998.00">
<successMessageUrl>1</successMessageUrl>
<range value="0" count="500" sum="500000.0" avg="1000.0" fails="0"/>
<duration value="2" count="1"/>
<duration value="8" count="1"/>
<duration value="16" count="2"/>
<duration value="32" count="4"/>
<duration value="64" count="8"/>
<duration value="128" count="16"/>
<duration value="256" count="32"/>
<duration value="512" count="64"/>
<duration value="1024" count="128"/>
<duration value="2048" count="244"/>
</name>
<name id="n0" totalCount="500" failCount="500" failPercent="100.00" min="4.0" max="2000.0" avg="1002.0" sum="501000.0" sum2="668668000.0" std="577.3" tps="0.00" line95Value="1904.00" line99Value="2000.00">
<failMessageUrl>2</failMessageUrl>
<range value="0" count="500" sum="501000.0" avg="1002.0" fails="500"/>
<duration value="4" count="1"/>
<duration value="8" count="1"/>
<duration value="16" count="2"/>
<duration value="32" count="4"/>
<duration value="64" count="8"/>
<duration value="128" count="16"/>
<duration value="256" count="32"/>
<duration value="512" count="64"/>
<duration value="1024" count="128"/>
<duration value="2048" count="244"/>
</name>
</type>
<type id="A-1" totalCount="1000" failCount="500" failPercent="50.00" min="1.0" max="1000.0" avg="500.5" sum="500500.0" sum2="333833500.0" std="288.7" tps="0.00" line95Value="951.00" line99Value="1000.00">
<successMessageUrl>1</successMessageUrl>
<failMessageUrl>2</failMessageUrl>
<name id="n1" totalCount="334" failCount="167" failPercent="50.00" min="1.0" max="1000.0" avg="500.5" sum="167167.0" sum2="111611611.0" std="289.3" tps="0.00" line95Value="955.00" line99Value="1000.00">
<successMessageUrl>1</successMessageUrl>
<failMessageUrl>4</failMessageUrl>
<range value="0" count="334" sum="167167.0" avg="500.5" fails="167"/>
<duration value="1" count="1"/>
<duration value="4" count="1"/>
<duration value="8" count="1"/>
<duration value="16" count="3"/>
<duration value="32" count="5"/>
<duration value="64" count="11"/>
<duration value="128" count="21"/>
<duration value="256" count="43"/>
<duration value="512" count="85"/>
<duration value="1024" count="163"/>
</name>
<name id="n2" totalCount="333" failCount="167" failPercent="50.15" min="2.0" max="998.0" avg="500.0" sum="166500.0" sum2="110944278.0" std="288.4" tps="0.00" line95Value="953.00" line99Value="998.00">
<successMessageUrl>5</successMessageUrl>
<failMessageUrl>2</failMessageUrl>
<range value="0" count="333" sum="166500.0" avg="500.0" fails="167"/>
<duration value="2" count="1"/>
<duration value="8" count="2"/>
<duration value="16" count="2"/>
<duration value="32" count="6"/>
<duration value="64" count="10"/>
<duration value="128" count="22"/>
<duration value="256" count="42"/>
<duration value="512" count="86"/>
<duration value="1024" count="162"/>
</name>
<name id="n0" totalCount="333" failCount="166" failPercent="49.85" min="3.0" max="999.0" avg="501.0" sum="166833.0" sum2="111277611.0" std="288.4" tps="0.00" line95Value="954.00" line99Value="999.00">
<successMessageUrl>3</successMessageUrl>
<failMessageUrl>6</failMessageUrl>
<range value="0" count="333" sum="166833.0" avg="501.0" fails="166"/>
<duration value="4" count="1"/>
<duration value="8" count="1"/>
<duration value="16" count="3"/>
<duration value="32" count="5"/>
<duration value="64" count="11"/>
<duration value="128" count="21"/>
<duration value="256" count="43"/>
<duration value="512" count="85"/>
<duration value="1024" count="163"/>
</name>
</type>
</machine>
</transaction-report>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册