aboutsummaryrefslogtreecommitdiffstats
path: root/tests/perf/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/perf/src/main/java')
-rw-r--r--tests/perf/src/main/java/org/sonarsource/sonarqube/perf/MavenLogs.java84
-rw-r--r--tests/perf/src/main/java/org/sonarsource/sonarqube/perf/ServerLogs.java61
2 files changed, 145 insertions, 0 deletions
diff --git a/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/MavenLogs.java b/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/MavenLogs.java
new file mode 100644
index 00000000000..69f0289f440
--- /dev/null
+++ b/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/MavenLogs.java
@@ -0,0 +1,84 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonarsource.sonarqube.perf;
+
+import org.apache.commons.lang.StringUtils;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MavenLogs {
+
+ /**
+ * Total time: 6.015s
+ * Total time: 3:14.025s
+ */
+ public static Long extractTotalTime(String logs) {
+ Pattern pattern = Pattern.compile("^.*Total time: (\\d*:)?(\\d+).(\\d+)s.*$", Pattern.DOTALL);
+ Matcher matcher = pattern.matcher(logs);
+ if (matcher.matches()) {
+ String minutes = StringUtils.defaultIfBlank(StringUtils.removeEnd(matcher.group(1), ":"), "0");
+ String seconds = StringUtils.defaultIfBlank(matcher.group(2), "0");
+ String millis = StringUtils.defaultIfBlank(matcher.group(3), "0");
+
+ return (Long.parseLong(minutes) * 60000) + (Long.parseLong(seconds) * 1000) + Long.parseLong(millis);
+ }
+ throw new IllegalStateException("Maven logs do not contain \"Total time\"");
+ }
+
+ /**
+ * Final Memory: 68M/190M
+ */
+ public static Long extractEndMemory(String logs) {
+ return extractLong(logs, ".*Final Memory: (\\d+)M/[\\d]+M.*");
+ }
+
+ public static Long extractMaxMemory(String logs) {
+ return extractLong(logs, ".*Final Memory: [\\d]+M/(\\d+)M.*");
+ }
+
+ private static Long extractLong(String logs, String format) {
+ Pattern pattern = Pattern.compile(format);
+ Matcher matcher = pattern.matcher(logs);
+ if (matcher.matches()) {
+ String s = matcher.group(1);
+ return Long.parseLong(s);
+ }
+ return null;
+ }
+
+ /**
+ * 2015.09.29 16:57:45 INFO web[o.s.s.c.q.CeWorkerRunnableImpl] Executed task | project=com.github.kevinsawicki:http-request-parent | id=AVAZm9oHIXrp54OmOeQe | time=2283ms
+ */
+ public static Long extractComputationTotalTime(List<String> logs) {
+ Pattern pattern = Pattern.compile(".*INFO.*Executed task.* \\| time=(\\d+)ms.*");
+ for (int i = logs.size() - 1; i >= 0; i--) {
+ String line = logs.get(i);
+ Matcher matcher = pattern.matcher(line);
+ if (matcher.matches()) {
+ String duration = matcher.group(1);
+ return Long.parseLong(duration);
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/ServerLogs.java b/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/ServerLogs.java
new file mode 100644
index 00000000000..7bf90524153
--- /dev/null
+++ b/tests/perf/src/main/java/org/sonarsource/sonarqube/perf/ServerLogs.java
@@ -0,0 +1,61 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonarsource.sonarqube.perf;
+
+import com.sonar.orchestrator.Orchestrator;
+import org.apache.commons.io.FileUtils;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+public class ServerLogs {
+
+ static Date extractDate(String line) {
+ String pattern = "yyyy.MM.dd HH:mm:ss";
+ SimpleDateFormat format = new SimpleDateFormat(pattern);
+ if (line.length() > 19) {
+ try {
+ return format.parse(line.substring(0, 19));
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ return null;
+ }
+
+ public static Date extractFirstDate(List<String> lines) {
+ for (String line : lines) {
+ Date d = ServerLogs.extractDate(line);
+ if (d != null) {
+ return d;
+ }
+ }
+ return null;
+ }
+
+ public static void clear(Orchestrator orch) throws IOException {
+ if (orch.getServer() != null && orch.getServer().getLogs() != null) {
+ FileUtils.write(orch.getServer().getLogs(), "", false);
+ }
+ }
+
+}