rotbolt / flaker Goto Github PK
View Code? Open in Web Editor NEWA flaky network simulator for your mobile app
Home Page: https://rotbolt.github.io/Flaker/
License: Apache License 2.0
A flaky network simulator for your mobile app
Home Page: https://rotbolt.github.io/Flaker/
License: Apache License 2.0
We will check for expired data on launch time and delete on launch time only
It turns out we have to turn off the Sentry level and set proper package for flaker companion app error logging
We should not hold FlakerViewModel factory in FlakerAndroidRetrofitContainer as field. Lets change it to simple method call
Two different instances of NetworkRequestRepo is being provided for observe and insertion of requests into DB which is what causing the bug
Solution
Provide NetworkRequestRepo in Singleton fashion
For now, we will test with local maven publication and check how sample app works
On tapping 15 days, it saves for 30 days
On tapping 30 days it saves for 15 days
Create same mocking behav6as Retrofit Mock for Ktor
It appears the minimum SDK is 24 and this may be due to sql delight. I got very unhelpful error messages from AS trying to use it until I finally figured out it was a minimum SDK issue.
I know 22 is just not fun be we have to be there due to old specialized hardware.
Would love to use the project but I really needed to test crappy network so I wrote an OKHTTP interceptor that put in a 1s delay and was able to replicate and fix the code issue I had that I planned to use this project for.
One must use matchingFallback
on android if more than debug and release varianr
Should not be used for Release builds but QA builds are a valid use case scenario and when we try to use the library for qa builds it fails to build with the following exception.
" implementation(deplibs.flaker)" version 0.1.2
Error while evaluating property 'content' of task ':app:generateQaFeatureTransitiveDeps'.
> Could not resolve all artifacts for configuration ':app:qaRuntimeClasspath'.
> Could not resolve app.cash.sqldelight:android-driver:2.0.0.
Required by:
project :app > io.github.rotbolt:flaker-android-okhttp:0.1.2 > io.github.rotbolt:flaker-data:0.1.2 > io.github.rotbolt:flaker-data-android:0.1.2
> No matching variant of app.cash.sqldelight:android-driver:2.0.0 was found. The consumer was configured to find a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'qa', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.1', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
- Variant 'debugVariantMavenApiPublication' capability app.cash.sqldelight:android-driver:2.0.0:
- Incompatible because this component declares a component for use during compile-time, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug' and the consumer needed a component for use during runtime, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'qa'
- Other compatible attributes:
- Doesn't say anything about com.android.build.api.attributes.AgpVersionAttr (required '8.1.1')
- Doesn't say anything about its target Java environment (preferred optimized for Android)
- Doesn't say anything about org.jetbrains.kotlin.platform.type (required 'androidJvm')
- Variant 'debugVariantMavenJavaDocPublication' capability app.cash.sqldelight:android-driver:2.0.0 declares a component for use during runtime:
- Incompatible because this component declares a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug' and the consumer needed a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'qa'
- Other compatible attributes:
- Doesn't say anything about com.android.build.api.attributes.AgpVersionAttr (required '8.1.1')
- Doesn't say anything about its target Java environment (preferred optimized for Android)
- Doesn't say anything about org.jetbrains.kotlin.platform.type (required 'androidJvm')
ava.lang.NoSuchMethodError: No interface method ExposedDropdownMenu(ZLkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Lkotlin/jvm/f
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt$PrefDropDownItem$1$3.invoke(FlakerPrefsScreen.kt:214)
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt$PrefDropDownItem$1$3.invoke(FlakerPrefsScreen.kt:202)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:117)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.material3.ExposedDropdownMenuKt.ExposedDropdownMenuBox(ExposedDropdownMenu.kt:169)
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt.PrefDropDownItem(FlakerPrefsScreen.kt:198)
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt.access$PrefDropDownItem(FlakerPrefsScreen.kt:1)
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt$FlakerPrefsDialog$3$1$1$1.invoke(FlakerPrefsScreen.kt:95)
at io.github.rotbolt.flakerandroidui.screens.prefs.FlakerPrefsScreenKt$FlakerPrefsDialog$3$1$1$1.invoke(FlakerPrefsScreen.kt:94)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:117)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.foundation.lazy.LazyListIntervalContent$item$3.invoke(LazyListIntervalContent.kt:59)
at androidx.compose.foundation.lazy.LazyListIntervalContent$item$3.invoke(LazyListIntervalContent.kt:59)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:138)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.foundation.lazy.LazyListItemProviderImpl$Item$1.invoke(LazyListItemProvider.kt:79)
at androidx.compose.foundation.lazy.LazyListItemProviderImpl$Item$1.invoke(LazyListItemProvider.kt:77)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
at androidx.compose.foundation.lazy.layout.LazyLayoutPinnableItemKt.LazyLayoutPinnableItem(LazyLayoutPinnableItem.kt:58)
at androidx.compose.foundation.lazy.LazyListItemProviderImpl.Item(LazyListItemProvider.kt:77)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactoryKt$SkippableItem$1.invoke(LazyLayoutItemContentFactory.kt:135)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactoryKt$SkippableItem$1.invoke(LazyLayoutItemContentFactory.kt:134)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
at androidx.compose.foundation.lazy.layout.LazySaveableStateHolder.SaveableStateProvider(LazySaveableStateHolder.kt:85)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactoryKt.SkippableItem-JVlU9Rs(LazyLayoutItemContentFactory.kt:134)
at androidx.compose.foundation.lazy.layout.LazyLayoutItemContentFactoryKt.access$SkippableItem-JVlU9Rs(LazyLayoutItemContentFactory.kt:1)
We are using compose version, 2023.10.00.
I've checked library version is using 2023.06.01, I don't know it is actually compatibility issue but it crashes anyway.
Please review for it. Thank you. @RotBolt
We should add Data Retention policy which will tell for how long the data will be stored in the flaker companion app
We should give following options to the user to configure it instead of indefinitely storing the data
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.