Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ object CCPerfMonitoring {
// Measures the duration of synchronous case list loading
const val TRACE_SYNC_ENTITY_LIST_LOADING = "sync_case_list_loading"
const val TRACE_CASE_SEARCH_TIME = "case_search_time"
const val TRACE_FORM_LOADING_TIME = "form_loading_time"

// Attributes
const val ATTR_NUM_CASES_LOADED = "number_of_cases_loaded"
const val ATTR_RESULTS_COUNT: String = "case_search_results_count"
const val ATTR_SEARCH_QUERY_LENGTH: String = "case_search_query_length"
const val ATTR_FORM_NAME = "form_name"
const val ATTR_FORM_XMLNS = "form_xmlns"

fun startTracing(traceName: String): Trace? {
try {
Expand Down
13 changes: 13 additions & 0 deletions app/src/org/commcare/tasks/FormLoaderTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import android.content.Context;
import android.util.Log;

import com.google.firebase.perf.metrics.Trace;

import org.commcare.CommCareApplication;
import org.commcare.android.database.app.models.FormDefRecord;
import org.commcare.android.javarosa.AndroidXFormHttpRequester;
import org.commcare.android.logging.ForceCloseLogger;
import org.commcare.android.resource.installers.XFormAndroidInstaller;
import org.commcare.core.process.CommCareInstanceInitializer;
import org.commcare.engine.extensions.XFormExtensionUtils;
import org.commcare.google.services.analytics.CCPerfMonitoring;
import org.commcare.logging.UserCausedRuntimeException;
import org.commcare.logging.XPathErrorLogger;
import org.commcare.logic.AndroidFormController;
Expand Down Expand Up @@ -51,6 +54,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.spec.SecretKeySpec;

Expand Down Expand Up @@ -94,6 +99,7 @@ public FormLoaderTask(SecretKeySpec symetricKey, boolean readOnly,
*/
@Override
protected FECWrapper doTaskBackground(Integer... formDefId) {
Trace trace = CCPerfMonitoring.INSTANCE.startTracing(CCPerfMonitoring.TRACE_FORM_LOADING_TIME);
FormDef fd = null;

FormDefRecord formDefRecord = FormDefRecord.getFormDef(
Expand Down Expand Up @@ -142,6 +148,13 @@ protected FECWrapper doTaskBackground(Integer... formDefId) {
AndroidFormController formController = new AndroidFormController(fec, mReadOnly, savedFormSession);

data = new FECWrapper(formController);

try {
Map<String, String> attrs = new HashMap<>();
attrs.put(CCPerfMonitoring.ATTR_FORM_NAME, fd.getName());
attrs.put(CCPerfMonitoring.ATTR_FORM_XMLNS, fd.getMainInstance().schema);
CCPerfMonitoring.INSTANCE.stopTracing(trace, attrs);
} catch (Exception ignored) {}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

think we would still want to log the exception atleast

return data;
}

Expand Down
Loading