1 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AlarmTaskThread.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">vfc-nfvo-driver-ems-ems-boco</a> > <a href="index.source.html" class="el_package">org.onap.vfc.nfvo.emsdriver.collector.alarm</a> > <span class="el_source">AlarmTaskThread.java</span></div><h1>AlarmTaskThread.java</h1><pre class="source lang-java linenums">/**
 
   2  * Copyright 2017 BOCO Corporation.  CMCC Technologies Co., Ltd
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  16 package org.onap.vfc.nfvo.emsdriver.collector.alarm;
 
  18 import java.io.BufferedInputStream;
 
  19 import java.io.BufferedOutputStream;
 
  20 import java.io.IOException;
 
  21 import java.net.Socket;
 
  22 import java.net.SocketException;
 
  23 import java.net.UnknownHostException;
 
  25 import org.apache.commons.logging.Log;
 
  26 import org.apache.commons.logging.LogFactory;
 
  27 import org.onap.vfc.nfvo.emsdriver.commons.constant.Constant;
 
  28 import org.onap.vfc.nfvo.emsdriver.commons.model.CollectVo;
 
  29 import org.onap.vfc.nfvo.emsdriver.commons.utils.StringUtil;
 
  30 import org.onap.vfc.nfvo.emsdriver.messagemgr.MessageChannel;
 
  31 import org.onap.vfc.nfvo.emsdriver.messagemgr.MessageChannelFactory;
 
  34 public class AlarmTaskThread extends Thread{
 
  35 <span class="pc" id="L35">      public  Log log = LogFactory.getLog(AlarmTaskThread.class);</span>
 
  37 <span class="pc" id="L37">      private HeartBeat heartBeat = null;</span>
 
  39 <span class="pc" id="L39">      private boolean isStop = false;</span>
 
  40 <span class="pc" id="L40">      private CollectVo collectVo = null;</span>
 
  41 <span class="pc" id="L41">      private int read_timeout = Constant.READ_TIMEOUT_MILLISECOND;</span>
 
  44 <span class="pc" id="L44">      private Socket socket = null;</span>
 
  45 <span class="pc" id="L45">      private BufferedInputStream is = null;</span>
 
  46 <span class="pc" id="L46">      private BufferedOutputStream dos = null;</span>
 
  48         private MessageChannel alarmChannel;
 
  51         public AlarmTaskThread() {
 
  52 <span class="nc" id="L52">              super();</span>
 
  53 <span class="nc" id="L53">      }</span>
 
  55 <span class="fc" id="L55">      public AlarmTaskThread(CollectVo collectVo) {</span>
 
  57 <span class="fc" id="L57">              this.collectVo = collectVo;</span>
 
  58 <span class="fc" id="L58">      }</span>
 
  61 <span class="nc" id="L61">              alarmChannel = MessageChannelFactory.getMessageChannel(Constant.RESULT_CHANNEL_KEY);</span>
 
  63 <span class="nc" id="L63">                      this.init();</span>
 
  64 <span class="nc bnc" id="L64" title="All 2 branches missed.">                   while(!this.isStop){</span>
 
  67 <span class="nc" id="L67">                                      body = this.receive();</span>
 
  69 <span class="nc" id="L69">                                              alarmChannel.put(body);</span>
 
  70 <span class="nc" id="L70">                                      } catch (InterruptedException e) {</span>
 
  71 <span class="nc" id="L71">                                              log.error(StringUtil.getStackTrace(e));</span>
 
  72 <span class="nc" id="L72">                                      }</span>
 
  73 <span class="nc" id="L73">                              } catch (Exception e) {</span>
 
  74 <span class="nc" id="L74">                                      e.printStackTrace();</span>
 
  75 <span class="nc" id="L75">                                      reinit();</span>
 
  76 <span class="nc" id="L76">                              }</span>
 
  78 <span class="nc" id="L78">              } catch (Exception e) {</span>
 
  79 <span class="nc" id="L79">                      log.error(StringUtil.getStackTrace(e));</span>
 
  80 <span class="nc" id="L80">              }</span>
 
  81 <span class="nc" id="L81">      }</span>
 
  85         public String receive() throws Exception {
 
  87 <span class="fc" id="L87">              Msg msg =null;</span>
 
  88 <span class="fc" id="L88">              String retString = null;</span>
 
  90 <span class="pc bpc" id="L90" title="1 of 4 branches missed.">          while (retString == null && !this.isStop) {</span>
 
  92 <span class="fc" id="L92">                      msg = MessageUtil.readOneMsg(is);</span>
 
  93 <span class="fc" id="L93">                      log.debug("msg = "+msg.toString(true));</span>
 
  94 <span class="fc" id="L94">                      log.info("msg.getMsgType().name = "+msg.getMsgType().name);</span>
 
  95 <span class="fc bfc" id="L95" title="All 2 branches covered.">                  if("ackLoginAlarm".equalsIgnoreCase(msg.getMsgType().name)){</span>
 
  96 <span class="fc" id="L96">                              log.debug("receive login ack");</span>
 
  97 <span class="fc" id="L97">                              boolean suc = this.ackLoginAlarm(msg);</span>
 
  98 <span class="pc bpc" id="L98" title="1 of 2 branches missed.">                          if(suc){</span>
 
 100 <span class="pc bpc" id="L100" title="1 of 2 branches missed.">                                 if(reqId == Integer.MAX_VALUE){</span>
 
 101 <span class="nc" id="L101">                                             reqId = 0;</span>
 
 103 <span class="fc" id="L103">                                     reqId ++;</span>
 
 104 <span class="fc" id="L104">                                     Msg  msgheart = MessageUtil.putHeartBeatMsg(reqId);</span>
 
 105 <span class="fc" id="L105">                                     heartBeat =  new HeartBeat(socket,msgheart); </span>
 
 106 <span class="fc" id="L106">                                     heartBeat.setName("CMCC_JT_HeartBeat");</span>
 
 108 <span class="fc" id="L108">                                     heartBeat.start();</span>
 
 110 <span class="fc" id="L110">                             retString = null;</span>
 
 113 <span class="pc bpc" id="L113" title="1 of 2 branches missed.">                 if("ackHeartBeat".equalsIgnoreCase(msg.getMsgType().name)){</span>
 
 114 <span class="nc" id="L114">                             log.debug("received heartBeat message:"+msg.getBody());</span>
 
 115 <span class="nc" id="L115">                             retString = null;</span>
 
 120 <span class="fc bfc" id="L120" title="All 2 branches covered.">                 if("realTimeAlarm".equalsIgnoreCase(msg.getMsgType().name)){</span>
 
 121 <span class="fc" id="L121">                             log.debug("received alarm message");</span>
 
 122 <span class="fc" id="L122">                             retString =  msg.getBody();</span>
 
 125 <span class="fc bfc" id="L125" title="All 2 branches covered.">                 if(retString == null){</span>
 
 126 <span class="fc" id="L126">                             Thread.sleep(100);</span>
 
 129 <span class="fc" id="L129">             return retString;</span>
 
 132         public void init() throws Exception {
 
 133 <span class="fc" id="L133">             isStop = false;</span>
 
 135 <span class="fc" id="L135">             String host = collectVo.getIP();</span>
 
 137 <span class="fc" id="L137">             String port = collectVo.getPort();</span>
 
 139 <span class="fc" id="L139">             String user = collectVo.getUser();</span>
 
 141 <span class="fc" id="L141">             String password = collectVo.getPassword();</span>
 
 143 <span class="fc" id="L143">             String read_timeout = collectVo.getRead_timeout();</span>
 
 144 <span class="pc bpc" id="L144" title="3 of 4 branches missed.">         if ((read_timeout != null) && (read_timeout.trim().length() > 0)) {</span>
 
 146 <span class="nc" id="L146">                     this.read_timeout = Integer.parseInt(read_timeout);</span>
 
 147 <span class="nc" id="L147">                   } catch (NumberFormatException e) {</span>
 
 148 <span class="nc" id="L148">                     log.error(StringUtil.getStackTrace(e));</span>
 
 149 <span class="nc" id="L149">                   }</span>
 
 151 <span class="fc" id="L151">             log.info("socket connect host=" + host + ", port=" + port);</span>
 
 153 <span class="fc" id="L153">                     int portInt = Integer.parseInt(port);</span>
 
 154 <span class="fc" id="L154">                     socket = new Socket(host, portInt);</span>
 
 156 <span class="nc" id="L156">             } catch (UnknownHostException e) {</span>
 
 157 <span class="nc" id="L157">                     throw new Exception("remote host [" + host + "]connect fail" + StringUtil.getStackTrace(e));</span>
 
 158 <span class="nc" id="L158">             } catch (IOException e) {</span>
 
 159 <span class="nc" id="L159">                     throw new Exception("create socket IOException " + StringUtil.getStackTrace(e));</span>
 
 160 <span class="fc" id="L160">             }</span>
 
 162 <span class="fc" id="L162">                     socket.setSoTimeout(this.read_timeout);</span>
 
 163 <span class="fc" id="L163">                     socket.setTcpNoDelay(true);</span>
 
 164 <span class="fc" id="L164">                     socket.setKeepAlive(true);</span>
 
 165 <span class="nc" id="L165">             } catch (SocketException e) {</span>
 
 166 <span class="nc" id="L166">                     throw new Exception(" SocketException " + StringUtil.getStackTrace(e));</span>
 
 167 <span class="fc" id="L167">             }</span>
 
 169 <span class="fc" id="L169">                     dos = new BufferedOutputStream(socket.getOutputStream());</span>
 
 171 <span class="fc" id="L171">                     Msg  msg = MessageUtil.putLoginMsg(user,password);</span>
 
 174 <span class="fc" id="L174">                             log.debug("send login message "+msg.toString(false));</span>
 
 175 <span class="fc" id="L175">                             MessageUtil.writeMsg(msg,dos);</span>
 
 177 <span class="nc" id="L177">                     } catch (Exception e) {</span>
 
 178 <span class="nc" id="L178">                             log.error("send login message is fail "+StringUtil.getStackTrace(e));</span>
 
 179 <span class="fc" id="L179">                     }</span>
 
 181 <span class="fc" id="L181">                     is = new BufferedInputStream(socket.getInputStream());</span>
 
 183 <span class="nc" id="L183">             } catch (SocketException e) {</span>
 
 184 <span class="nc" id="L184">                     throw new Exception(StringUtil.getStackTrace(e));</span>
 
 185 <span class="fc" id="L185">             }</span>
 
 186 <span class="fc" id="L186">     }</span>
 
 188         private boolean ackLoginAlarm(Msg msg) throws Exception {
 
 190 <span class="fc" id="L190">             boolean is_success = false;</span>
 
 192 <span class="fc" id="L192">                     String loginres = msg.getBody();</span>
 
 193                         //ackLoginAlarm; result=fail(succ); resDesc=username-error
 
 194 <span class="fc" id="L194">                     String [] loginbody = loginres.split(";");</span>
 
 195 <span class="pc bpc" id="L195" title="1 of 2 branches missed.">                 if(loginbody.length > 1){</span>
 
 196 <span class="fc bfc" id="L196" title="All 2 branches covered.">                         for(String str :loginbody){</span>
 
 197 <span class="fc bfc" id="L197" title="All 2 branches covered.">                     if(str.contains("=")){</span>
 
 198 <span class="fc" id="L198">                             String [] paras1 = str.split("=",-1);</span>
 
 199 <span class="fc bfc" id="L199" title="All 2 branches covered.">                         if("result".equalsIgnoreCase(paras1[0].trim())){</span>
 
 200 <span class="pc bpc" id="L200" title="1 of 2 branches missed.">                                                 if("succ".equalsIgnoreCase(paras1[1].trim())){</span>
 
 201 <span class="fc" id="L201">                                                             is_success = true;</span>
 
 203 <span class="nc" id="L203">                                                             is_success = false;</span>
 
 209 <span class="nc" id="L209">                             log.error("login ack body Incorrect formatbody=" + loginres);</span>
 
 213 <span class="nc" id="L213">             } catch (Exception e) {</span>
 
 214 <span class="nc" id="L214">                     log.error("pocess login ack fail"+StringUtil.getStackTrace(e));</span>
 
 215 <span class="fc" id="L215">             }</span>
 
 216 <span class="pc bpc" id="L216" title="1 of 2 branches missed.">         if (is_success) {</span>
 
 217 <span class="fc" id="L217">                     log.info("login sucess receive login ack " + msg.getBody());</span>
 
 219 <span class="nc" id="L219">                     log.error("login fail receive login ack  " + msg.getBody());</span>
 
 220 <span class="nc" id="L220">                     this.close();</span>
 
 221 <span class="nc" id="L221">                     this.isStop = true;</span>
 
 222 <span class="nc" id="L222">                     throw new Exception("login fail quit");</span>
 
 224 <span class="fc" id="L224">             return is_success;</span>
 
 227         public void close() {
 
 229 <span class="nc bnc" id="L229" title="All 2 branches missed.">          if(heartBeat != null){</span>
 
 230 <span class="nc" id="L230">                     heartBeat.setStop(true);</span>
 
 233 <span class="nc bnc" id="L233" title="All 2 branches missed.">          if (is != null) {</span>
 
 235 <span class="nc" id="L235">                             is.close();</span>
 
 236 <span class="nc" id="L236">                     } catch (IOException e) {</span>
 
 238 <span class="nc" id="L238">                             is = null;</span>
 
 239 <span class="nc" id="L239">                     }</span>
 
 242 <span class="nc bnc" id="L242" title="All 2 branches missed.">          if (dos != null) {</span>
 
 244 <span class="nc" id="L244">                             dos.close();</span>
 
 245 <span class="nc" id="L245">                     } catch (IOException e) {</span>
 
 247 <span class="nc" id="L247">                             dos = null;</span>
 
 248 <span class="nc" id="L248">                     }</span>
 
 251 <span class="nc bnc" id="L251" title="All 2 branches missed.">          if (socket != null) {</span>
 
 253 <span class="nc" id="L253">                             socket.close();</span>
 
 254 <span class="nc" id="L254">                     } catch (IOException e) {</span>
 
 256 <span class="nc" id="L256">                             socket = null;</span>
 
 257 <span class="nc" id="L257">                     }</span>
 
 260 <span class="nc" id="L260">     }</span>
 
 262         public void  reinit() {
 
 263 <span class="nc" id="L263">             int time = 0;</span>
 
 264 <span class="nc" id="L264">             close();</span>
 
 265 <span class="nc bnc" id="L265" title="All 2 branches missed.">          while(!this.isStop) {</span>
 
 266 <span class="nc" id="L266">                     close();</span>
 
 267 <span class="nc" id="L267">                     time++;</span>
 
 269 <span class="nc" id="L269">                             Thread.sleep(1000 * 30);</span>
 
 270 <span class="nc" id="L270">                             init();</span>
 
 271 <span class="nc" id="L271">                             return;</span>
 
 272 <span class="nc" id="L272">                     } catch (Exception e) {</span>
 
 273 <span class="nc" id="L273">                             log.error("Number ["+time+"]reconnect ["+collectVo.getIP()+"]fail" );</span>
 
 274 <span class="nc" id="L274">                     }</span>
 
 276 <span class="nc" id="L276">     }</span>
 
 279          * @param isStop the isStop to set
 
 281         public void setStop(boolean isStop) {
 
 282 <span class="nc" id="L282">             this.isStop = isStop;</span>
 
 283 <span class="nc" id="L283">     }</span>
 
 286          * @return the heartBeat
 
 288         public HeartBeat getHeartBeat() {
 
 289 <span class="nc" id="L289">             return heartBeat;</span>
 
 295 </pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.7.201606060606</span></div></body></html>