-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Log filter times during form entry #6573
base: master
Are you sure you want to change the base?
Conversation
@seadowg |
The summary is hard to describe without just repeating the text.
@grzesiek2010 done! |
showToast( | ||
context.applicationContext as Application, | ||
context.getLocalizedString(messageResource) | ||
application, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can simplify this class even more by not passing the application
param between showToast
functions and just using it directly where Toast.makeText
is called.
val startTime = System.currentTimeMillis() | ||
val result = next.get() | ||
|
||
val filterTime = System.currentTimeMillis() - startTime |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can take advantage of measureTimeMillis
function.
It could be like:
val result: MutableList<TreeReference>
val filterTime = measureTimeMillis { result = next.get() }
@@ -103,20 +104,21 @@ class CaptureSelfieActivityTest { | |||
launcher.launch<CaptureSelfieActivity>(intent) | |||
onView(withId(R.id.preview)).perform(click()) | |||
|
|||
val latestToast = ShadowToast.getTextOfLatestToast() | |||
val latestToast = ToastUtils.popRecordedToasts()[1] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could be ToastUtils.popRecordedToasts().last()
right?
camera.failToInitialize = true | ||
|
||
val intent = Intent(application, CaptureSelfieActivity::class.java).also { | ||
it.putExtra(CaptureSelfieActivity.EXTRA_TMP_PATH, "blah") | ||
} | ||
|
||
launcher.launch<CaptureSelfieActivity>(intent) | ||
val latestToast = ShadowToast.getTextOfLatestToast() | ||
val latestToast = ToastUtils.popRecordedToasts()[0] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could be ToastUtils.popRecordedToasts().first()
right?
@@ -1227,6 +1227,10 @@ | |||
<!-- An uncaught exception is an exception that is not handled by ODK Collect and so will force the application to close --> | |||
<string name="crash_app_summary">Force an uncaught exception causing the app to crash</string> | |||
|
|||
<!-- Option provided in the Developer tools settings tool allow debugging filters during form entry --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you mean ...Developer tools settings to allow...
?
it.addPostProcessor(EntityFormFinalizationProcessor()) | ||
|
||
if (settings.getBoolean(ProjectKeys.KEY_DEBUG_FILTERS)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think it's convenient for the QA team or us to enable that option every time we install a new version of the app, which might happen quite often. Wouldn't it be better to always use that strategy in debug mode?
This adds a toast that shows the execution time for filters during form entry. The goal here is to allow developers and QA to quickly debug optimizations/changes to filter code without needing to reach for timers.
Why is this the best possible solution? Were any other approaches considered?
The biggest thing to discuss here is the change that removes
Application
as an arg from theToastUtils
helpers. My goal here was to makeToastUtils
more like Timber or Analytics, but I'm happy to discuss if that doesn't feel write!How does this change affect users? Describe intentional changes to behavior and behavior that could have accidentally been affected by code changes. In other words, what are the regression risks?
Not a lot to check here other than playing around with the new "Debug filters" setting in "Experimental".
Before submitting this PR, please make sure you have:
./gradlew connectedAndroidTest
(or./gradlew testLab
) and confirmed all checks still passDateFormatsTest