提交 aa94f7fe 编写于 作者: Y yong.you

add the testcase

上级 11f3a75d
......@@ -22,7 +22,7 @@ CAT监控系统将每次URL、Service的请求内部执行情况都封装为一
![Alt text](https://raw.github.com/dianping/cat/master/cat-home/src/main/webapp/images/logviewAll02.png)
分布式消息树【一台机器CALL另外一台机器】
分布式消息树【一台机器调用另外一台机器】
---------------------
![Alt text](https://raw.github.com/dianping/cat/master/cat-home/src/main/webapp/images/logviewAll03.png)
......
......@@ -6,12 +6,12 @@ import java.util.List;
import junit.framework.Assert;
import org.codehaus.plexus.logging.Logger;
import org.junit.Test;
import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.Readset;
import org.unidal.dal.jdbc.Updateset;
import com.dianping.cat.MockLog;
import com.dianping.cat.advanced.metric.config.entity.MetricConfig;
import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig;
import com.dianping.cat.consumer.metric.MetricAnalyzer.ConfigItem;
......@@ -140,110 +140,4 @@ public class MetricConfigManagerTest {
}
}
public static class MockLog implements Logger {
@Override
public void debug(String message) {
}
@Override
public void debug(String message, Throwable throwable) {
}
@Override
public boolean isDebugEnabled() {
return false;
}
@Override
public void info(String message) {
}
@Override
public void info(String message, Throwable throwable) {
}
@Override
public boolean isInfoEnabled() {
return false;
}
@Override
public void warn(String message) {
}
@Override
public void warn(String message, Throwable throwable) {
}
@Override
public boolean isWarnEnabled() {
return false;
}
@Override
public void error(String message) {
}
@Override
public void error(String message, Throwable throwable) {
}
@Override
public boolean isErrorEnabled() {
return false;
}
@Override
public void fatalError(String message) {
}
@Override
public void fatalError(String message, Throwable throwable) {
}
@Override
public boolean isFatalErrorEnabled() {
return false;
}
@Override
public Logger getChildLogger(String name) {
return null;
}
@Override
public int getThreshold() {
return 0;
}
@Override
public void setThreshold(int threshold) {
}
@Override
public String getName() {
return null;
}
}
}
......@@ -12,9 +12,9 @@ import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.dal.jdbc.Readset;
import org.unidal.dal.jdbc.Updateset;
import com.dianping.cat.MockLog;
import com.dianping.cat.consumer.company.model.entity.Company;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.consumer.metric.MetricConfigManagerTest.MockLog;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
......
......@@ -120,4 +120,16 @@ public class DumpAnalyzer extends AbstractMessageAnalyzer<Object> implements Log
}
}
public Map<String, Integer> getOldVersionDomains() {
return m_oldVersionDomains;
}
public void setServerStateManager(ServerStatisticManager serverStateManager) {
m_serverStateManager = serverStateManager;
}
public void setBucketManager(LocalMessageBucketManager bucketManager) {
m_bucketManager = bucketManager;
}
}
......@@ -9,6 +9,7 @@ import com.dianping.cat.consumer.core.GsonTest;
import com.dianping.cat.consumer.core.NumberFormatTest;
import com.dianping.cat.consumer.core.aggregation.CompositeFormatTest;
import com.dianping.cat.consumer.core.aggregation.DefaultFormatTest;
import com.dianping.cat.consumer.dump.DumpAnalyzer;
import com.dianping.cat.consumer.event.EventAnalyzerTest;
import com.dianping.cat.consumer.event.EventReportMergerTest;
import com.dianping.cat.consumer.heartbeat.HeartbeatAnalyzerTest;
......@@ -90,6 +91,8 @@ CompositeFormatTest.class,
DefaultFormatTest.class,
DumpAnalyzer.class,
TransactionReportTypeAggergatorTest.class })
public class AllTests {
......
package com.dianping.cat.consumer;
import java.util.ArrayList;
import java.util.List;
import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import org.unidal.lookup.configuration.Component;
import com.dianping.cat.analysis.MessageAnalyzer;
import com.dianping.cat.analysis.MessageAnalyzerManager;
import com.dianping.cat.consumer.event.EventAnalyzer;
import com.dianping.cat.consumer.top.TopAnalyzer;
import com.dianping.cat.consumer.transaction.Configurator;
import com.dianping.cat.consumer.transaction.TransactionAnalyzer;
import com.dianping.cat.consumer.transaction.TransactionAnalyzerTest;
import com.dianping.cat.consumer.transaction.Configurator.ExtendedTransactionDelegate;
import com.dianping.cat.consumer.transaction.Configurator.MockTransactionReportManager;
import com.dianping.cat.service.ReportDelegate;
import com.dianping.cat.service.ReportManager;
public class RealtimeConfigConfiguration 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>();
return all;
}
public static class MockMessageAnalyzerManager implements MessageAnalyzerManager {
@Override
public List<String> getAnalyzerNames() {
List<String> list = new ArrayList<String>();
list.add(TransactionAnalyzer.ID);
list.add(EventAnalyzer.ID);
list.add(TopAnalyzer.ID);
return list;
}
@Override
public MessageAnalyzer getAnalyzer(String name, long startTime) {
return null;
}
}
}
package com.dianping.cat.consumer.dump;
import java.io.IOException;
import junit.framework.Assert;
import org.junit.Test;
import com.dianping.cat.MockLog;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.internal.DefaultTransaction;
import com.dianping.cat.message.internal.MessageId;
import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
import com.dianping.cat.statistic.ServerStatisticManager;
import com.dianping.cat.storage.dump.LocalMessageBucketManager;
public class DumpAnalyzerTest {
@Test
public void test() throws Exception {
DumpAnalyzer analyzer = new DumpAnalyzer();
int size = 1000;
MockLocalMessageBucketManager bucketManager = new MockLocalMessageBucketManager();
analyzer.setServerStateManager(new ServerStatisticManager());
analyzer.setBucketManager(bucketManager);
analyzer.enableLogging(new MockLog());
for (int i = 0; i < size; i++) {
analyzer.process(generateMessageTree(i));
}
Assert.assertEquals(size, bucketManager.m_insert);
analyzer.doCheckpoint(true);
Thread.sleep(1000);
Assert.assertEquals(true, bucketManager.m_archive);
for (int i = 0; i < size; i++) {
analyzer.process(generateOldMessageTree());
}
Assert.assertEquals(size, bucketManager.m_insert);
Assert.assertEquals(size, analyzer.getOldVersionDomains().get("Cat").intValue());
}
protected MessageTree generateOldMessageTree() {
DefaultMessageTree tree = (DefaultMessageTree) generateMessageTree(10);
tree.setMessageId("Cat-0a010680-1385467200000-10");
return tree;
}
protected MessageTree generateMessageTree(int i) {
MessageTree tree = new DefaultMessageTree();
tree.setDomain("Cat");
tree.setHostName("group001");
tree.setIpAddress("192.168.1.1");
DefaultTransaction t = new DefaultTransaction("A", "n" + i % 2, null);
DefaultTransaction t2 = new DefaultTransaction("A-1", "n" + i % 3, null);
if (i % 2 == 0) {
t2.setStatus("ERROR");
} else {
t2.setStatus(Message.SUCCESS);
}
t2.complete();
t2.setDurationInMillis(i);
t.addChild(t2);
if (i % 2 == 0) {
t.setStatus("ERROR");
} else {
t.setStatus(Message.SUCCESS);
}
t.complete();
t.setDurationInMillis(i * 2);
long timestamp = System.currentTimeMillis() - System.currentTimeMillis() % (3600 * 1000);
t.setTimestamp(timestamp + 1000);
t2.setTimestamp(timestamp + 2000);
tree.setMessage(t);
tree.setMessageId("Cat-0a010680-384852-" + i);
return tree;
}
public static class MockLocalMessageBucketManager extends LocalMessageBucketManager {
protected boolean m_archive = false;
protected int m_insert = 0;
@Override
public MessageTree loadMessage(String messageId) throws IOException {
return new DefaultMessageTree();
}
@Override
public void storeMessage(MessageTree tree, MessageId id) throws IOException {
m_insert++;
}
@Override
public void archive(long startTime) {
m_archive = true;
}
}
}
......@@ -6,6 +6,7 @@ import junit.framework.Assert;
import org.junit.Test;
import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.dal.jdbc.Readset;
import org.unidal.dal.jdbc.Updateset;
......@@ -80,8 +81,8 @@ public class AggregationConfigManagerTest {
public static class MockConfigDao2 extends MockConfigDao1 {
@Override
public Config findByName(String name, Readset<Config> readset) throws DalException {
throw new DalException("this is test exception, please ignore it!");
public Config findByName(String name, Readset<Config> readset) throws DalNotFoundException {
throw new DalNotFoundException("this is test exception, please ignore it!");
}
}
......
......@@ -13,6 +13,10 @@ import org.unidal.lookup.ComponentTestCase;
import com.dianping.cat.Constants;
import com.dianping.cat.analysis.MessageAnalyzer;
import com.dianping.cat.consumer.problem.model.entity.ProblemReport;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Heartbeat;
import com.dianping.cat.message.internal.DefaultEvent;
import com.dianping.cat.message.internal.DefaultHeartbeat;
import com.dianping.cat.message.internal.DefaultTransaction;
import com.dianping.cat.message.spi.MessageTree;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
......@@ -93,6 +97,13 @@ public class ProblemAnalyzerTest extends ComponentTestCase {
break;
}
Event error = new DefaultEvent("Error", "Error", null);
Event exception = new DefaultEvent("Exception", "Exception", null);
Heartbeat heartbeat = new DefaultHeartbeat("heartbeat", "heartbeat");
t.addChild(error);
t.addChild(exception);
t.addChild(heartbeat);
tree.setMessage(t);
return tree;
......
......@@ -36,7 +36,6 @@ public class StateAnalyzerTest extends ComponentTestCase {
@Test
public void testProcess() throws Exception {
StateReport report = m_analyzer.getReport(m_domain);
String expected = Files.forIO().readFrom(getClass().getResourceAsStream("state_analyzer.xml"), "utf-8");
......
......@@ -41,6 +41,390 @@
</segment>
</thread>
</entry>
<entry type="error" status="Error">
<duration value="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</duration>
<thread group-name="Cat" name="Cat-ProblemAnalyzer-Test" id="Cat">
<segment id="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</segment>
</thread>
</entry>
<entry type="error" status="Exception">
<duration value="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</duration>
<thread group-name="Cat" name="Cat-ProblemAnalyzer-Test" id="Cat">
<segment id="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</segment>
</thread>
</entry>
<entry type="heartbeat" status="heartbeat">
<duration value="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</duration>
<thread group-name="Cat" name="Cat-ProblemAnalyzer-Test" id="Cat">
<segment id="0" count="100">
<message>1</message>
<message>2</message>
<message>3</message>
<message>4</message>
<message>5</message>
<message>6</message>
<message>7</message>
<message>8</message>
<message>9</message>
<message>10</message>
<message>11</message>
<message>12</message>
<message>13</message>
<message>14</message>
<message>15</message>
<message>16</message>
<message>17</message>
<message>18</message>
<message>19</message>
<message>20</message>
<message>21</message>
<message>22</message>
<message>23</message>
<message>24</message>
<message>25</message>
<message>26</message>
<message>27</message>
<message>28</message>
<message>29</message>
<message>30</message>
<message>31</message>
<message>32</message>
<message>33</message>
<message>34</message>
<message>35</message>
<message>36</message>
<message>37</message>
<message>38</message>
<message>39</message>
<message>40</message>
<message>41</message>
<message>42</message>
<message>43</message>
<message>44</message>
<message>45</message>
<message>46</message>
<message>47</message>
<message>48</message>
<message>49</message>
<message>50</message>
<message>51</message>
<message>52</message>
<message>53</message>
<message>54</message>
<message>55</message>
<message>56</message>
<message>57</message>
<message>58</message>
<message>59</message>
<message>60</message>
</segment>
</thread>
</entry>
<entry type="failure" status="Cache.:n0">
<duration value="0" count="8">
<message>2</message>
......
package com.dianping.cat;
import org.codehaus.plexus.logging.Logger;
public class MockLog implements Logger {
@Override
public void debug(String message) {
}
@Override
public void debug(String message, Throwable throwable) {
}
@Override
public boolean isDebugEnabled() {
return false;
}
@Override
public void info(String message) {
}
@Override
public void info(String message, Throwable throwable) {
}
@Override
public boolean isInfoEnabled() {
return false;
}
@Override
public void warn(String message) {
}
@Override
public void warn(String message, Throwable throwable) {
}
@Override
public boolean isWarnEnabled() {
return false;
}
@Override
public void error(String message) {
}
@Override
public void error(String message, Throwable throwable) {
}
@Override
public boolean isErrorEnabled() {
return false;
}
@Override
public void fatalError(String message) {
}
@Override
public void fatalError(String message, Throwable throwable) {
}
@Override
public boolean isFatalErrorEnabled() {
return false;
}
@Override
public Logger getChildLogger(String name) {
return null;
}
@Override
public int getThreshold() {
return 0;
}
@Override
public void setThreshold(int threshold) {
}
@Override
public String getName() {
return null;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册