X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=datarouter-prov%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Freports%2FDailyLatencyReport.java;h=3b3b72a949a1e3d287f182d3b48e21544c2a9b95;hb=68a9ca240970fceaf12bbe91b7bad8e1d98ecd93;hp=a5281c065a68c3ff181fc1bd521bdd400756d2fa;hpb=4261823d84c2b911b68cdf4cb4dc3be429ebe285;p=dmaap%2Fdatarouter.git diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/DailyLatencyReport.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/DailyLatencyReport.java index a5281c06..3b3b72a9 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/DailyLatencyReport.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/DailyLatencyReport.java @@ -37,8 +37,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeSet; - -import org.onap.dmaap.datarouter.provisioning.utils.DB; +import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils; /** * Generate a daily per feed latency report. The report is a .csv file containing the following columns: @@ -65,42 +64,48 @@ import org.onap.dmaap.datarouter.provisioning.utils.DB; * @version $Id: DailyLatencyReport.java,v 1.2 2013/11/06 16:23:54 eby Exp $ */ public class DailyLatencyReport extends ReportBase { - private static final String SELECT_SQL = - "select EVENT_TIME, TYPE, PUBLISH_ID, FEED_FILEID, FEEDID, CONTENT_LENGTH from LOG_RECORDS" + - " where EVENT_TIME >= ? and EVENT_TIME <= ?"; private class Job { - public long pubtime = 0; - public long clen = 0; - public List deltime = new ArrayList(); + private long pubtime = 0; + private long clen = 0; + private List deltime = new ArrayList<>(); public long minLatency() { long n = deltime.isEmpty() ? 0 : Long.MAX_VALUE; - for (Long l : deltime) - n = Math.min(n, l-pubtime); + for (Long l : deltime) { + n = Math.min(n, l - pubtime); + } return n; } + public long maxLatency() { long n = 0; - for (Long l : deltime) - n = Math.max(n, l-pubtime); + for (Long l : deltime) { + n = Math.max(n, l - pubtime); + } return n; } + public long totalLatency() { long n = 0; - for (Long l : deltime) - n += (l-pubtime); + for (Long l : deltime) { + n += (l - pubtime); + } return n; } } + private class Counters { + public final String date; public final int feedid; public final Map jobs; + public Counters(String d, int fid) { date = d; feedid = fid; - jobs = new HashMap(); + jobs = new HashMap<>(); } + public void addEvent(long etime, String type, String id, String fid, long clen) { Job j = jobs.get(id); if (j == null) { @@ -114,81 +119,81 @@ public class DailyLatencyReport extends ReportBase { j.deltime.add(etime); } } + @Override public String toString() { long minsize = Long.MAX_VALUE, maxsize = 0, avgsize = 0; - long minl = Long.MAX_VALUE, maxl = 0; - long fanout = 0, totall = 0, totaln = 0; + long minl = Long.MAX_VALUE, maxl = 0; + long fanout = 0, totall = 0, totaln = 0; for (Job j : jobs.values()) { minsize = Math.min(minsize, j.clen); maxsize = Math.max(maxsize, j.clen); avgsize += j.clen; - minl = Math.min(minl, j.minLatency()); - maxl = Math.max(maxl, j.maxLatency()); - totall += j.totalLatency(); - totaln += j.deltime.size(); - fanout += j.deltime.size(); + minl = Math.min(minl, j.minLatency()); + maxl = Math.max(maxl, j.maxLatency()); + totall += j.totalLatency(); + totaln += j.deltime.size(); + fanout += j.deltime.size(); } if (jobs.size() > 0) { avgsize /= jobs.size(); - fanout /= jobs.size(); + fanout /= jobs.size(); } long avgl = (totaln > 0) ? (totall / totaln) : 0; - return date + "," + feedid + "," + minsize + "," + maxsize + "," + avgsize + "," + minl + "," + maxl + "," + avgl + "," + fanout; + return date + "," + feedid + "," + minsize + "," + maxsize + "," + avgsize + "," + minl + "," + maxl + "," + + avgl + "," + fanout; } } + private long getPstart(String t) { - if (t.indexOf('.') > 0) + if (t.indexOf('.') >= 0) { t = t.substring(0, t.indexOf('.')); + } return Long.parseLong(t); } @Override public void run() { - Map map = new HashMap(); + Map map = new HashMap<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long start = System.currentTimeMillis(); - try { - DB db = new DB(); - @SuppressWarnings("resource") - Connection conn = db.getConnection(); - PreparedStatement ps = conn.prepareStatement(SELECT_SQL); + try (Connection conn = ProvDbUtils.getInstance().getConnection(); + PreparedStatement ps = conn.prepareStatement( + "select EVENT_TIME, TYPE, PUBLISH_ID, FEED_FILEID, FEEDID, " + + "CONTENT_LENGTH from LOG_RECORDS where EVENT_TIME >= ? and EVENT_TIME <= ?")) { ps.setLong(1, from); ps.setLong(2, to); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - String id = rs.getString("PUBLISH_ID"); - int feed = rs.getInt("FEEDID"); - long etime = rs.getLong("EVENT_TIME"); - String type = rs.getString("TYPE"); - String fid = rs.getString("FEED_FILEID"); - long clen = rs.getLong("CONTENT_LENGTH"); - String date = sdf.format(new Date(getPstart(id))); - String key = date + "," + feed; - Counters c = map.get(key); - if (c == null) { - c = new Counters(date, feed); - map.put(key, c); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + String id = rs.getString("PUBLISH_ID"); + int feed = rs.getInt("FEEDID"); + long etime = rs.getLong("EVENT_TIME"); + String type = rs.getString("TYPE"); + String fid = rs.getString("FEED_FILEID"); + long clen = rs.getLong("CONTENT_LENGTH"); + String date = sdf.format(new Date(getPstart(id))); + String key = date + "," + feed; + Counters c = map.get(key); + if (c == null) { + c = new Counters(date, feed); + map.put(key, c); + } + c.addEvent(etime, type, id, fid, clen); } - c.addEvent(etime, type, id, fid, clen); } - rs.close(); - ps.close(); - db.release(conn); } catch (SQLException e) { - e.printStackTrace(); + logger.error("SQLException: " + e.getMessage()); } - logger.debug("Query time: " + (System.currentTimeMillis()-start) + " ms"); - try { - PrintWriter os = new PrintWriter(outfile); + logger.debug("Query time: " + (System.currentTimeMillis() - start) + " ms"); + try (PrintWriter os = new PrintWriter(outfile)) { os.println("date,feedid,minsize,maxsize,avgsize,minlat,maxlat,avglat,fanout"); - for (String key : new TreeSet(map.keySet())) { + for (String key : new TreeSet<>(map.keySet())) { Counters c = map.get(key); os.println(c.toString()); } - os.close(); } catch (FileNotFoundException e) { - System.err.println("File cannot be written: "+outfile); + System.err.println("File cannot be written: " + outfile); + logger.error("FileNotFoundException: " + e.getMessage()); } } }