001 /******************************************************************************
002 * Copyright (C) MActor Developers. All rights reserved. *
003 * ---------------------------------------------------------------------------*
004 * This file is part of MActor. *
005 * *
006 * MActor is free software; you can redistribute it and/or modify *
007 * it under the terms of the GNU General Public License as published by *
008 * the Free Software Foundation; either version 2 of the License, or *
009 * (at your option) any later version. *
010 * *
011 * MActor is distributed in the hope that it will be useful, *
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
014 * GNU General Public License for more details. *
015 * *
016 * You should have received a copy of the GNU General Public License *
017 * along with MActor; if not, write to the Free Software *
018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
019 ******************************************************************************/
020 package org.mactor.framework;
021
022 import java.util.Calendar;
023 import java.util.Collections;
024 import java.util.Comparator;
025 import java.util.LinkedList;
026 import java.util.List;
027 import java.util.Map;
028
029 import org.mactor.brokers.Message;
030 import org.mactor.brokers.MessageContextInfo;
031 import org.mactor.framework.spec.SpecNode;
032
033 public class TestSummary_old {
034 private MessageInfo[] messageHistory;
035 private Map<String, String> contextValues;
036 private Calendar testStartTime;
037 private Calendar testCompleteTime;
038 private boolean success;
039 private String failedMessage;
040 public Map<String, String> getContextValues() {
041 return contextValues;
042 }
043 public String getFailedMessage() {
044 return failedMessage;
045 }
046 public MessageInfo[] getMessageHistory() {
047 return messageHistory;
048 }
049 public boolean isSuccess() {
050 return success;
051 }
052 public Calendar getTestCompleteTime() {
053 return testCompleteTime;
054 }
055 public Calendar getTestStartTime() {
056 return testStartTime;
057 }
058 public static TestSummary_old create(TestContext context, LinkedList<TestEvent> events) {
059 TestSummary_old ts = new TestSummary_old();
060 ts.contextValues = context.getValues();
061 ts.messageHistory = getSortedMessageHistory(context);
062 if (events != null && events.size() > 0) {
063 ts.testStartTime = events.getFirst().getTime();
064 TestEvent last = events.getLast();
065 ts.testCompleteTime = last.getTime();
066 ts.success = last.isSuccessfulTestCompleteEvent();
067 if (last.isFaultTestCompleteEvent()) {
068 TestEvent errorNode = events.get(events.size() - 2);
069 ts.failedMessage = errorNode.getNode().getName() + " - failed with: " + (errorNode.getCause() == null ? "unknown reason" : errorNode.getCause().getMessage());
070 }
071 }
072 return ts;
073 }
074 private static MessageInfo[] getSortedMessageHistory(TestContext context) {
075 List<MessageInfo> result = new LinkedList<MessageInfo>();
076 List<Message> all = context.getAllMessages();
077 Collections.sort(all, new Comparator<Message>() {
078 public int compare(Message m0, Message m1) {
079 long n0 = m0.getMessageContextInfo().getMessageSequenceNumber();
080 long n1 = m1.getMessageContextInfo().getMessageSequenceNumber();
081 if (n0 == n1)
082 return 0;
083 if (n0 > n1)
084 return 1;
085 return -1;
086 }
087 });
088 for (Message m : all) {
089 if (!m.getMessageContextInfo().isResponseMessage()) {
090 result.add(MessageInfo.create(m.getMessageContextInfo()));
091 if (m.getMessageContextInfo().hasResponseMessage())
092 result.add(MessageInfo.create(m.getMessageContextInfo().getResponseMessage().getMessageContextInfo()));
093 }
094 }
095 return result.toArray(new MessageInfo[result.size()]);
096 }
097 public static class MessageInfo {
098 private String archivePath;
099 private SpecNode node;
100 private String channel;
101 private Calendar createdTime;
102 private boolean incoming;
103 private boolean response;
104 public static MessageInfo create(MessageContextInfo mci) {
105 MessageInfo mi = new MessageInfo();
106 mi.archivePath = mci.getArchivePath();
107 mi.channel = mci.getChannel();
108 mi.createdTime = mci.getCreatedTime();
109 mi.node = mci.getNode();
110 mi.incoming = mci.isIncoming();
111 mi.response = mci.isResponseMessage();
112 return mi;
113 }
114 public String getArchivePath() {
115 return archivePath;
116 }
117 public String getChannel() {
118 return channel;
119 }
120 public Calendar getCreatedTime() {
121 return createdTime;
122 }
123 public boolean isIncoming() {
124 return incoming;
125 }
126 public SpecNode getNode() {
127 return node;
128 }
129 public boolean isResponse() {
130 return response;
131 }
132 }
133 }