/** * <p>Constructor for Tl1AutonomousMessage.</p> * * @param rawMessage a {@link java.lang.String} object. */ public Tl1AutonomousMessage(String rawMessage) { super.setRawMessage(rawMessage); m_autoHeader = new AutoHeader(); m_autoId = new AutoId(); m_autoBlock = new AutoBlock(); m_terminator = ";\n"; }
/** * <p>onInit</p> */ @Override public synchronized void onInit() { initializeTl1Connections(); }
private BufferedReader getReader() throws InterruptedException { if (m_reader == null) { m_reader = createReader(); } return m_reader; }
public void testProcess() { String sampleMessage = " GPON15000 2008-07-31 18:29:49\n" + "*C 0 REPT ALM BITS\n" + " \"1-4:NTFCNCDE=CR,CONDTYPE=FAIL,SRVEFF=SA,OCRDAT=09-23,OCRTM=02-03-04,LOCN=NEND,DIRN=RCV\"\n" + ";\n" + ""; Tl1AutonomousMessage alarm = m_processor.process(sampleMessage, Tl1Message.AUTONOMOUS); assertNotNull(alarm.getRawMessage()); assertNotNull(alarm.getHeader()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); assertEquals("2008-07-31", formatter.format(alarm.getHeader().getTimestamp())); formatter = new SimpleDateFormat("HH:mm:ss"); assertEquals("18:29:49", formatter.format(alarm.getHeader().getTimestamp())); assertEquals("GPON15000", alarm.getHost()); assertEquals("GPON15000", alarm.getHeader().getSid()); assertEquals(alarm.getTimestamp(), alarm.getHeader().getTimestamp()); assertEquals("*C 0 REPT ALM BITS", alarm.getId().getRawMessage()); assertEquals("*C", alarm.getId().getAlarmCode()); assertEquals("0", alarm.getId().getAlarmTag()); assertEquals("REPT ALM BITS", alarm.getId().getVerb()); assertEquals("\"1-4:NTFCNCDE=CR,CONDTYPE=FAIL,SRVEFF=SA,OCRDAT=09-23,OCRTM=02-03-04,LOCN=NEND,DIRN=RCV\"", alarm.getAutoBlock().getBlock()); assertEquals("CR", alarm.getAutoBlock().getNtfcncde()); }
private void processMessage(Tl1AutonomousMessage message) { LOG.debug("processMessage: Processing message: {}", message); EventBuilder bldr = new EventBuilder(Tl1AutonomousMessage.UEI, "Tl1d"); bldr.setHost(message.getHost()); bldr.setInterface(addr(message.getHost())); //interface is the IP bldr.setService("TL-1"); //Service it TL-1 bldr.setSeverity(message.getId().getHighestSeverity()); bldr.setTime(message.getTimestamp()); bldr.addParam("raw-message", message.getRawMessage()); bldr.addParam("alarm-code", message.getId().getAlarmCode()); bldr.addParam("atag", message.getId().getAlarmTag()); bldr.addParam("verb", message.getId().getVerb()); bldr.addParam("autoblock", message.getAutoBlock().getBlock()); bldr.addParam("aid",message.getAutoBlock().getAid()); bldr.addParam("additionalParams",message.getAutoBlock().getAdditionalParams()); m_eventForwarder.sendNow(bldr.getEvent()); LOG.debug("processMessage: Message processed: {}", message); }
private boolean parseId(String line, Tl1AutonomousMessage message) { StringTokenizer idParser = new StringTokenizer(line); if (idParser.countTokens() < 3) { throw new IllegalArgumentException("The line: "+line+" is not an Autonomouse message id. Expected 3 or more tokens " + "and received: "+idParser.countTokens()); } message.getId().setRawMessage(line); message.getId().setAlarmCode(idParser.nextToken()); message.getId().setAlarmTag(idParser.nextToken()); final StringBuilder bldr = new StringBuilder(); while(idParser.hasMoreTokens()) { bldr.append(idParser.nextToken()); bldr.append(" "); } message.getId().setVerb(bldr.toString().trim()); return true; }
/** {@inheritDoc} */ @Override public Tl1AutonomousMessage process(String rawMessage, int messageType) { StringTokenizer lineParser = new StringTokenizer(rawMessage, "\n"); Tl1AutonomousMessage message = new Tl1AutonomousMessage(rawMessage); try { processHeader(lineParser, message); processId(lineParser, message); processAutoBlock(lineParser, message); } catch (IllegalStateException e) { return null; } return message; }
private void waitUntilNextConnectTime() throws InterruptedException { LOG.debug("waitUntilNextConnectTime: current connection attempts: {}", m_reconnectAttempts); if (isStarted()) { if (m_sleeper == null) { m_sleeper = new TimeoutSleeper(); } m_reconnectAttempts++; /* If the system is not responding, we want to wait longer and longer for the retry */ long waitTime = computeWait(); LOG.info("waitUntilNextConnectTime: Waiting {} ms......", waitTime); m_sleeper.sleep(waitTime); } }
private Tl1AutonomousMessage detectMessageType(StringBuilder rawMessage) { //check token 5 to see if this is a reply message. This implies that the Tl1Client must //track message TAGs (Correlation TAGs (CTAG) vs. Autonomous TAGs (ATAG)) if(isAutonomousMessage(rawMessage)) { return m_messageProcessor.process(rawMessage.toString(), Tl1Message.AUTONOMOUS); } return null; }
/** * <p>onStop</p> */ @Override public synchronized void onStop() { stopListeners(); m_tl1MesssageProcessor.interrupt(); removeClients(); }
private void processId(StringTokenizer lineParser, Tl1AutonomousMessage message) { boolean foundId = false; while(!foundId ) { while (lineParser.hasMoreElements() && !foundId) { String line = (String) lineParser.nextElement(); if (line != null && !(line.equals(message.getTerminator()))) { foundId = parseId(line, message); } } } }
private void processAutoBlock(StringTokenizer lineParser, Tl1AutonomousMessage message) { boolean foundId = false; while(!foundId ) { while (lineParser.hasMoreElements() && !foundId) { String line = (String) lineParser.nextElement(); if (line != null && !(line.equals(message.getTerminator()))) { foundId = true; foundId = parseAutoBlock(line.trim(), message); //message.getAutoBlock().setBlock(line.trim()); } } } }
private void processHeader(StringTokenizer lineParser, Tl1AutonomousMessage message) { boolean foundHeader = false; while(!foundHeader ) { while (lineParser.hasMoreTokens() && !foundHeader) { String line = (String) lineParser.nextToken(); if (line != null && !(line.equals(message.getTerminator()))) { try { foundHeader = parseHeader(line, message); } catch (IllegalArgumentException e) { } } } } if (!foundHeader) { throw new IllegalStateException("No TL1 Header found in: "+lineParser.toString()); } }
private void stopListeners() { LOG.info("stopListeners: calling stop on all clients..."); for (Tl1Client client : m_tl1Clients) { LOG.debug("stopListeners: calling stop on client: {}", client); client.stop(); } LOG.info("stopListeners: clients stopped."); }
private void startClients() { LOG.info("startClients: starting clients..."); for (Tl1Client client : m_tl1Clients) { LOG.debug("startClients: starting client: {}", client); client.start(); LOG.debug("startClients: started client."); } LOG.info("startClients: clients started."); }
private void doMessageProcessing() { LOG.debug("doMessageProcessing: Processing messages."); boolean cont = true; while (cont ) { try { LOG.debug("doMessageProcessing: taking message from queue.."); Tl1AutonomousMessage message = m_tl1Queue.take(); LOG.debug("doMessageProcessing: message taken: {}", message); processMessage(message); } catch (InterruptedException e) { LOG.warn("doMessageProcessing: received interrupt", e); break; } } LOG.debug("doMessageProcessing: Exiting processing messages."); }
private void createAndQueueTl1Message(StringBuilder rawMessageBuilder) { LOG.debug("readMessages: offering message to queue: {}", rawMessageBuilder.toString()); Tl1AutonomousMessage message = detectMessageType(rawMessageBuilder); if (message != null) { m_tl1Queue.offer(message); LOG.debug("readMessages: successfully offered to queue."); } else { LOG.debug("readMessages: message was null, not offered to queue."); } }
/** * <p>onStart</p> */ @Override public synchronized void onStart() { LOG.info("onStart: Initializing Tl1d message processing."); m_tl1MesssageProcessor = new Thread("Tl1-Message-Processor") { @Override public void run() { doMessageProcessing(); } }; LOG.info("onStart: starting message processing thread..."); m_tl1MesssageProcessor.start(); LOG.info("onStart: message processing thread started."); startClients(); LOG.info("onStart: Finished Initializing Tl1d connections."); }
/** * <p>stop</p> */ @Override public void stop() { LOG.info("Stopping TL1 client: {}:{}", m_host, String.valueOf(m_port)); setStarted(false); //waiting a second or so for the reader thread to clean up the socket and shut //itself down. try { Thread.sleep(1000); } catch (InterruptedException e) { LOG.error("stop: {}", e); } }
""; Tl1AutonomousMessage alarm = m_processor.process(sampleMessage, Tl1Message.AUTONOMOUS); assertNotNull(alarm.getRawMessage()); assertNotNull(alarm.getHeader()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); assertEquals("2009-04-20", formatter.format(alarm.getHeader().getTimestamp())); formatter = new SimpleDateFormat("HH:mm:ss"); assertEquals("07:38:35", formatter.format(alarm.getHeader().getTimestamp())); assertEquals("DSALC003", alarm.getHost()); assertEquals("DSALC003", alarm.getHeader().getSid()); assertEquals(alarm.getTimestamp(), alarm.getHeader().getTimestamp()); assertEquals("** 169 REPT ALM ENV", alarm.getId().getRawMessage()); assertEquals("**", alarm.getId().getAlarmCode()); assertEquals("169", alarm.getId().getAlarmTag()); assertEquals("REPT ALM ENV", alarm.getId().getVerb()); assertEquals("\"ENV-2:MJ,MISC,4-7,7-30-15,\\\"Miscellaneous environment alarm\\\"\"", alarm.getAutoBlock().getBlock()); assertEquals("MJ", alarm.getAutoBlock().getNtfcncde());