From 2a4a9522fd4117cbe52aea7bd5d3de5b5e448bc2 Mon Sep 17 00:00:00 2001 From: ripreal Date: Thu, 16 Nov 2017 11:00:40 +0300 Subject: [PATCH] add Time as property for sorting --- .idea/workspace.xml | 694 ++++++++++++------ releases/v8LogScanner.jar | Bin 251484 -> 253871 bytes .../cmdScanner/CmdChangeOrder.java | 3 +- .../cmdScanner/CmdGetTopThisHourEvents.java | 17 + .../cmdScanner/V8LogScannerAppl.java | 3 +- .../java/org/v8LogScanner/rgx/CursorOp.java | 69 ++ .../org/v8LogScanner/rgx/RgxOpManager.java | 8 + .../org/v8LogScanner/rgx/ScanProfile.java | 8 + .../testV8LogScanner/TestRgxOp.java | 27 +- .../testV8LogScanner/TestV8ScannerClient.java | 1 + 10 files changed, 587 insertions(+), 243 deletions(-) create mode 100644 src/main/java/org/v8LogScanner/cmdScanner/CmdGetTopThisHourEvents.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 59b6233..a8e9432 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,8 +6,15 @@ + - + + + + + + + @@ -29,31 +36,64 @@ - - + + - - - + + + + + + + + + + + + + + + + + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + @@ -62,69 +102,126 @@ - - - + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + + + + + + + + + @@ -191,18 +288,12 @@ @@ -313,6 +410,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - @@ -434,16 +531,16 @@ - - - + + + - - - + + + @@ -458,7 +555,7 @@ - + @@ -664,18 +761,6 @@ - - - + + + @@ -724,8 +821,9 @@ - + + @@ -743,35 +841,35 @@ - + - + - + - + - + - + - + - + - + - - + + @@ -794,18 +892,18 @@ - + - + - + @@ -854,7 +952,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -986,20 +1033,6 @@ - - - - - - - - - - - - - - @@ -1028,22 +1061,6 @@ - - - - - - - - - - - - - - - - @@ -1069,14 +1086,6 @@ - - - - - - - - @@ -1091,7 +1100,6 @@ - @@ -1102,14 +1110,6 @@ - - - - - - - - @@ -1129,7 +1129,6 @@ - @@ -1137,7 +1136,6 @@ - @@ -1165,6 +1163,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1173,14 +1240,23 @@ - + - - + + + - + + + + + + + + + @@ -1188,46 +1264,184 @@ - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/releases/v8LogScanner.jar b/releases/v8LogScanner.jar index 887e6124a9bfb487e026a4c8b9110886d9696b50..0204dbc3763e25f1080ebab37c4191465da15efb 100644 GIT binary patch delta 31278 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%0APNU@M0BEw;<5JW4~m>$O94E*JalFs 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 delta 29494 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 LxaAOVmf`*%hL6TT diff --git a/src/main/java/org/v8LogScanner/cmdScanner/CmdChangeOrder.java b/src/main/java/org/v8LogScanner/cmdScanner/CmdChangeOrder.java index edb1ae4..6da9f84 100644 --- a/src/main/java/org/v8LogScanner/cmdScanner/CmdChangeOrder.java +++ b/src/main/java/org/v8LogScanner/cmdScanner/CmdChangeOrder.java @@ -19,9 +19,10 @@ public String getTip() { public void execute() { V8LogScannerAppl appl = V8LogScannerAppl.instance(); - String[] sortingProps = new String[2]; + String[] sortingProps = new String[3]; sortingProps[0] = "Events_amount"; sortingProps[1] = PropTypes.Duration.toString(); + sortingProps[2] = PropTypes.Time.toString(); String userInput = appl.getConsole().askInputFromList("input prop which will be used to sort result:", sortingProps); if (userInput == null) { diff --git a/src/main/java/org/v8LogScanner/cmdScanner/CmdGetTopThisHourEvents.java b/src/main/java/org/v8LogScanner/cmdScanner/CmdGetTopThisHourEvents.java new file mode 100644 index 0000000..636411d --- /dev/null +++ b/src/main/java/org/v8LogScanner/cmdScanner/CmdGetTopThisHourEvents.java @@ -0,0 +1,17 @@ +package org.v8LogScanner.cmdScanner; + +import org.v8LogScanner.cmdAppl.CmdCommand; +import org.v8LogScanner.rgx.ScanProfile; + +public class CmdGetTopThisHourEvents implements CmdCommand { + @Override + public String getTip() { + return ""; + } + + @Override + public void execute() { + V8LogScannerAppl appl = V8LogScannerAppl.instance(); + ScanProfile.buildTopThisHourEvents(appl.profile); + } +} diff --git a/src/main/java/org/v8LogScanner/cmdScanner/V8LogScannerAppl.java b/src/main/java/org/v8LogScanner/cmdScanner/V8LogScannerAppl.java index 3a1b8b9..6338d35 100644 --- a/src/main/java/org/v8LogScanner/cmdScanner/V8LogScannerAppl.java +++ b/src/main/java/org/v8LogScanner/cmdScanner/V8LogScannerAppl.java @@ -138,6 +138,7 @@ public void runAppl() { // Item 4. main.add(new MenuItemCmd("Auto profiles", null, m_autoModes)); + m_autoModes.add(new MenuItemCmd("Find latest in this hour events", new CmdGetTopThisHourEvents(), cursorLogScan)); m_autoModes.add(new MenuItemCmd("Find all users events", new CmdGetAllUserEvents(), heapLogScan)); m_autoModes.add(new MenuItemCmd("Find EXCP from rphost logs grouped by 'descr'", new CmdGetRphostExcp(), heapLogScan)); m_autoModes.add(new MenuItemCmd("Find EXCP caused by user", new CmdGetUserExcp(), heapLogScan)); @@ -184,7 +185,7 @@ public void runAppl() { m_runServer.add(new MenuItemCmd("Run as a fullREST server (not work yet!)", null)); cmdAppl.setTitle( - "V8 Log Scanner v.1.0_beta" + "V8 Log Scanner v.1.1_beta" + "\nRuns on " + Constants.osType + "\n********************" ); diff --git a/src/main/java/org/v8LogScanner/rgx/CursorOp.java b/src/main/java/org/v8LogScanner/rgx/CursorOp.java index fa467fd..73bf69e 100644 --- a/src/main/java/org/v8LogScanner/rgx/CursorOp.java +++ b/src/main/java/org/v8LogScanner/rgx/CursorOp.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.math.BigInteger; import java.util.*; +import java.util.concurrent.ConcurrentMap; import java.util.stream.Collectors; public class CursorOp extends AbstractOp { @@ -65,7 +66,11 @@ public void execute(List logFiles) { } afterSlize = syncReduced.size(); TreeMap> rgxResult = finalReduction(syncReduced); + totalKeys = rgxResult.keySet().size(); + + sortLogs(rgxResult); + selector.setResult(rgxResult); calc.end(); } @@ -170,6 +175,18 @@ private TreeMap> finalReduction(Collection sour return rgxResult; } + private void sortLogs(TreeMap> rgxResult) { + + saveProcessingInfo("\n*SORTING..."); + + rgxResult.entrySet(). + parallelStream(). + forEach(n -> n.getValue(). + sort(RgxOpManager::compare)); + + saveProcessingInfo("Sorting completed."); + } + private SortingKey createSortingKey(String input) { String eventKey = RgxOpManager.getEventProperty( @@ -179,6 +196,8 @@ private SortingKey createSortingKey(String input) { if (sortingProp == PropTypes.Duration) return new DurationKey(eventKey, sortingKey); + else if (sortingProp == PropTypes.Time) + return new TimeKey(eventKey, sortingKey, RgxOpManager.getTimeText(input)); else return new SizeKey(eventKey, sortingKey); } @@ -319,4 +338,54 @@ public String toString() { } } + public class TimeKey implements SortingKey { + + final String key; + private BigInteger sortingKey; + private String time; + + public TimeKey(String key, BigInteger sortingKey, String time) { + this.key = key; + this.sortingKey = sortingKey; + this.time = time; + } + + public String getKey() { + return key; + } + + public BigInteger getSortingKey() { + return sortingKey; + } + + public void setSortingKey(BigInteger sortingKey) { + this.sortingKey = sortingKey; + } + + @Override + public int compareTo(SortingKey o) { + int comparedVal = sortingKey.compareTo(o.getSortingKey()); + return -comparedVal; + } + + public int hashCode() { + return sortingKey.hashCode(); + } + + public boolean equals(Object x) { + if (x == this) + return true; + if (x == null || (!(x instanceof DurationKey))) + return false; + + DurationKey other = (DurationKey) x; + return sortingKey.equals(other.getSortingKey()); + } + + @Override + public String toString() { + return String.format("TIME: %s \nGROUP: %s", time, key); + } + } + } diff --git a/src/main/java/org/v8LogScanner/rgx/RgxOpManager.java b/src/main/java/org/v8LogScanner/rgx/RgxOpManager.java index f080abe..833da14 100644 --- a/src/main/java/org/v8LogScanner/rgx/RgxOpManager.java +++ b/src/main/java/org/v8LogScanner/rgx/RgxOpManager.java @@ -257,4 +257,12 @@ public static BigInteger getTime(String input) { return time; } + public static String getTimeText(String input) { + String time = "00:00"; + Matcher timeMatcher = timePattern.matcher(input); + if (timeMatcher.find()) + time = timeMatcher.group(); + return time; + } + } diff --git a/src/main/java/org/v8LogScanner/rgx/ScanProfile.java b/src/main/java/org/v8LogScanner/rgx/ScanProfile.java index cc808d9..fbaf884 100644 --- a/src/main/java/org/v8LogScanner/rgx/ScanProfile.java +++ b/src/main/java/org/v8LogScanner/rgx/ScanProfile.java @@ -294,4 +294,12 @@ static void BuildFindSlowSQlEventsWithPlan(ScanProfile profile, String queryPlan profile.setSortingProp(PropTypes.Duration); } + static void buildTopThisHourEvents(ScanProfile profile) { + profile.clear(); + profile.setRgxOp(RgxOpTypes.CURSOR_OP); + profile.setSortingProp(PropTypes.Time); + profile.addRegExp(new RegExp(RegExp.EventTypes.ANY)); + profile.setDateRange(DateRanges.THIS_HOUR); + } + } diff --git a/src/test/java/org/v8LogScanner/testV8LogScanner/TestRgxOp.java b/src/test/java/org/v8LogScanner/testV8LogScanner/TestRgxOp.java index 3deae01..e8f0d78 100644 --- a/src/test/java/org/v8LogScanner/testV8LogScanner/TestRgxOp.java +++ b/src/test/java/org/v8LogScanner/testV8LogScanner/TestRgxOp.java @@ -44,6 +44,7 @@ public void testStartRgxOp() throws Exception { ScanProfile profile = localClient.getProfile(); profile.addLogPath(logFileName); profile.addRegExp(new RegExp(EventTypes.EXCP)); + profile.setSortingProp(PropTypes.ANY); manager.startRgxOp(); List logs = localClient.select(100, SelectDirections.FORWARD); @@ -130,6 +131,7 @@ public void testGroupBySeveralProps() { event.getGroupingProps().add(PropTypes.ClientID); event.getGroupingProps().add(PropTypes.ComputerName); profile.addRegExp(event); + profile.setSortingProp(PropTypes.ANY); client.startRgxOp(); List logs = client.select(100, SelectDirections.FORWARD); @@ -394,7 +396,7 @@ public void testVSRQuieries() { rgx.getFilter(PropTypes.Method).add("GET"); profile.addRegExp(rgx); profile.addRegExp(new RegExp(EventTypes.VRSRESPONSE)); - + profile.setSortingProp(PropTypes.ANY); localClient.startRgxOp(); List entries = localClient.select(100, SelectDirections.FORWARD); assertEquals(2, entries.size()); @@ -443,4 +445,27 @@ public void testUserScanOp() { List entries = localClient.select(100, SelectDirections.FORWARD); assertEquals(1, entries.size()); } + + @Test + public void testTopThisHourEvents() { + String logFileName = constructor + .addEXCP() + .addVRSREQUEST() + .build(LogFileTypes.FILE); + + ClientsManager manager = new ClientsManager(); + V8LogScannerClient localClient = manager.localClient(); + + ScanProfile profile = localClient.getProfile(); + ScanProfile.buildTopThisHourEvents(profile); + profile.setDateRange(ScanProfile.DateRanges.ANY); // reset due limits in the test data + profile.addLogPath(logFileName); + manager.startRgxOp(); + List logs = localClient.select(100, SelectDirections.FORWARD); + + assertEquals(3, logs.size()); + + V8LogFileConstructor.deleteLogFile(logFileName); + } + } diff --git a/src/test/java/org/v8LogScanner/testV8LogScanner/TestV8ScannerClient.java b/src/test/java/org/v8LogScanner/testV8LogScanner/TestV8ScannerClient.java index 3a853df..4f767ef 100644 --- a/src/test/java/org/v8LogScanner/testV8LogScanner/TestV8ScannerClient.java +++ b/src/test/java/org/v8LogScanner/testV8LogScanner/TestV8ScannerClient.java @@ -118,6 +118,7 @@ public void testSelect() { client.getProfile().addLogPath(file); client.getProfile().addRegExp(new RegExp()); + client.getProfile().setSortingProp(RegExp.PropTypes.ANY); client.startRgxOp(); List entries = client.select(100, IRgxSelector.SelectDirections.FORWARD); assertEquals(3, entries.size());