public void test(int nrTasks, int... nrConcurrent) { try { configureLogging(); HibernateUtil.configureHibernate(ApplicationProperties.getProperties()); startServer(); List<Operation> operations = operations(); Collections.shuffle(operations); for (int c : nrConcurrent) { run( nrTasks <= 0 || operations.size() <= nrTasks ? operations : operations.subList(0, nrTasks), c); } logCounters(); writeReports(); stopServer(); } catch (Exception e) { sLog.fatal("Test failed: " + e.getMessage(), e); } finally { close(); } }
public static void main(String[] args) { try { HibernateUtil.configureHibernate(ApplicationProperties.getProperties()); Long sessionId = Long.valueOf(ApplicationProperties.getProperty("tmtbl.pdf.worksheet.session", "165924")); Session session = new SessionDAO().get(sessionId); if (session == null) { System.err.println( "Academic session " + sessionId + " not found, use property tmtbl.pdf.worksheet.session to set academic session."); System.exit(0); } else { System.out.println("Session: " + session); } TreeSet subjectAreas = null; if (args.length > 0) { subjectAreas = new TreeSet(); for (int i = 0; i < args.length; i++) { SubjectArea sa = SubjectArea.findByAbbv(sessionId, args[i]); if (sa == null) System.err.println("Subject area " + args[i] + " not found."); else subjectAreas.add(sa); } } else { subjectAreas = new TreeSet(SubjectArea.getSubjectAreaList(sessionId)); } for (Iterator i = subjectAreas.iterator(); i.hasNext(); ) { SubjectArea sa = (SubjectArea) i.next(); System.out.println("Printing subject area " + sa.getSubjectAreaAbbreviation() + " ..."); FileOutputStream out = new FileOutputStream(sa.getSubjectAreaAbbreviation() + ".pdf"); List<SubjectArea> sas = new ArrayList<SubjectArea>(); sas.add(sa); PdfWorksheet.print(out, sas); out.flush(); out.close(); } HibernateUtil.closeHibernate(); } catch (Exception e) { e.printStackTrace(); } }
private Object answer(Object command) throws Exception { if ("quit".equals(command)) { stopConnection(); stopService(); return "ack"; } if ("ping".equals(command)) { iLastPing = System.currentTimeMillis(); if (iProxy != null && !iServers.contains(iProxy)) { sLog.warn("Server " + iProxy + " is alive, but it is not registered."); iServers.add(iProxy); } return "ack"; } if ("url".equals(command)) { return HibernateUtil.getConnectionUrl(); } if ("properties".equals(command)) { return ApplicationProperties.getProperties(); } if ("disconnect".equals(command)) { unregister(); stopConnection(); return "ack"; } if (command instanceof Object[]) { Object cmd[] = (Object[]) command; if ("connect".equals(cmd[0])) { int port = ((Integer) cmd[1]).intValue(); iProxy = new RemoteSolverServerProxy(iSocket.getInetAddress(), port, this); sLog.debug("Sever " + iProxy + " connected."); synchronized (iServers) { if (iServers.contains(iProxy)) { sLog.warn("Previous run of the server " + iProxy + " was not properly disconnected."); for (Iterator i = iServers.iterator(); i.hasNext(); ) { RemoteSolverServerProxy oldProxy = (RemoteSolverServerProxy) i.next(); if (oldProxy.equals(iProxy)) { try { execute(new DisconnectProxyCallback(oldProxy), 10000); } catch (Exception e) { } } } iServers.remove(iProxy); } iServers.add(iProxy); } return "ack"; } if ("saveToFile".equals(cmd[0])) { TimetableInfoUtil.getInstance().saveToFile((String) cmd[1], (TimetableInfo) cmd[2]); return "ack"; } if ("loadFromFile".equals(cmd[0])) { return TimetableInfoUtil.getInstance().loadFromFile((String) cmd[1]); } if ("deleteFile".equals(cmd[0])) { TimetableInfoUtil.getInstance().deleteFile((String) cmd[1]); return "ack"; } if ("resource".equals(cmd[0])) { URL resource = SolverRegisterService.class.getClassLoader().getResource((String) cmd[1]); if (resource == null) return null; ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream in = resource.openStream(); byte[] buffer = new byte[1024]; int read = 0; while ((read = in.read(buffer)) >= 0) out.write(buffer, 0, read); out.flush(); out.close(); in.close(); return out.toByteArray(); } if ("refreshSolution".equals(cmd[0])) { try { Solution.refreshSolution((Long) cmd[1]); } finally { _BaseRootDAO.closeCurrentThreadSessions(); } return null; } if ("hasRoomAvailability".equals(cmd[0])) { return new Boolean(RoomAvailability.getInstance() != null); } if ("activateRoomAvailability".equals(cmd[0])) { if (RoomAvailability.getInstance() != null) { RoomAvailability.getInstance() .activate( new SessionDAO().get((Long) cmd[1]), (Date) cmd[2], (Date) cmd[3], (String) cmd[4], "true" .equals( ApplicationProperties.getProperty( "tmtbl.room.availability.solver.waitForSync", "true"))); return "ack"; } return null; } if ("getRoomAvailability".equals(cmd[0])) { if (RoomAvailability.getInstance() != null) { return RoomAvailability.getInstance() .getRoomAvailability( new LocationDAO().get((Long) cmd[1]), (Date) cmd[2], (Date) cmd[3], (String) cmd[4]); } return null; } if ("getRoomAvailabilityTimeStamp".equals(cmd[0])) { if (RoomAvailability.getInstance() != null) { return RoomAvailability.getInstance() .getTimeStamp((Date) cmd[1], (Date) cmd[2], (String) cmd[3]); } return null; } } sLog.warn("Unknown command " + command); return null; }
protected void close() { if (iChannel != null && iChannel.isConnected()) iChannel.disconnect(); if (iChannel != null && iChannel.isOpen()) iChannel.close(); OnlineSectioningLogger.stopLogger(); HibernateUtil.closeHibernate(); }