提交 a6a6aed1 编写于 作者: J Juergen Hoeller

StopWatch provides getId/currentTaskName accessors (plus further fine-tuning)

Issue: SPR-13509
上级 097bcfb9
/*
* Copyright 2002-2014 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -87,6 +87,16 @@ public class StopWatch {
}
/**
* Return the id of this stop watch, as specified on construction.
* @return the id (empty String by default)
* @since 4.2.2
* @see #StopWatch(String)
*/
public String getId() {
return this.id;
}
/**
* Determine whether the TaskInfo array is built over time. Set this to
* "false" when using a StopWatch for millions of intervals, or the task
......@@ -116,15 +126,15 @@ public class StopWatch {
if (this.running) {
throw new IllegalStateException("Can't start StopWatch: it's already running");
}
this.startTimeMillis = System.currentTimeMillis();
this.running = true;
this.currentTaskName = taskName;
this.startTimeMillis = System.currentTimeMillis();
}
/**
* Stop the current task. The results are undefined if timing
* methods are called without invoking at least one pair
* {@link #start()} / {@link #stop()} methods.
* {@code #start()} / {@code #stop()} methods.
* @see #start()
*/
public void stop() throws IllegalStateException {
......@@ -144,11 +154,21 @@ public class StopWatch {
/**
* Return whether the stop watch is currently running.
* @see #currentTaskName()
*/
public boolean isRunning() {
return this.running;
}
/**
* Return the name of the currently running task, if any.
* @since 4.2.2
* @see #isRunning()
*/
public String currentTaskName() {
return this.currentTaskName;
}
/**
* Return the time taken by the last task.
......@@ -217,7 +237,7 @@ public class StopWatch {
* Return a short description of the total running time.
*/
public String shortSummary() {
return "StopWatch '" + this.id + "': running time (millis) = " + getTotalTimeMillis();
return "StopWatch '" + getId() + "': running time (millis) = " + getTotalTimeMillis();
}
/**
......@@ -302,7 +322,7 @@ public class StopWatch {
* Return the time in seconds this task took.
*/
public double getTimeSeconds() {
return this.timeMillis / 1000.0;
return (this.timeMillis / 1000.0);
}
}
......
/*
* Copyright 2002-2013 the original author or authors.
* Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -21,6 +20,7 @@ import junit.framework.TestCase;
/**
* @author Rod Johnson
* @author Juergen Hoeller
*/
public class StopWatchTests extends TestCase {
......@@ -28,7 +28,8 @@ public class StopWatchTests extends TestCase {
* Are timings off in JUnit?
*/
public void testValidUsage() throws Exception {
StopWatch sw = new StopWatch();
String id = "myId";
StopWatch sw = new StopWatch(id);
long int1 = 166L;
long int2 = 45L;
String name1 = "Task 1";
......@@ -38,6 +39,7 @@ public class StopWatchTests extends TestCase {
sw.start(name1);
Thread.sleep(int1);
assertTrue(sw.isRunning());
assertEquals(name1, sw.currentTaskName());
sw.stop();
// TODO are timings off in JUnit? Why do these assertions sometimes fail
......@@ -54,14 +56,20 @@ public class StopWatchTests extends TestCase {
assertTrue(sw.getTaskCount() == 2);
String pp = sw.prettyPrint();
assertTrue(pp.indexOf(name1) != -1);
assertTrue(pp.indexOf(name2) != -1);
assertTrue(pp.contains(name1));
assertTrue(pp.contains(name2));
StopWatch.TaskInfo[] tasks = sw.getTaskInfo();
assertTrue(tasks.length == 2);
assertTrue(tasks[0].getTaskName().equals(name1));
assertTrue(tasks[1].getTaskName().equals(name2));
sw.toString();
String toString = sw.toString();
assertTrue(toString.contains(id));
assertTrue(toString.contains(name1));
assertTrue(toString.contains(name2));
assertEquals(id, sw.getId());
}
public void testValidUsageNotKeepingTaskList() throws Exception {
......@@ -92,8 +100,11 @@ public class StopWatchTests extends TestCase {
assertTrue(sw.getTaskCount() == 2);
String pp = sw.prettyPrint();
assertTrue(pp.indexOf("kept") != -1);
sw.toString();
assertTrue(pp.contains("kept"));
String toString = sw.toString();
assertFalse(toString.contains(name1));
assertFalse(toString.contains(name2));
try {
sw.getTaskInfo();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册