Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add logs to know how long sync processes take #3934

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions app/src/main/java/org/ole/planet/myplanet/datamanager/Service.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ import org.ole.planet.myplanet.model.MyPlanet
import org.ole.planet.myplanet.model.RealmCommunity
import org.ole.planet.myplanet.model.RealmUserModel.Companion.isUserExists
import org.ole.planet.myplanet.model.RealmUserModel.Companion.populateUsersTable
import org.ole.planet.myplanet.service.TransactionSyncManager
import org.ole.planet.myplanet.service.TransactionSyncManager.logDuration
import org.ole.planet.myplanet.service.TransactionSyncManager.syncDb
import org.ole.planet.myplanet.service.UploadToShelfService
import org.ole.planet.myplanet.ui.sync.ProcessUserDataActivity
import org.ole.planet.myplanet.ui.sync.SyncActivity
Expand Down Expand Up @@ -105,6 +106,7 @@ class Service(private val context: Context) {
callback.onError(context.getString(R.string.config_not_available), true)
return
}
val start = System.currentTimeMillis()
retrofitInterface?.checkVersion(Utilities.getUpdateUrl(settings))?.enqueue(object : Callback<MyPlanet?> {
override fun onResponse(call: Call<MyPlanet?>, response: Response<MyPlanet?>) {
preferences.edit().putInt("LastWifiID", NetworkUtils.getCurrentNetworkId(context)).apply()
Expand Down Expand Up @@ -143,9 +145,13 @@ class Service(private val context: Context) {
callback.onError("Planet up to date", false)
}
}
val end = System.currentTimeMillis()
logDuration(start, end, "checkVersion")
} catch (e: Exception) {
e.printStackTrace()
callback.onError("New apk version required but not found on server - Contact admin", false)
val end = System.currentTimeMillis()
logDuration(start, end, "checkVersion")
callback.onError("New apk version required but not found on server - Contact admin", false)
}
}
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {}
Expand Down Expand Up @@ -268,7 +274,7 @@ class Service(private val context: Context) {
context.startUpload("becomeMember")
}
}
TransactionSyncManager.syncDb(realm, "tablet_users")
syncDb(realm, "tablet_users")
}
}
}
Expand Down Expand Up @@ -325,7 +331,7 @@ class Service(private val context: Context) {
setText(context.getString(R.string.check_apk_version))
show()
}

