From bf976ba6576a8ebf0e25f10eca83cb8038578510 Mon Sep 17 00:00:00 2001 From: Alon Albert Date: Mon, 3 Oct 2011 13:06:43 -0700 Subject: [PATCH] Update dumpsys output After using the new format for a few days, I decided it's better to ahve the auth & acct info on every row because we will sometimes grep the data and won't see it if the auth/acct is ommited. Also added the "time since last sync" to every row. This is also very useful. Detailed Statistics (Recent history): 31 (# of times) 119s (sync time) ------------------------------------------------------------------------------------- subscribedfeeds : 8/25% 17s/14% aagmtest2@gmail.com/com.google : 5/16% 16s/13% aagmtest1@gmail.com/com.google : 3/9% 1s/0% ------------------------------------------------------------------------------------- com.android.calendar : 5/16% 10s/8% aagmtest2@gmail.com/com.google : 3/9% 0s/0% aagmtest1@gmail.com/com.google : 2/6% 9s/8% ------------------------------------------------------------------------------------- com.google.android.apps.books : 3/9% 26s/22% ------------------------------------------------------------------------------------- com.android.contacts : 3/9% 14s/11% aagmtest1@gmail.com/com.google : 2/6% 9s/7% aagmtest2@gmail.com/com.google : 1/3% 5s/4% ------------------------------------------------------------------------------------- com.android.browser : 3/9% 12s/10% ------------------------------------------------------------------------------------- com.google.android.music.MusicContent : 3/9% 7s/6% ------------------------------------------------------------------------------------- gmail-ls : 2/6% 12s/10% ------------------------------------------------------------------------------------- com.google.android.apps.plus.content.EsGooglePhotoProvider : 2/6% 1s/0% aagmtest2@gmail.com/com.google : 1/3% 1s/0% aagmtest1@gmail.com/com.google : 1/3% 0s/0% ------------------------------------------------------------------------------------- com.google.android.apps.plus.content.EsProvider : 1/3% 10s/9% ------------------------------------------------------------------------------------- com.google.android.gallery3d.GooglePhotoProvider : 1/3% 5s/5% ------------------------------------------------------------------------------------- Recent Sync History #1 : 2011-10-03 13:26:41 SERVER 0.0s aagmtest2@gmail.com/com.google com.android.calendar #2 : 2011-10-03 13:26:40 LOCAL 1.8s aagmtest2@gmail.com/com.google subscribedfeeds #3 : 2011-10-03 13:26:40 LOCAL 0.1s aagmtest1@gmail.com/com.google subscribedfeeds #4 : 2011-10-03 13:26:37 SERVER 0.1s 4 aagmtest2@gmail.com/com.google com.android.calendar #5 : 2011-10-03 13:26:37 LOCAL 0.1s aagmtest2@gmail.com/com.google com.google.android.apps.books #6 : 2011-10-03 13:26:30 SERVER 0.9s 7 aagmtest2@gmail.com/com.google com.google.android.apps.books #7 : 2011-10-03 13:26:25 SERVER 1.1s aagmtest2@gmail.com/com.google gmail-ls #8 : 2011-10-03 13:26:13 SERVER 11.8s 11 aagmtest2@gmail.com/com.google gmail-ls #9 : 2011-10-03 13:26:08 SERVER 5.0s aagmtest2@gmail.com/com.google com.android.contacts #10 : 2011-10-03 13:26:08 SERVER 0.7s 29 aagmtest2@gmail.com/com.google com.android.calendar #11 : 2011-10-03 13:26:07 SERVER 0.7s aagmtest2@gmail.com/com.google com.android.browser #12 : 2011-10-03 13:26:04 SERVER 3.0s 2 aagmtest2@gmail.com/com.google com.android.browser #13 : 2011-10-03 13:26:04 SERVER 25.9s 25 aagmtest2@gmail.com/com.google com.google.android.apps.books Change-Id: I8da004f469d136fd9a86310b262eba61197fd0e7 --- core/java/android/content/SyncManager.java | 88 ++++++++++++---------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 127efa219308e..42253930ae980 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -1301,7 +1301,7 @@ public class SyncManager implements OnAccountsUpdateListener { elapsedTime = authoritySyncStats.elapsedTime; times = authoritySyncStats.times; - timeStr = String.format("%d/%d%%", + timeStr = String.format("%ds/%d%%", elapsedTime / 1000, elapsedTime * 100 / totalElapsedTime); timesStr = String.format("%d/%d%%", @@ -1309,32 +1309,30 @@ public class SyncManager implements OnAccountsUpdateListener { times * 100 / totalTimes); pw.printf(authorityFormat, name, timesStr, timeStr); - if (authoritySyncStats.accountMap.size() > 1) { - final List sortedAccounts = - new ArrayList( - authoritySyncStats.accountMap.values()); - Collections.sort(sortedAccounts, new Comparator() { - @Override - public int compare(AccountSyncStats lhs, AccountSyncStats rhs) { - // reverse order - int compare = Integer.compare(rhs.times, lhs.times); - if (compare == 0) { - compare = Long.compare(rhs.elapsedTime, lhs.elapsedTime); - } - return compare; + final List sortedAccounts = + new ArrayList( + authoritySyncStats.accountMap.values()); + Collections.sort(sortedAccounts, new Comparator() { + @Override + public int compare(AccountSyncStats lhs, AccountSyncStats rhs) { + // reverse order + int compare = Integer.compare(rhs.times, lhs.times); + if (compare == 0) { + compare = Long.compare(rhs.elapsedTime, lhs.elapsedTime); } - }); - for (AccountSyncStats stats: sortedAccounts) { - elapsedTime = stats.elapsedTime; - times = stats.times; - timeStr = String.format("%d/%d%%", - elapsedTime / 1000, - elapsedTime * 100 / totalElapsedTime); - timesStr = String.format("%d/%d%%", - times, - times * 100 / totalTimes); - pw.printf(accountFormat, stats.name, timesStr, timeStr); + return compare; } + }); + for (AccountSyncStats stats: sortedAccounts) { + elapsedTime = stats.elapsedTime; + times = stats.times; + timeStr = String.format("%ds/%d%%", + elapsedTime / 1000, + elapsedTime * 100 / totalElapsedTime); + timesStr = String.format("%d/%d%%", + times, + times * 100 / totalTimes); + pw.printf(accountFormat, stats.name, timesStr, timeStr); } pw.println(separator); } @@ -1342,9 +1340,8 @@ public class SyncManager implements OnAccountsUpdateListener { pw.println(); pw.println("Recent Sync History"); final String format = " %-" + maxAccount + "s %s\n"; - String lastAuthorityName = null; - String lastAccountKey = null; - long lastEventTime = 0; + final Map lastTimeMap = Maps.newHashMap(); + for (int i = 0; i < N; i++) { SyncStorageEngine.SyncHistoryItem item = items.get(i); SyncStorageEngine.AuthorityInfo authority @@ -1363,21 +1360,32 @@ public class SyncManager implements OnAccountsUpdateListener { final long eventTime = item.eventTime; time.set(eventTime); - pw.printf(" #%-3d: %s %8s %5.1fs", + final String key = authorityName + "/" + accountKey; + final Long lastEventTime = lastTimeMap.get(key); + final String diffString; + if (lastEventTime == null) { + diffString = ""; + } else { + final long diff = (lastEventTime - eventTime) / 1000; + if (diff < 60) { + diffString = String.valueOf(diff); + } else if (diff < 3600) { + diffString = String.format("%02d:%02d", diff / 60, diff % 60); + } else { + final long sec = diff % 3600; + diffString = String.format("%02d:%02d:%02d", + diff / 3600, sec / 60, sec % 60); + } + } + lastTimeMap.put(key, eventTime); + + pw.printf(" #%-3d: %s %8s %5.1fs %8s", i + 1, formatTime(eventTime), SyncStorageEngine.SOURCES[item.source], - ((float) elapsedTime) / 1000); - if (authorityName.equals(lastAuthorityName) && accountKey.equals(lastAccountKey)) { - final long span = (lastEventTime - eventTime) / 1000; - pw.printf(" %02d:%02d\n", span / 60, span % 60); - } else { - pw.printf(format, accountKey, authorityName); - } - - lastAuthorityName = authorityName; - lastAccountKey = accountKey; - lastEventTime = eventTime; + ((float) elapsedTime) / 1000, + diffString); + pw.printf(format, accountKey, authorityName); if (item.event != SyncStorageEngine.EVENT_STOP || item.upstreamActivity != 0