@Deprecated public final long getElapsedTimeMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.longValue(); }
@Deprecated public final double getTimeTakenMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.doubleValue(); }
/** * Calculate the request latency. RequestLatency = httpClientSendRequestTime + HttpClientReceiveResponseTime */ private Long calculateRequestLatency(TimingInfo timingInfo) { if (timingInfo == null) { return null; } TimingInfo httpClientSendRequestTime = timingInfo.getLastSubMeasurement(AWSRequestMetrics.Field.HttpClientSendRequestTime .name()); TimingInfo httpClientReceiveResponseTime = timingInfo.getLastSubMeasurement(AWSRequestMetrics.Field .HttpClientReceiveResponseTime.name()); if (httpClientSendRequestTime != null && httpClientSendRequestTime.getTimeTakenMillisIfKnown() != null && httpClientReceiveResponseTime != null && httpClientReceiveResponseTime.getTimeTakenMillisIfKnown() != null) { return httpClientSendRequestTime.getTimeTakenMillisIfKnown().longValue() + httpClientReceiveResponseTime.getTimeTakenMillisIfKnown().longValue(); } return null; }
if (requestTime != null && requestTime.getTimeTakenMillisIfKnown() != null) { stats.addAwsRequestTime(new Duration(requestTime.getTimeTakenMillisIfKnown(), MILLISECONDS)); if (clientExecuteTime != null && clientExecuteTime.getTimeTakenMillisIfKnown() != null) { stats.addAwsClientExecuteTime(new Duration(clientExecuteTime.getTimeTakenMillisIfKnown(), MILLISECONDS));
/** * Returns a request type specific metrics for * {@link Field#ClientExecuteTime} which is special in the sense that it * makes a more accurate measurement by taking the {@link TimingInfo} at the * root into account. */ protected List<MetricDatum> latencyOfClientExecuteTime(Request<?> req, Object response) { AWSRequestMetrics m = req.getAWSRequestMetrics(); TimingInfo root = m.getTimingInfo(); final String metricName = Field.ClientExecuteTime.name(); if (root.isEndTimeKnown()) { // being defensive List<Dimension> dims = new ArrayList<Dimension>(); dims.add(new Dimension() .withName(Dimensions.MetricType.name()) .withValue(metricName)); // request type specific dims.add(new Dimension() .withName(Dimensions.RequestType.name()) .withValue(requestType(req))); MetricDatum datum = new MetricDatum() .withMetricName(req.getServiceName()) .withDimensions(dims) .withUnit(StandardUnit.Milliseconds) .withValue(root.getTimeTakenMillisIfKnown()); return Collections.singletonList(datum); } return Collections.emptyList(); }
.withDimensions(dims) .withUnit(StandardUnit.Milliseconds) .withValue(sub.getTimeTakenMillisIfKnown()); result.add(datum);
/** * @return the elapsed time in milliseconds. */ @Deprecated public final long getElapsedTimeMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.longValue(); }
@Deprecated public final double getTimeTakenMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.doubleValue(); }
@Deprecated public final long getElapsedTimeMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.longValue(); }
/** * @return time duration in milliseconds. */ @Deprecated public final double getTimeTakenMillis() { Double v = getTimeTakenMillisIfKnown(); return v == null ? UNKNOWN : v.doubleValue(); }
/** * Calculate the request latency. RequestLatency = httpClientSendRequestTime + HttpClientReceiveResponseTime */ private Long calculateRequestLatency(TimingInfo timingInfo) { if (timingInfo == null) { return null; } TimingInfo httpClientSendRequestTime = timingInfo.getLastSubMeasurement(AWSRequestMetrics.Field.HttpClientSendRequestTime .name()); TimingInfo httpClientReceiveResponseTime = timingInfo.getLastSubMeasurement(AWSRequestMetrics.Field .HttpClientReceiveResponseTime.name()); if (httpClientSendRequestTime != null && httpClientSendRequestTime.getTimeTakenMillisIfKnown() != null && httpClientReceiveResponseTime != null && httpClientReceiveResponseTime.getTimeTakenMillisIfKnown() != null) { return httpClientSendRequestTime.getTimeTakenMillisIfKnown().longValue() + httpClientReceiveResponseTime.getTimeTakenMillisIfKnown().longValue(); } return null; }
latency = convertToLongIfNotNull(latencyTimingInfo.getTimeTakenMillisIfKnown()); timestamp = latencyTimingInfo.getStartEpochTimeMilliIfKnown();
httpRequestTime = timingInfo.getLastSubMeasurement(HttpRequestTime.name()); timestamp = httpRequestTime.getStartEpochTimeMilliIfKnown(); attemptLatency = convertToLongIfNotNull(httpRequestTime.getTimeTakenMillisIfKnown());
@Test public void absurdTimingWithClockIfKnown() throws InterruptedException { final long startTimeMilli = System.currentTimeMillis(); final long startTimeNano = System.nanoTime(); Thread.sleep(1);// sleep for 1 millisecond final long endTimeNano = System.nanoTime(); // absurdly swap the start/end times TimingInfo ti = TimingInfo.newTimingInfoFullSupport(startTimeMilli, endTimeNano, startTimeNano); assertTrue(ti.isStartEpochTimeMilliKnown()); assertTrue(ti.getStartTimeNano() > startTimeNano); assertTrue(ti.getStartEpochTimeMilliIfKnown().longValue() == startTimeMilli); assertTrue(ti.isEndTimeKnown()); assertTrue(ti.getEndTimeNanoIfKnown().longValue() < endTimeNano); long end_epoch_time = startTimeMilli + TimeUnit.NANOSECONDS.toMillis(startTimeNano - endTimeNano); assertTrue(ti.getEndEpochTimeMilliIfKnown().longValue() == end_epoch_time); assertTrue(ti.getEndEpochTimeMilliIfKnown().longValue() == ti.getEndEpochTimeMilli()); double double_diff = TimeUnit.NANOSECONDS.toMicros(startTimeNano - endTimeNano) / 1000.0; assertTrue(ti.getTimeTakenMillisIfKnown().doubleValue() == double_diff); long long_diff = TimeUnit.NANOSECONDS.toMillis(startTimeNano - endTimeNano); assertTrue(ti.getTimeTakenMillisIfKnown().longValue() == long_diff); }
@Test public void absurdTimingWithNoClockIfKnown() throws InterruptedException { final long startTimeNano = System.nanoTime(); Thread.sleep(1);// sleep for 1 millisecond final long endTimeNano = System.nanoTime(); // absurdly swap the start/end times TimingInfo ti = TimingInfo.newTimingInfoFullSupport(endTimeNano, startTimeNano); assertFalse(ti.isStartEpochTimeMilliKnown()); assertTrue(ti.getStartTimeNano() > startTimeNano); assertNull(ti.getStartEpochTimeMilliIfKnown()); assertTrue(ti.isEndTimeKnown()); assertTrue(ti.getEndTimeNanoIfKnown().longValue() < endTimeNano); assertNull(ti.getEndEpochTimeMilliIfKnown()); double double_diff = TimeUnit.NANOSECONDS.toMicros(startTimeNano - endTimeNano) / 1000.0; assertTrue(ti.getTimeTakenMillisIfKnown().doubleValue() == double_diff); long long_diff = TimeUnit.NANOSECONDS.toMillis(startTimeNano - endTimeNano); assertTrue(ti.getTimeTakenMillisIfKnown().longValue() == long_diff); }
@Test public void newTimingWithClockTimeIfKnown() throws InterruptedException { final long startTimeMilli = System.currentTimeMillis(); final long startTimeNano = System.nanoTime(); Thread.sleep(1);// sleep for 1 millisecond final long endTimeNano = System.nanoTime(); TimingInfo ti = TimingInfo.newTimingInfoFullSupport(startTimeMilli, startTimeNano, endTimeNano); assertTrue(ti.isStartEpochTimeMilliKnown()); assertTrue(ti.getStartTimeNano() == startTimeNano); assertTrue(ti.getStartEpochTimeMilliIfKnown().longValue() == startTimeMilli); assertTrue(ti.isEndTimeKnown()); assertTrue(ti.getEndTimeNanoIfKnown().longValue() > startTimeNano); assertTrue(ti.getEndEpochTimeMilliIfKnown().longValue() >= startTimeMilli); assertTrue(ti.getEndEpochTimeMilliIfKnown().longValue() == ti.getEndEpochTimeMilli()); assertTrue(ti.getTimeTakenMillisIfKnown().longValue() >= 0); }
@Test public void newTimingWithNoClockTimeIfKnown() throws InterruptedException { final long startTimeNano = System.nanoTime(); Thread.sleep(1);// sleep for 1 millisecond final long endTimeNano = System.nanoTime(); TimingInfo ti = TimingInfo.newTimingInfoFullSupport(startTimeNano, endTimeNano); assertFalse(ti.isStartEpochTimeMilliKnown()); assertTrue(ti.getStartTimeNano() == startTimeNano); assertNull(ti.getStartEpochTimeMilliIfKnown()); assertTrue(ti.isEndTimeKnown()); assertTrue(ti.getEndTimeNanoIfKnown().longValue() > startTimeNano); assertNull(ti.getEndEpochTimeMilliIfKnown()); assertTrue(ti.getTimeTakenMillisIfKnown().longValue() >= 0); }
@Test public void startEndTimingIfKnown() { // Start timing final long startTimeNano = System.nanoTime(); final long startTimeMilli = System.currentTimeMillis(); TimingInfo ti = TimingInfo.startTimingFullSupport(); assertTrue(ti.isStartEpochTimeMilliKnown()); assertTrue(ti.getStartTimeNano() >= startTimeNano); assertTrue(ti.getStartEpochTimeMilliIfKnown().longValue() >= startTimeMilli); // End time is not known assertFalse(ti.isEndTimeKnown()); assertNull(ti.getEndTimeNanoIfKnown()); assertNull(ti.getEndEpochTimeMilliIfKnown()); assertNull(ti.getTimeTakenMillisIfKnown()); // End timing ti.endTiming(); assertTrue(ti.isEndTimeKnown()); assertTrue(ti.getEndTimeNanoIfKnown().longValue() >= startTimeNano); assertTrue(ti.getEndEpochTimeMilliIfKnown().longValue() >= startTimeMilli); assertTrue(ti.getEndEpochTimeMilli() == ti.getEndEpochTimeMilliIfKnown().longValue()); assertTrue(ti.getTimeTakenMillisIfKnown().longValue() >= 0); }
latency = convertToLongIfNotNull(latencyTimingInfo.getTimeTakenMillisIfKnown()); timestamp = latencyTimingInfo.getStartEpochTimeMilliIfKnown();
httpRequestTime = timingInfo.getLastSubMeasurement(HttpRequestTime.name()); timestamp = httpRequestTime.getStartEpochTimeMilliIfKnown(); attemptLatency = convertToLongIfNotNull(httpRequestTime.getTimeTakenMillisIfKnown());