1 5 package org.exoplatform.test.web; 6 7 import java.util.* ; 8 import org.apache.commons.lang.StringUtils; 9 import org.exoplatform.test.web.unit.ClickLinkWithText; 10 import org.exoplatform.test.web.unit.WebUnit; 11 17 abstract public class WebUnitSuite { 18 final static private int NAME_COLUMN = 30 ; 19 final static private int COUNTER_COLUMN = 8 ; 20 final static private int ERROR_COLUMN = 8 ; 21 final static private int MALFORMED_COLUMN = 10 ; 22 final static private int AVG_TIME_COLUMN = 10 ; 23 final static private int CONTENT_LENGTH_COLUMN = 10 ; 24 final static private int SUM_CONTENT_LENGTH_COLUMN = 10 ; 25 26 final static public int NOT_RUN_STATUS = 0 ; 27 final static public int OK_STATUS = 1 ; 28 final static public int ERROR_STATUS = 2 ; 29 final static public int IGNORE_STATUS = 3 ; 30 31 private List units_ ; 32 private String name_ ; 33 private String description_ ; 34 private int status_ = NOT_RUN_STATUS ; 35 36 public WebUnitSuite() { 37 } 38 39 public WebUnitSuite(String name, String description) { 40 name_ = name ; 41 description_ = description ; 42 units_ = new ArrayList() ; 43 } 44 45 public int getStatus() { return status_ ; } 46 public void setStatus(int status) { status_ = status ; } 47 48 public void goToPage(String path) { 49 String [] links = StringUtils.split(path, "/") ; 50 for(int i = 0; i < links.length; i++) { 51 addWebUnit(new ClickLinkWithText("GoTo:" + links[i], "Go to " + links[i] + "page"). 52 setTextLink(links[i])) ; 53 } 54 } 55 56 public String getName() { return name_ ; } 57 public String getDescription() { return description_ ; } 58 59 public List getWebUnits() { return units_ ; } 60 61 protected void addWebUnit(WebUnit unit) { 62 units_.add(unit) ; 63 } 64 65 protected void add(WebUnit unit) { 66 units_.add(unit) ; 67 } 68 69 public void reset() { 70 if(getStatus() == WebUnitSuite.IGNORE_STATUS) return ; 71 status_ = NOT_RUN_STATUS ; 72 for(int i = 0; i < units_.size() ; i++) { 73 WebUnit unit = (WebUnit) units_.get(i) ; 74 unit.reset() ; 75 } 76 } 77 78 private void appendColumn(StringBuffer b, String value, int width) { 79 b.append(value) ; 80 for(int i = 0; i < width- value.length(); i++) { 81 b.append(" ") ; 82 } 83 } 84 85 public String getTextSummary() { 86 StringBuffer b = new StringBuffer (5000) ; 87 b.append("Suite Name: ").append(name_).append("\n"); 88 b.append("Description: ").append(description_).append("\n"); 89 appendColumn(b, "Unit Name", NAME_COLUMN) ; 90 appendColumn(b, "Counter", COUNTER_COLUMN) ; 91 appendColumn(b, "Error", ERROR_COLUMN) ; 92 appendColumn(b, "Malformed", MALFORMED_COLUMN) ; 93 appendColumn(b, "Avg(ms)", AVG_TIME_COLUMN) ; 94 appendColumn(b, "Avg(kb)", CONTENT_LENGTH_COLUMN) ; 95 appendColumn(b, "Sum(kb)", SUM_CONTENT_LENGTH_COLUMN) ; 96 b.append("\n") ; 97 for(int i = 0 ; i < units_.size(); i++) { 98 WebUnit unit = (WebUnit) units_.get(i) ; 99 WebUnitMonitor monitor = unit.getMonitor() ; 100 appendColumn(b, unit.getName(), NAME_COLUMN) ; 101 appendColumn(b, Integer.toString(monitor.getCounter()), COUNTER_COLUMN) ; 102 appendColumn(b, Integer.toString(monitor.getErrorCounter()), ERROR_COLUMN) ; 103 appendColumn(b, Integer.toString(monitor.getXhtmlMalformedCounter()), MALFORMED_COLUMN) ; 104 appendColumn(b, Long.toString(monitor.getAvgExecutionTime()), AVG_TIME_COLUMN) ; 105 appendColumn(b, Float.toString((float)monitor.getAvgContentLength()/1000), CONTENT_LENGTH_COLUMN) ; 106 appendColumn(b, Float.toString((float)monitor.getSumContentLength()/1000), SUM_CONTENT_LENGTH_COLUMN) ; 107 b.append("\n") ; 108 } 109 return b.toString() ; 110 } 111 112 public void appendHtmlTextSummary(StringBuffer b) { 113 b.append("Suite Name: ").append(name_).append("<br/>"); 114 b.append("Description: ").append(description_).append("<br/>"); 115 b.append("<table class='WebUnitSuite' width='100%'>"). 116 append("<tr>"). 117 append("<th>").append("Unit Name").append("</th>"). 118 append("<th>").append("req").append("</th>"). 119 append("<th>").append("err").append("</th>"). 120 append("<th>").append("Malformed").append("</th>"). 121 append("<th>").append("Avg(ms)").append("</th>"). 122 append("<th>").append("Avg(kb)").append("</th>"). 123 append("<th>").append("Sum(kb)").append("</th>"). 124 append("<th>").append("Desc").append("</th>"). 125 append("</tr>"); 126 for(int i = 0 ; i < units_.size(); i++) { 127 WebUnit unit = (WebUnit) units_.get(i) ; 128 WebUnitMonitor monitor = unit.getMonitor() ; 129 b.append("<tr>"). 130 append("<td>").append(unit.getName()).append("</td>"). 131 append("<td align='center'>").append(monitor.getCounter()).append("</td>"). 132 append("<td align='center'>").append(monitor.getErrorCounter()).append("</td>"). 133 append("<td align='center'>").append(monitor.getXhtmlMalformedCounter()).append("</td>"). 134 append("<td align='center'>").append(monitor.getAvgExecutionTime()).append("</td>"). 135 append("<td align='center'>").append((float)monitor.getAvgContentLength()/1000).append("</td>"). 136 append("<td align='center'>").append((float)monitor.getSumContentLength()/1000).append("</td>"). 137 append("<td>").append(unit.getDescription()).append("</td>"). 138 append("</tr>") ; 139 } 140 b.append("</table>") ; 141 } 142 143 static public String STYLES = 144 "<style type='text/css'> \n" + 145 " .WebUnitSuite { \n" + 146 " } \n" + 147 " .WebUnitSuite th { \n" + 148 " border: 1px solid #CCCCCC ; \n" + 149 " padding: 2px ; \n" + 150 " background: #bbb ; \n" + 151 " color: #074B88; \n" + 152 " } \n" + 153 " .WebUnitSuite td { \n" + 154 " border: 1px solid #CCCCCC ; \n" + 155 " padding: 2px ; \n" + 156 " } \n" + 157 "</style>\n" ; 158 159 public String getHtmlTextSummary() { 160 StringBuffer b = new StringBuffer () ; 161 b.append("<html>\n") ; 162 b. append("<head>\n") ; 163 b.append(STYLES) ; 164 b. append("</head>\n") ; 165 b. append("<body>\n") ; 166 appendHtmlTextSummary(b) ; 167 b. append("</body>\n") ; 168 b.append("</html>\n") ; 169 return b.toString() ; 170 } 171 } 172 | Popular Tags |