DataDog / dd-sdk-android

Datadog SDK for Android (Compatible with Kotlin and Java)
Apache License 2.0
150 stars 59 forks source link

RUM-4098: Add TLVFormat DataStore persistence #2038

Closed jonathanmos closed 3 months ago

jonathanmos commented 4 months ago

What does this PR do?

Adds the capability to write/read files in TLVformat, and defines a DataStore type that features can use to persist data between sessions.

Motivation

Part of the effort to persist bitmap hashes between sessions. Integrating the datastore with SR will be in a second PR.

Additional Notes

Anything else we should know when reviewing?

Review checklist (to be filled by reviewers)

codecov-commenter commented 4 months ago

Codecov Report

Attention: Patch coverage is 90.62500% with 24 lines in your changes missing coverage. Please review.

Project coverage is 83.23%. Comparing base (d3f69b6) to head (d25e520). Report is 3 commits behind head on develop.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #2038 +/- ## =========================================== + Coverage 83.19% 83.23% +0.04% =========================================== Files 495 508 +13 Lines 17773 18004 +231 Branches 2685 2699 +14 =========================================== + Hits 14785 14985 +200 - Misses 2256 2274 +18 - Partials 732 745 +13 ``` | [Files](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | Coverage Δ | | |---|---|---| | [...in/com/datadog/android/api/feature/FeatureScope.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fapi%2Ffeature%2FFeatureScope.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9hcGkvZmVhdHVyZS9GZWF0dXJlU2NvcGUua3Q=) | `0.00% <ø> (ø)` | | | [...in/com/datadog/android/core/internal/SdkFeature.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2FSdkFeature.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL1Nka0ZlYXR1cmUua3Q=) | `90.86% <100.00%> (+1.76%)` | :arrow_up: | | [...rnal/persistence/datastore/DataStoreFileHandler.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FDataStoreFileHandler.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9EYXRhU3RvcmVGaWxlSGFuZGxlci5rdA==) | `100.00% <100.00%> (ø)` | | | [...rnal/persistence/datastore/NoOpDataStoreHandler.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FNoOpDataStoreHandler.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9Ob09wRGF0YVN0b3JlSGFuZGxlci5rdA==) | `100.00% <100.00%> (ø)` | | | [.../core/internal/persistence/datastore/ext/IntExt.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2Fext%2FIntExt.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9leHQvSW50RXh0Lmt0) | `100.00% <100.00%> (ø)` | | | [...id/core/internal/persistence/tlvformat/TLVBlock.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Ftlvformat%2FTLVBlock.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL3RsdmZvcm1hdC9UTFZCbG9jay5rdA==) | `100.00% <100.00%> (ø)` | | | [...ternal/persistence/tlvformat/TLVBlockFileReader.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Ftlvformat%2FTLVBlockFileReader.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL3RsdmZvcm1hdC9UTFZCbG9ja0ZpbGVSZWFkZXIua3Q=) | `100.00% <100.00%> (ø)` | | | [...ore/internal/persistence/tlvformat/TLVBlockType.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Ftlvformat%2FTLVBlockType.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL3RsdmZvcm1hdC9UTFZCbG9ja1R5cGUua3Q=) | `100.00% <100.00%> (ø)` | | | [...oid/core/persistence/datastore/DataStoreContent.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Fpersistence%2Fdatastore%2FDataStoreContent.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9EYXRhU3RvcmVDb250ZW50Lmt0) | `100.00% <100.00%> (ø)` | | | [...ernal/persistence/datastore/DatastoreFileWriter.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FDatastoreFileWriter.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9EYXRhc3RvcmVGaWxlV3JpdGVyLmt0) | `97.87% <97.87%> (ø)` | | | ... and [5 more](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | | ... and [31 files with indirect coverage changes](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2038/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog)