1 64 65 package com.jcorporate.expresso.ext.controller; 66 67 import com.jcorporate.expresso.core.controller.ControllerException; 68 import com.jcorporate.expresso.core.controller.ControllerRequest; 69 import com.jcorporate.expresso.core.controller.ControllerResponse; 70 import com.jcorporate.expresso.core.controller.DBController; 71 import com.jcorporate.expresso.core.controller.NonHandleableException; 72 import com.jcorporate.expresso.core.controller.Output; 73 import com.jcorporate.expresso.core.controller.State; 74 import com.jcorporate.expresso.core.misc.DateTime; 75 import com.jcorporate.expresso.core.misc.EventHandler; 76 import com.jcorporate.expresso.ext.dbobj.PerfTestResult; 77 import com.jcorporate.expresso.ext.dbobj.PerfTestSet; 78 import com.jcorporate.expresso.ext.dbobj.PerfTests; 79 import com.jcorporate.expresso.kernel.util.FastStringBuffer; 80 import com.jcorporate.expresso.services.dbobj.Event; 81 82 import java.util.Iterator ; 83 84 85 94 public class HealthCheck 95 extends DBController { 96 97 public HealthCheck() { 98 State healthcheck = new State("healthcheck", "Run HealthCheck"); 99 addState(healthcheck); 100 setInitialState("healthcheck"); 101 this.setSchema(com.jcorporate.expresso.core.ExpressoSchema.class); 102 } 103 104 109 public ControllerResponse newState(String newState, 110 ControllerRequest params) 111 throws ControllerException, 112 NonHandleableException { 113 ControllerResponse myResponse = super.newState(newState, params); 114 115 if (newState.equals("healthcheck")) { 116 healthCheckState(myResponse, params); 117 } 118 119 return myResponse; 120 } 121 122 123 126 private void healthCheckState(ControllerResponse myResponse, 127 ControllerRequest params) 128 throws ControllerException { 129 FastStringBuffer mailMessage = new FastStringBuffer(1024); 130 131 int testCount = 0; 132 133 try { 134 mailMessage.append("Health Check Starts at " + 135 DateTime.getDateTimeString() + "\n"); 136 myResponse.addOutput(new Output("Health Check Starts - db '" + params.getDataContext() + 137 "'")); 138 FastStringBuffer message = new FastStringBuffer(256); 139 message.append("HealthCheck\n"); 140 message.append("\nHealthCheck at "); 141 message.append(DateTime.getDateTimeForDB(params.getDataContext())); 142 message.append("\n"); 143 message.append("For database/context '"); 144 message.append(params.getDataContext()); 145 message.append("'\n\n"); 146 147 boolean noProblems = true; 148 PerfTestSet ps = new PerfTestSet(); 149 ps.setDataContext(params.getDataContext()); 150 151 PerfTestSet oneSet = null; 152 ps.setField("HealthCheck", "Y"); 153 154 PerfTestResult totalResult = new PerfTestResult(); 155 PerfTestResult oneResult = null; 156 157 for (Iterator pse = ps.searchAndRetrieveList().iterator(); 158 pse.hasNext();) { 159 oneSet = (PerfTestSet) pse.next(); 160 oneResult = PerfTests.runSet(params.getDataContext(), 161 oneSet.getField("SetNumber"), 162 null); 163 totalResult.add(oneResult); 164 testCount++; 165 } 166 167 message.append(totalResult.getMessage()); 168 message.append("\nThere were "); 169 170 if (totalResult.getFailureCount() > 0) { 171 if (totalResult.getFailureCount() == 1) { 172 message.append("was 1 failure, "); 173 } else { 174 message.append("were " + totalResult.getFailureCount() + 175 " failures, "); 176 } 177 } else { 178 message.append("no failures, "); 179 } 180 if (totalResult.getWarningCount() > 0) { 181 if (totalResult.getWarningCount() == 1) { 182 message.append("1 warning, "); 183 } else { 184 message.append("" + totalResult.getWarningCount() + 185 " warnings, "); 186 } 187 } else { 188 message.append("no warnings, "); 189 } 190 191 message.append("and "); 192 193 if (totalResult.getCautionCount() > 0) { 194 if (totalResult.getCautionCount() == 1) { 195 message.append("1 caution, "); 196 } else { 197 message.append("were " + totalResult.getCautionCount() + 198 " cautions, "); 199 } 200 } else { 201 message.append("no cautions."); 202 } 203 204 message.append("\n"); 205 206 if ((totalResult.getFailureCount() > 0) || 207 (totalResult.getWarningCount() > 0) || 208 (totalResult.getCautionCount() > 0)) { 209 noProblems = false; 210 } 211 212 myResponse.addOutput(new Output("There were " + totalResult.getCurrentUsers() + 213 " users logged in during tests")); 214 215 if (noProblems) { 216 myResponse.addOutput(new Output("HealthCheck tests successful")); 217 } else { 218 myResponse.addOutput(new Output("HealthCheck tests indicate problem")); 219 } 220 221 myResponse.addOutput(new Output(message.toString())); 222 new Event(params.getDataContext(), "HEALTH", message.toString(), 223 noProblems); 224 EventHandler.flush(); 225 } catch (Exception de) { 226 throw new ControllerException(de); 227 } 228 229 myResponse.addOutput(new Output("All Checks Complete. Ran " + testCount + 230 " test sets.")); 231 } 232 233 234 237 public String getTitle() { 238 return "System Health Check"; 239 } 240 } 241 242 | Popular Tags |