Rename CpuUsageTimeSeries to TimeSeries. RELNOTES: None PiperOrigin-RevId: 259938268
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/CollectLocalCpuUsage.java b/src/main/java/com/google/devtools/build/lib/profiler/CollectLocalCpuUsage.java index 780f2e7..8a185c7 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/CollectLocalCpuUsage.java +++ b/src/main/java/com/google/devtools/build/lib/profiler/CollectLocalCpuUsage.java
@@ -26,13 +26,13 @@ private volatile boolean stopCpuUsage; private long cpuProfileStartMillis; - private CpuUsageTimeSeries localCpuUsage; + private TimeSeries localCpuUsage; @Override public void run() { stopCpuUsage = false; cpuProfileStartMillis = System.currentTimeMillis(); - localCpuUsage = new CpuUsageTimeSeries(cpuProfileStartMillis, BUCKET_SIZE_MILLIS); + localCpuUsage = new TimeSeries(cpuProfileStartMillis, BUCKET_SIZE_MILLIS); OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); long previousTimeMillis = System.currentTimeMillis();
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeries.java b/src/main/java/com/google/devtools/build/lib/profiler/TimeSeries.java similarity index 96% rename from src/main/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeries.java rename to src/main/java/com/google/devtools/build/lib/profiler/TimeSeries.java index faadb73..8551d42 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeries.java +++ b/src/main/java/com/google/devtools/build/lib/profiler/TimeSeries.java
@@ -20,13 +20,13 @@ * point in time. Time is split into equal-sized buckets, and we compute one value per bucket. If a * range partially overlaps a bucket, then the bucket is incremented by the fraction of overlap. */ -public class CpuUsageTimeSeries { +public class TimeSeries { private final long startTimeMillis; private final long bucketSizeMillis; private static final int INITIAL_SIZE = 100; private double[] data = new double[INITIAL_SIZE]; - public CpuUsageTimeSeries(long startTimeMillis, long bucketSizeMillis) { + public TimeSeries(long startTimeMillis, long bucketSizeMillis) { this.startTimeMillis = startTimeMillis; this.bucketSizeMillis = bucketSizeMillis; }
diff --git a/src/main/java/com/google/devtools/build/lib/profiler/grapher/ProfileGrapher.java b/src/main/java/com/google/devtools/build/lib/profiler/grapher/ProfileGrapher.java index 23cb14b..b61d48d 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/grapher/ProfileGrapher.java +++ b/src/main/java/com/google/devtools/build/lib/profiler/grapher/ProfileGrapher.java
@@ -14,7 +14,7 @@ package com.google.devtools.build.lib.profiler.grapher; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.profiler.CpuUsageTimeSeries; +import com.google.devtools.build.lib.profiler.TimeSeries; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import java.io.BufferedReader; @@ -95,9 +95,9 @@ "Remote execution process wall time", "action processing", "Remote execution file fetching"); - Map<String, CpuUsageTimeSeries> seriesMap = new LinkedHashMap<>(); + Map<String, TimeSeries> seriesMap = new LinkedHashMap<>(); for (String profilerTaskDescription : profilerTaskDescriptions) { - seriesMap.put(profilerTaskDescription, new CpuUsageTimeSeries(0, DEFAULT_BUCKET_SIZE_MILLIS)); + seriesMap.put(profilerTaskDescription, new TimeSeries(0, DEFAULT_BUCKET_SIZE_MILLIS)); } long maxEndTime = 0; @@ -120,16 +120,15 @@ Map<String, Object> data = decodeJsonObject(reader); Object name = data.get("name"); if ("cpu counters".equals(name)) { - seriesMap.putIfAbsent( - "cpu counters", new CpuUsageTimeSeries(0, DEFAULT_BUCKET_SIZE_MILLIS)); - CpuUsageTimeSeries series = seriesMap.get(name); + seriesMap.putIfAbsent("cpu counters", new TimeSeries(0, DEFAULT_BUCKET_SIZE_MILLIS)); + TimeSeries series = seriesMap.get(name); Double ts = (Double) data.get("ts"); long startTimeMillis = Math.round(ts.doubleValue() / 1000); Double cpuValue = Double.valueOf((String) data.get("args.cpu")); series.addRange(startTimeMillis, startTimeMillis + DEFAULT_BUCKET_SIZE_MILLIS, cpuValue); } else { Object cat = data.get("cat"); - CpuUsageTimeSeries series = seriesMap.get(cat); + TimeSeries series = seriesMap.get(cat); if (series != null) { Long endTimeMillis = decodeAndAdd(series, data); if (endTimeMillis != null) { @@ -145,7 +144,7 @@ // generate interactive web graphs (https://developers.google.com/chart/). int len = (int) (maxEndTime / DEFAULT_BUCKET_SIZE_MILLIS) + 1; double[][] numbers = new double[seriesMap.size()][]; - List<Map.Entry<String, CpuUsageTimeSeries>> allSeries = new ArrayList<>(seriesMap.entrySet()); + List<Map.Entry<String, TimeSeries>> allSeries = new ArrayList<>(seriesMap.entrySet()); // Write the titles in the first line of the CSV StringJoiner stringJoiner = new StringJoiner(","); for (int i = 0; i < numbers.length; i++) { @@ -174,7 +173,7 @@ * Decodes the start time and duration from the data, adds it to the given series and returns the * end time in milliseconds if it was possible to decode the data, otherwise null. */ - private static Long decodeAndAdd(CpuUsageTimeSeries series, Map<String, Object> data) { + private static Long decodeAndAdd(TimeSeries series, Map<String, Object> data) { Double ts = (Double) data.get("ts"); Double dur = (Double) data.get("dur"); if (ts == null || dur == null) {
diff --git a/src/test/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeriesTest.java b/src/test/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeriesTest.java deleted file mode 100644 index 9d37530..0000000 --- a/src/test/java/com/google/devtools/build/lib/profiler/CpuUsageTimeSeriesTest.java +++ /dev/null
@@ -1,79 +0,0 @@ -// Copyright 2018 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package com.google.devtools.build.lib.profiler; - -import static com.google.common.truth.Truth.assertThat; - -import java.util.Arrays; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -/** Tests for {@link CpuUsageTimeSeries}. */ -@RunWith(JUnit4.class) -public final class CpuUsageTimeSeriesTest { - @Test - public void testAddRange() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(42, 100); - cpuUsageTimeSeries.addRange(42, 142); - cpuUsageTimeSeries.addRange(442, 542); - double[] values = cpuUsageTimeSeries.toDoubleArray(5); - assertThat(values).usingTolerance(1.0e-10).containsExactly(1, 0, 0, 0, 1).inOrder(); - } - - @Test - public void testAddRangeWithValue() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(42, 100); - cpuUsageTimeSeries.addRange(42, 242, 3); - cpuUsageTimeSeries.addRange(442, 542, 0.5); - double[] values = cpuUsageTimeSeries.toDoubleArray(5); - assertThat(values).usingTolerance(1.0e-10).containsExactly(3, 3, 0, 0, .5).inOrder(); - } - - @Test - public void testAddRangeOverlappingWithValue() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(42, 100); - cpuUsageTimeSeries.addRange(42, 242, 3); - cpuUsageTimeSeries.addRange(142, 442, 0.5); - double[] values = cpuUsageTimeSeries.toDoubleArray(5); - assertThat(values).usingTolerance(1.0e-10).containsExactly(3, 3.5, 0.5, 0.5, 0).inOrder(); - } - - @Test - public void testAddRangeFractions() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(42, 100); - cpuUsageTimeSeries.addRange(92, 267); - double[] values = cpuUsageTimeSeries.toDoubleArray(5); - assertThat(values).usingTolerance(1.0e-10).containsExactly(0.5, 1, 0.25, 0, 0).inOrder(); - } - - @Test - public void testAddRangeWithValueFractions() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(42, 100); - cpuUsageTimeSeries.addRange(92, 267, 3); - double[] values = cpuUsageTimeSeries.toDoubleArray(5); - assertThat(values).usingTolerance(1.0e-10).containsExactly(1.5, 3, 0.75, 0, 0).inOrder(); - } - - @Test - public void testResize() { - CpuUsageTimeSeries cpuUsageTimeSeries = new CpuUsageTimeSeries(0, 100); - cpuUsageTimeSeries.addRange(0, 100 * 100 + 1, 42); - double[] values = cpuUsageTimeSeries.toDoubleArray(101); - double[] expected = new double[101]; - Arrays.fill(expected, 0, expected.length - 1, 42); - expected[expected.length - 1] = 0.42; - assertThat(values).usingTolerance(1.0e-10).containsExactly(expected).inOrder(); - } -}
diff --git a/src/test/java/com/google/devtools/build/lib/profiler/TimeSeriesTest.java b/src/test/java/com/google/devtools/build/lib/profiler/TimeSeriesTest.java new file mode 100644 index 0000000..50b42bd --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/profiler/TimeSeriesTest.java
@@ -0,0 +1,79 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.profiler; + +import static com.google.common.truth.Truth.assertThat; + +import java.util.Arrays; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Tests for {@link TimeSeries}. */ +@RunWith(JUnit4.class) +public final class TimeSeriesTest { + @Test + public void testAddRange() { + TimeSeries timeSeries = new TimeSeries(42, 100); + timeSeries.addRange(42, 142); + timeSeries.addRange(442, 542); + double[] values = timeSeries.toDoubleArray(5); + assertThat(values).usingTolerance(1.0e-10).containsExactly(1, 0, 0, 0, 1).inOrder(); + } + + @Test + public void testAddRangeWithValue() { + TimeSeries timeSeries = new TimeSeries(42, 100); + timeSeries.addRange(42, 242, 3); + timeSeries.addRange(442, 542, 0.5); + double[] values = timeSeries.toDoubleArray(5); + assertThat(values).usingTolerance(1.0e-10).containsExactly(3, 3, 0, 0, .5).inOrder(); + } + + @Test + public void testAddRangeOverlappingWithValue() { + TimeSeries timeSeries = new TimeSeries(42, 100); + timeSeries.addRange(42, 242, 3); + timeSeries.addRange(142, 442, 0.5); + double[] values = timeSeries.toDoubleArray(5); + assertThat(values).usingTolerance(1.0e-10).containsExactly(3, 3.5, 0.5, 0.5, 0).inOrder(); + } + + @Test + public void testAddRangeFractions() { + TimeSeries timeSeries = new TimeSeries(42, 100); + timeSeries.addRange(92, 267); + double[] values = timeSeries.toDoubleArray(5); + assertThat(values).usingTolerance(1.0e-10).containsExactly(0.5, 1, 0.25, 0, 0).inOrder(); + } + + @Test + public void testAddRangeWithValueFractions() { + TimeSeries timeSeries = new TimeSeries(42, 100); + timeSeries.addRange(92, 267, 3); + double[] values = timeSeries.toDoubleArray(5); + assertThat(values).usingTolerance(1.0e-10).containsExactly(1.5, 3, 0.75, 0, 0).inOrder(); + } + + @Test + public void testResize() { + TimeSeries timeSeries = new TimeSeries(0, 100); + timeSeries.addRange(0, 100 * 100 + 1, 42); + double[] values = timeSeries.toDoubleArray(101); + double[] expected = new double[101]; + Arrays.fill(expected, 0, expected.length - 1, 42); + expected[expected.length - 1] = 0.42; + assertThat(values).usingTolerance(1.0e-10).containsExactly(expected).inOrder(); + } +}