val start = System.currentTimeMillis()
retrofitInterface?.getConfiguration("$url/versions")?.enqueue(object : Callback<JsonObject?> {
override fun onResponse(call: Call<JsonObject?>, response: Response<JsonObject?>) {
if (response.isSuccessful) {
Expand Down Expand Up @@ -355,6 +361,8 @@ class Service(private val context: Context) {
val code = doc.getAsJsonPrimitive("code").asString
listener?.onConfigurationIdReceived(id, code)
activity.setSyncFailed(false)
val end = System.currentTimeMillis()
logDuration(start, end, "check app version")
} else {
activity.setSyncFailed(true)
showAlertDialog(context.getString(R.string.failed_to_get_configuration_id), false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import org.ole.planet.myplanet.model.RealmMyLibrary.Companion.save
import org.ole.planet.myplanet.model.RealmMyTeam.Companion.insertMyTeams
import org.ole.planet.myplanet.model.RealmResourceActivity.Companion.onSynced
import org.ole.planet.myplanet.model.Rows
import org.ole.planet.myplanet.service.TransactionSyncManager.logDuration
import org.ole.planet.myplanet.utilities.Constants
import org.ole.planet.myplanet.utilities.Constants.PREFS_NAME
import org.ole.planet.myplanet.utilities.Constants.ShelfData
Expand Down Expand Up @@ -76,17 +77,21 @@ class SyncManager private constructor(private val context: Context) {

private fun authenticateAndSync() {
td = Thread {
val start = System.currentTimeMillis()
if (TransactionSyncManager.authenticate()) {
startSync()
} else {
handleException(context.getString(R.string.invalid_configuration))
destroy()
}
val end = System.currentTimeMillis()
logDuration(start, end, "authenticateAndSync")
}
td?.start()
}

private fun startSync() {
val start = System.currentTimeMillis()
try {
val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
val wifiInfo = wifiManager.connectionInfo
Expand Down Expand Up @@ -123,6 +128,8 @@ class SyncManager private constructor(private val context: Context) {
err.printStackTrace()
handleException(err.message)
} finally {
val end = System.currentTimeMillis()
logDuration(start, end, "startSync")
destroy()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,18 +49,24 @@ import java.io.IOException
object TransactionSyncManager {
fun authenticate(): Boolean {
val apiInterface = client?.create(ApiInterface::class.java)
val start = System.currentTimeMillis()
try {
val response: Response<DocumentResponse>? = apiInterface?.getDocuments(Utilities.header, Utilities.getUrl() + "/tablet_users/_all_docs")?.execute()
if (response != null) {
val end = System.currentTimeMillis()
logDuration(start, end, "authenticate")
return response.code() == 200
}
} catch (e: IOException) {
e.printStackTrace()
}
val end = System.currentTimeMillis()
logDuration(start, end, "authenticate")
return false
}

fun syncAllHealthData(mRealm: Realm, settings: SharedPreferences, listener: SyncListener) {
val start = System.currentTimeMillis()
listener.onSyncStarted()
val userName = settings.getString("loginUserName", "")
val password = settings.getString("loginUserPassword", "")
Expand All @@ -70,8 +76,14 @@ object TransactionSyncManager {
for (userModel in users) {
syncHealthData(userModel, header)
}
}, { listener.onSyncComplete() }) { error: Throwable ->
}, {
listener.onSyncComplete()
val end = System.currentTimeMillis()
logDuration(start, end, "syncAllHealthData")
}) { error: Throwable ->
error.message?.let { listener.onSyncFailed(it) }
val end = System.currentTimeMillis()
logDuration(start, end, "syncAllHealthData")
}
}

Expand All @@ -94,6 +106,7 @@ object TransactionSyncManager {
}

fun syncKeyIv(mRealm: Realm, settings: SharedPreferences, listener: SyncListener) {
val start = System.currentTimeMillis()
listener.onSyncStarted()
val model = UserProfileDbHandler(MainApplication.context).userModel
val userName = settings.getString("loginUserName", "")
Expand All @@ -104,8 +117,14 @@ object TransactionSyncManager {
mRealm.executeTransactionAsync({ realm: Realm ->
val userModel = realm.where(RealmUserModel::class.java).equalTo("id", id).findFirst()
syncHealthData(userModel, header)
}, { listener.onSyncComplete() }) { error: Throwable ->
error.message?.let { listener.onSyncFailed(it) }
}, {
listener.onSyncComplete()
val end = System.currentTimeMillis()
logDuration(start, end, "syncKeyIv")
}) { error: Throwable ->
error.message?.let {
listener.onSyncFailed(it)
}
}
}

Expand Down Expand Up @@ -228,4 +247,9 @@ object TransactionSyncManager {
e.printStackTrace()
}
}

fun logDuration(start: Long, end: Long, operation: String) {
val duration = end - start
println("Operation $operation took $duration milliseconds")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import org.ole.planet.myplanet.datamanager.Service.*
import org.ole.planet.myplanet.model.*
import org.ole.planet.myplanet.model.RealmUserChallengeActions.Companion.createAction
import org.ole.planet.myplanet.service.*
import org.ole.planet.myplanet.service.TransactionSyncManager.logDuration
import org.ole.planet.myplanet.ui.dashboard.DashboardActivity
import org.ole.planet.myplanet.ui.team.AdapterTeam.OnUserSelectedListener
import org.ole.planet.myplanet.utilities.*
Expand Down Expand Up @@ -742,6 +743,7 @@ abstract class SyncActivity : ProcessUserDataActivity(), SyncListener, CheckVers
}

private fun continueSync(dialog: MaterialDialog) {
val start = System.currentTimeMillis()
processedUrl = saveConfigAndContinue(dialog)
if (TextUtils.isEmpty(processedUrl)) return
isSync = true
Expand All @@ -751,6 +753,8 @@ abstract class SyncActivity : ProcessUserDataActivity(), SyncListener, CheckVers
Service(this).isPlanetAvailable(object : PlanetAvailableListener {
override fun isAvailable() {
Service(context).checkVersion(this@SyncActivity, settings)
val end = System.currentTimeMillis()
logDuration(start, end, "continueSync")
}
override fun notAvailable() {
if (!isFinishing) {
Expand Down