CrossAnalyzerTest.java
3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.dianping.cat.consumer.cross;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.unidal.helper.Files;
import org.unidal.lookup.ComponentTestCase;
import com.dianping.cat.Constants;
import com.dianping.cat.analysis.MessageAnalyzer;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.internal.DefaultEvent;
import com.dianping.cat.message.internal.DefaultTransaction;
import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
public class CrossAnalyzerTest extends ComponentTestCase {
private long m_timestamp;
private CrossAnalyzer m_analyzer;
private String m_domain = "group";
@Before
public void setUp() throws Exception {
super.setUp();
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
long currentTimeMillis = System.currentTimeMillis();
m_timestamp = currentTimeMillis - currentTimeMillis % (3600 * 1000);
m_analyzer = (CrossAnalyzer) lookup(MessageAnalyzer.class, CrossAnalyzer.ID);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm");
Date date = sdf.parse("20120101 00:00");
m_analyzer.initialize(date.getTime(), Constants.HOUR, Constants.MINUTE * 5);
}
@Test
public void testProcess() throws Exception {
for (int i = 1; i <= 100; i++) {
MessageTree tree = generateMessageTree(i);
m_analyzer.process(tree);
}
CrossReport report = m_analyzer.getReport(m_domain);
String expected = Files.forIO().readFrom(getClass().getResourceAsStream("cross_analyzer.xml"), "utf-8");
Assert.assertEquals(expected.replaceAll("\r", ""), report.toString().replaceAll("\r", ""));
CrossReport reportCaller = m_analyzer.getReport("server");
String expectedCaller = Files.forIO().readFrom(getClass().getResourceAsStream("cross_analyzer_caller.xml"),
"utf-8");
Assert.assertEquals(expectedCaller.replaceAll("\r", ""), reportCaller.toString().replaceAll("\r", ""));
}
protected MessageTree generateMessageTree(int i) {
MessageTree tree = new DefaultMessageTree();
tree.setMessageId("" + i);
tree.setDomain(m_domain);
tree.setHostName("group001");
tree.setIpAddress("192.168.1.1");
DefaultTransaction t;
if (i % 2 == 0) {
t = new DefaultTransaction("PigeonCall", "Cat-Test-Call", null);
DefaultEvent event = new DefaultEvent("PigeonCall.server", "192.168.1.0:3000:class:method1");
event.setTimestamp(m_timestamp + 5 * 60 * 1000);
event.setStatus(Message.SUCCESS);
t.addChild(event);
DefaultEvent eventApp = new DefaultEvent("PigeonCall.app", "server");
eventApp.setTimestamp(m_timestamp + 5 * 60 * 1000 + 100);
eventApp.setStatus(Message.SUCCESS);
t.addChild(eventApp);
} else {
t = new DefaultTransaction("PigeonService", "Cat-Test-Service", null);
DefaultEvent event = new DefaultEvent("PigeonService.client", "192.168.1.2:3000:class:method2");
event.setTimestamp(m_timestamp + 5 * 60 * 1000);
event.setStatus(Message.SUCCESS);
t.addChild(event);
DefaultEvent eventApp = new DefaultEvent("PigeonService.app", "client");
eventApp.setTimestamp(m_timestamp + 5 * 60 * 1000 + 100);
eventApp.setStatus(Message.SUCCESS);
t.addChild(eventApp);
}
t.complete();
t.setDurationInMillis(i * 2);
t.setTimestamp(m_timestamp + 1000);
tree.setMessage(t);
return tree;
}
@Test
public void testFormatIp() {
IpConvertManager analyzer = new IpConvertManager();
Assert.assertEquals(true, analyzer.isIPAddress("10.1.6.128"));
Assert.assertEquals(false, analyzer.isIPAddress("10.1.6.328"));
Assert.assertEquals(false, analyzer.isIPAddress("2886.1.6.128"));
Assert.assertEquals(false, analyzer.isIPAddress("2886.1.6.1228"));
Assert.assertEquals("10.1.6.128", analyzer.convertHostNameToIP("10.1.6.128"));
}
}