Added creationTime to Versioned object. This enables supporting a electedTime in leadership, which in turn helps us track how stable leadership terms are.
Change-Id: Ib051027625324646152ed85535ba337e95f8a061
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index 8b045f1..533563b 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -18,6 +18,7 @@
import com.google.common.base.Strings;
import com.google.common.primitives.UnsignedLongs;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
import org.slf4j.Logger;
import java.io.BufferedReader;
@@ -239,6 +240,29 @@
}
}
+ /**
+ * Returns a human friendly time ago string for a specified system time.
+ * @param unixTime system time in millis
+ * @return human friendly time ago
+ */
+ public static String timeAgo(long unixTime) {
+ long deltaMillis = System.currentTimeMillis() - unixTime;
+ long secondsSince = (long) (deltaMillis / 1000.0);
+ long minsSince = (long) (deltaMillis / (1000.0 * 60));
+ long hoursSince = (long) (deltaMillis / (1000.0 * 60 * 60));
+ long daysSince = (long) (deltaMillis / (1000.0 * 60 * 60 * 24));
+ if (daysSince > 0) {
+ return String.format("%dd ago", daysSince);
+ } else if (hoursSince > 0) {
+ return String.format("%dh ago", hoursSince);
+ } else if (minsSince > 0) {
+ return String.format("%dm ago", minsSince);
+ } else if (secondsSince > 0) {
+ return String.format("%ds ago", secondsSince);
+ } else {
+ return "just now";
+ }
+ }
/**
* Copies the specified directory path. Use with great caution since