Commit Graph
157 Commits
Author SHA1 Message Date
Jeremy JiangandPaul Beusterien ec193d0150 Add Performance Support for Swift Package Manager (#8412)
* Create NanoPb code generation scripts (#8336)

* Create NanoPb code generation scripts

* Fix style and add README

* Fix copyright

* Update proto_generator.py

* Update README.md

* Create nanopb options file. (#8371)

* Create NanoPb code generation scripts

* Fix style and add README

* Fix copyright

* Update perf_metrics.options

* Update options with map

* Add generated proto files.

* Update imports.

* Convert Objective-C Classes to Nanopb (#8387)

* Convert all traces to nanopb

* Refactor for loop.

* Add set has_application_info to true.

* Incorporated comments.

* Fix style

* Create NanoPb code generation scripts (#8336)

* Create NanoPb code generation scripts

* Fix style and add README

* Fix copyright

* Update proto_generator.py

* Update README.md

* Create nanopb options file. (#8371)

* Create NanoPb code generation scripts

* Fix style and add README

* Fix copyright

* Update perf_metrics.options

* Update options with map

* Add generated proto files.

* Update imports.

* Convert Objective-C Classes to Nanopb (#8387)

* Convert all traces to nanopb

* Refactor for loop.

* Add set has_application_info to true.

* Incorporated comments.

* Fix style

* Fix style

* Convert nanopb struct to GDTCOREventDataObject and update the source code to use nanopb struct. (#8439)

* Convert all traces to nanopb

* Refactor for loop.

* WIP: nanopb conversion in FPRClient and FPREvent

* Update FPRClientTest.m

* Update FPRClient.m

* Update FPRClientTest.m

* Add set has_application_info to true.

* Remove proto imports.

* Set has_fields to be true in FPRTestUtils.m

* Completed GDTEvent conversion.

* Fix sampler tests.

* Fix style

* Refactor nanopb struct setter

* Fix style

* Fix pod-lib-lint failures.

* Update FPRClient with decoded string

* Set some "_has" fields to true.

* Add prefix to extern methods.

* Fix style.

* Update FPRClient to use trace.name without FPRDecodeString

* Fix style

* Incorporate comments.

* Integrate Performance with SPM (#8476)

* Convert all traces to nanopb

* Refactor for loop.

* WIP: nanopb conversion in FPRClient and FPREvent

* Update FPRClientTest.m

* Update FPRClient.m

* Update FPRClientTest.m

* Add set has_application_info to true.

* Remove proto imports.

* Set has_fields to be true in FPRTestUtils.m

* Completed GDTEvent conversion.

* Fix sampler tests.

* Fix style

* Refactor nanopb struct setter

* Fix style

* Fix pod-lib-lint failures.

* Update FPRClient with decoded string

* Set some "_has" fields to true.

* Add prefix to extern methods.

* Fix style.

* Update FPRClient to use trace.name without FPRDecodeString

* Fix style

* Update Package.swift

* Update Package.swift

* Update Package.swift

* Made SDK and unit tests buildable.

* Made all unit tests passing.

* Update keyWindow style.

* Add Performance to workflow.

* Update FPRUIViewControllerInstrument.h

* Incorporate comments.

* Add Performance to SwiftPMTests.

* Update style.

* Fix Unit tests and update workflow.

* Add FirebasePerformance wrapper

* Update import statement.

* Update style.

* Update performance.yml

* Create PerformanceUnit.xcscheme

* Update objc-module.m

* Update objc-module.m

* Updae objc-header.m

* Update objc-header.m

* Incorporate feedback.

* Update objc-header.m

* Organize folder structure to fix the spm tests.

* Update public import path

* Delete xcodebuild.log

* Update workflow files

* Fix failing swift-test for Perf SPM (#8507)

* Fix UIKit import

* Update FPRNetworkTraceTest.m

* Exclude TARGET_OS_MACCATALYST from objc header test

* Update main.swift

* Update main.swift

Co-authored-by: Paul Beusterien <paulbeusterien@google.com>

* Remove Protobuf dependency  (#8511)

* Remove protobuf dependency

* Update FirebasePerformance.podspec

* Incorporate comments.

* Update UIKit import

Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
2021-08-10 13:41:18 -04:00
Paul Beusterien 54d28547d3 Remove GDT from repo (#7384) 2021-01-27 07:51:12 -08:00
Paul Beusterien 02488e99b7 Remove GoogleUtilities from repo (#7315) 2021-01-21 07:09:50 -08:00
Maksym Malyhin 953dec1aae GDT test server: stop server on dealloc only if running (#7253) 2021-01-06 11:06:38 -05:00
BJ Homer 3642b56224 Delay GDTCORUploadCoordinator timer initial run (#7173)
If an upload coordinator gets created during `+load` calls, it can end up running its immediately, while +load calls are still running. It's generally a bad idea to be splitting off threads while +load calls are still running.

The upload coordinator checks every 30 seconds, and doesn't really need to run right away. Since it's easy to transitively create an upload coordinator from other calls that happen during +load, we'll just push off the initial run of the timer slightly. That makes it less likely to interfere (or deadlock) with other load calls.

See #7171 for an example of a problem solved by this change.
2020-12-15 17:03:29 -05:00
Visu 94ab466f50 Make the URLs used by Google Data Transport available in a Public API. (#7167) 2020-12-15 12:35:50 -08:00
Paul Beusterien 4424e9a5d3 Bump nanopb to 0.3.9.7 (#7108) 2020-12-11 07:04:34 -08:00
Paul Beusterien 1496e0f221 M85 Changelog versions (#7104) 2020-12-04 09:23:28 -08:00
Jeremy Jiang 781c8b842e Expose upload URLs so that perf can stop instrumenting these URLs. (#7064)
* Expose upload URLs.

* Remove code duplication.

* Fix style.

* Make url dictionary local static and dispatch once.

* Fix style.

* Add a local dictionary and return value from it.

* Update CHANGELOG.md

* Update CHANGELOG.md
2020-12-02 09:08:02 -05:00
Maksym Malyhin 92db10edb4 GDT storage cleanup: optimizations for big amount of pending events (#7014)
* GDT storage cleanup performance testing

* style

* GDTCORDirectorySizeTracker - autoreleasepool in cycles

* [GDTCORFlatFileStoragecheckForExpirations] - autoreleasepool in cycles

* TestApp: Performance testing tweeks

* Revert "[GDTCORFlatFileStoragecheckForExpirations] - autoreleasepool in cycles"

This reverts commit e0573f5a1b.

* [GDTCORUploadCoordinator signalToStoragesToCheckExpirations]: signal once per storage

* Revert "Revert "[GDTCORFlatFileStoragecheckForExpirations] - autoreleasepool in cycles""

This reverts commit 34e9eee131.

* style

* changelog
2020-11-24 12:46:50 -05:00
Maksym Malyhin 6e5f02d846 GDT: test app fixes (#6897)
* Add bridging header to GDTTestApp to expose private API

* Update OS versions of test apps

* Use spec OS vesrions for tests and apps

* Use local variables for deployment targets
2020-11-11 12:56:45 -05:00
Paul Beusterien 493eb7cc75 Update Changelogs for 7.1.0 (#6913) 2020-11-06 07:03:27 -08:00
Maksym Malyhin 57123ae0d5 Update clang-format to 11 (#6905)
* Update clang-format to 11

* Upgrade clang format

* Install clang-format@11

* Update readme

* brew update
2020-11-05 12:58:48 -05:00
Maksym Malyhin b05be68db1 GDTCCTUploader: lazy initialize url session, use ephemeral session (#6870)
* GDTCCTUploader: lazy initialize url session, use ephemeral session

* Changelog

* typo
2020-10-29 15:24:44 -04:00
Paul Beusterien a2387fd61c Stop failing on warnings (#6807) 2020-10-22 13:38:26 -07:00
Paul Beusterien b283c58529 Update GDT version for M82 (#6729) 2020-10-14 12:32:31 -04:00
bff6b664d1 Merge release-6.34.0 branch after patch (#6701)
* Update versions for Release 6.34.0

* 6.34.0 updates for SwiftPM (#6614)

* M81 FIS cherry pick of #6570 (#6616)

* FIS: Additional FIRInstallationsItem validation (#6570)

* FIS API tests for no FID in response

* FIRInstallationsIDControllerTests: test names

* FIRInstallationsIDControllerTests: corrupted storage tests

* FIRInstallationsItem validation

* Fix FIRInstallationsItem.IIDDefaultToken copy

* Improve error description.

* FIRInstallationsItem validation error

* FIRInstallationsItem validation tests

* ./scripts/style.sh

* FIRInstallationsIDController: validate stored installation

* FIRInstallationsAPIService installation validation

* Changelog

* Update versions

* patch version

* release manifest

* FIS: don't log anything on success validation (#6635)

* Update changelogs (#6649)

* GoogleDataTransport: deprecated API conditions (#6697)

* GoogleDataTransport: deprecated API conditions

* Version bump

* use `TARGET_OS_IOS`

* changelog

* changelog

* style

* Fix merge

Co-authored-by: Ryan Wilson <wilsonryan@google.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
Co-authored-by: Morgan Chen <morganchen12@gmail.com>
2020-10-08 15:11:00 -04:00
Paul Beusterien 4507ad146b Fix CI/regression - update for change FCM API (#6699) 2020-10-08 11:06:02 -07:00
Ryan Wilson 769fa7b446 Fixed CHANGELOG location. (#6698) 2020-10-08 13:02:08 -04:00
Ryan Wilson 19159a4b25 Fix tvOS storage issues. (#6658)
* Fix tvOS storage issues.

On tvOS devices, the ApplicationSupport directory cannot be used.
Unfortunately this doesn't come up in simulator testing, only on device.
This hasn't been fully tested on device but given that any writes to the
ApplicationSupport directory fail on tvOS, this change can't break much.

Fixes #6612

@defagos can you please give this a test?

* Fixed changed dir name for RC

* Fixed test naming, too.

* Fix the documentation comment for GoogleUtilities.

* Updated changelog.

* Review feedback
2020-10-08 11:28:41 -04:00
Maksym Malyhin bde8e07844 GDT: move some headers from public to internal (#6643)
* Move extra public headers to Internal and fix imports

* Cleanup

* Use relative paths in internal headers

* Fix imports in internal headers

* ./scripts/style.sh

* Fix GDTTestApp

* Fix test app

* Use real uploader for watchOS test app

* comma
2020-10-05 14:00:49 -04:00
Maksym Malyhin babd8e63bd GDT: Move GDTCORAssert.h to internal headers (#6638)
* Move GDTCORAssert.h to internal headers

* Fix import
2020-10-01 20:56:26 -04:00
Maksym Malyhin 38be2cc8c6 GDTCORDirectorySizeTracker: fix NSURL constructor (#6580)
* GDTCORDirectorySizeTracker: replace optional NSURL constructor with non-optional.

* GDTCORDirectorySizeTracker tests for the issue

* ./scripts/style.sh

* changelog
2020-09-28 11:01:32 -04:00
Maksym Malyhin 8779479510 GDTCORFlatFileStorageTest size limit tests: use timeout proportional to the number of events (#6537) 2020-09-23 13:44:20 -04:00
Maksym Malyhin 94fb0d1b11 GDT readme: log level configuration (#6513)
* GDT readme: log level configuration

* Typo fix

* Trailing whitespaces
2020-09-21 13:59:37 -04:00
Maksym Malyhin ca44b646b8 GDT: remove pre Xcode 10 availability checks (#6486)
* GDT: remove pre Xcode 11 availability checks

* Revert Xcode 10 required availability checks

* Changelog
2020-09-17 15:31:44 -04:00
Maksym Malyhin cd844903ab GDT tests: Xcode 12 fixes (#6469)
* GDT tests: Xcode 12 fixes

* Silent unused warnings for weakSelf vars (for Xcode 12)
2020-09-16 10:45:31 -04:00
Maksym Malyhin 57101b28a9 GDTTransformer: fix background tasks handling (#6457)
* GDTCORTransformer: background task tests

* GDTCORTransformer: background tasks handling fix

* Copyright

* Changelog

* Comments

* rand() -> arc4random()

* GDTCORTransformer tests for default initializer

* Fix default initializer

* ./scripts/style.sh

* Pass weak application reference to the blocks
2020-09-15 11:02:48 -04:00
Maksym Malyhin a59febae5a GDT: storage size limit (#6365)
* GDTCORFlatFileStorageTest: test storage size limit

* Size limit slow implementation.

* GDTCORFlatFileStorage: prefetch file size

* GDTCORDirectorySizeCalculator introduced

* GDTCORDirectorySizeCalculator integration with GDTCORFlatFileStorage

* Storage size calculation tests

* Cleanup

* Cleanup

* API docs

* Fix type

* Tests

* Tests - don't hardcode event size

* Changelog

* Fix tests on slower CI.

* API docs

* Tests comments

* GDTCORFlatFileStorageTest failure debug

* GDTCORFlatFileStorageTest debug: make sure all generated events stored.

* GDTCORFlatFileStorageTest debug

* GDTCORFlatFileStorageTest debug: dynamically generate events

* Cleanup

* Renaming GDTCORDirectorySizeCalculator->GDTCORDirectorySizeTracker

* Size tracker lazy initialization

* Remove old code

* Size tracker methods renaming

* Cleanup

* Additional tests
2020-09-11 10:42:30 -04:00
Maksym Malyhin 97fb24e09c GDTCORClockTest: decrease expected timestamp accuracy to fix test flakes (#6330) 2020-08-25 16:19:20 -04:00
f33276f530 Update nanopb py3 0.3.9.5 -> 0.3.9.6 (#6214)
* update nanopb from 0.3.9.5 to 0.3.9.6

This fixes issues building firestore SDK with Python3.
Interestingly, latest version 0.4.2 still errors during the build
but 0.3.9.6 works. The git commit for this fix in nanopb
https://github.com/nanopb/nanopb/commit/63f8e5e4946a5f8f0211b454bd37187871c3d023

* Update generated sources

* updating just nanopb dependency version

nanopb updated from 0.3.9.5 to 0.3.9.6
(pod version 1.30905.0 to 1.30906.0)

* Add missing source specifier

* Generated files for protos using nanopb 0.3.9.6

* removed unnecessary whitespaces in files generated by protoc

* using more qualified relative paths for header includes

* Changelog

Co-authored-by: Marek Gilbert <mcg@google.com>
Co-authored-by: Paul Beusterien <paulbeusterien@google.com>
2020-08-14 14:13:01 -07:00
Maksym Malyhin 802cb6a716 GDT: revert cc_scub annotations (#6274) 2020-08-13 16:06:43 -04:00
Tejas Deshpande ab6fc616b4 Fix clang-tidy (#6270) 2020-08-13 11:18:40 -04:00
Tejas Deshpande b449bee0a2 Create an additional URL target for internal use (#6254)
#no-changelog
2020-08-12 18:20:21 -04:00
Maksym Malyhin 2683e9da53 GDTCORClock: use NSTimeZone to get a timezone with respect of daylight (#6246)
* GDTCORClock: use NSTimeZone to get a timezone with respect of daylight

* Changelog
2020-08-10 17:00:26 -04:00
Paul Beusterien 70d4e8a6e6 GDT remove @import (#6178) 2020-07-31 09:26:49 -07:00
Paul Beusterien 85e3354346 GDT - new public header structure (#6177) 2020-07-31 08:12:23 -07:00
Paul Beusterien a372ed2a27 import nanopb without touching CocoaPods imports (#6165) 2020-07-30 14:54:37 -07:00
Paul Beusterien 0b977bd636 Revert "Remove #if SWIFT_PACKAGE checks for nanopb (#6163)" (#6164)
This reverts commit 303f8ca7bb.
2020-07-30 08:40:47 -07:00
Paul Beusterien 303f8ca7bb Remove #if SWIFT_PACKAGE checks for nanopb (#6163) 2020-07-30 06:49:46 -07:00
Maksym Malyhin fa26512015 GDT: fix time units for the request and events uptime (#6102)
* GDTCORClock: fix uptime and kernelBootTime units

* GDTCCTNanopbHelpers: fix time units for the batch and events snapshot uptime

* Formatting

* GDTCORClock: properties rename and deprecation.

* Changelog updates

* Fix renaming issues

* Cleanup

* GDTCORClockTest: reduce timestamp comparison accuracy
2020-07-22 11:49:55 -04:00
Maksym Malyhin ec018dcbd7 [GDTCORUploadCoordinator startTimer]: don't restart timer if already started (#6032)
* [GDTCORUploadCoordinator startTimer]: don't restart timer if already started

* style

* `GDTCORUploadCoordinator.timer` - nullable

* GDTCORUploadCoordinator test utils thread safety.
2020-07-13 17:35:20 -04:00
Maksym Malyhin 744fd1865b GDTCORFlatFileStorage: keep not expired events when expired batch removed (#6010)
* GDTCORFlatFileStorage: expiration clean up tests

* GDTCORFlatFileStorage: keep not expired events when expired batch removed

* Cleanup

* Cleanup

* Comments

* Comments

* Remove additional delays in tests

* style

* Changelog
2020-07-09 17:12:54 -04:00
Maksym Malyhin 4dd48bdcd9 GDT: Retry uploading batches failed to upload before the app termination (#5942)
* GDTCCTUploaderTest: test a lost batch upload retry

* GDTCCTUploader: refactoring to prepare for lost batches uploading

* GDTCCTUploader: Upload previously batched events first

* Fix GDTCCTTestStorage

* Refactor GDTCCTUploaderTest

* GDTCORFlatFileStorageTest: batch tests

* GDTCORFlatFileStorage: refactor removeBatchWithID to prepare for eventsForbatchID

* eventsInBatchWithID implementation

* Fix tests

* Uploader fix for empty batch state

* GDTCORUploadCoordinator: high priority targets

* style

* GDTCCTUploaderTest

* GDTCCTUploaderTest: cleanup

* Cleanup and API docs.

* GDTCORUploadCoordinator: revert high priority targets

* GDTCCTUploader: make sure GDTCOREventQoSFast is part of a regular batch as well.

* Cleanup

* GDTCCTUploader: don't report ready for upload until there are events.

* GDTCCTUploaderTest: move failed batch back to the queue

* GDTCORFlatFileStorage: removeBatchWithID with deleteEvents==NO

* GDTCORFlatFileStorage: remove batch directory

* style

* GDTCORFlatFileStorage: comments and debug logs

* formatting

* GDTCCTUploaderTest: recover tests

* GDTCCTTestServer: support for async request handler

* GDTCCTUploaderTest: ongoing request tests

* GDTCORStorageProtocol: remove redundant `eventsInBatchWithID` method.

* GDTCORFlatFileStorageTest: `removeBatchWithID` tests

* Cleanup

* GDTCORFlatFileStorage: cleanup

* GDTCORFlatFileStorageTest: better coverage and cleanup

* Comments and improvements

* GDTCCTUploaderTest: reduce code duplication

* GDTCCTUploaderTest: conditions tests

* GDTCCTUploader: fix next request wait time

* run ./scripts/style.sh
2020-07-07 09:10:22 -04:00
Paul Beusterien d653c9584c Update copyright presubmit and fix 2020 copyrights (#5944) 2020-06-29 13:16:19 -07:00
Paul Beusterien 6e0e53aae8 Fix GDTCCT build (#5935) 2020-06-29 07:08:27 -07:00
Maksym Malyhin dbef679b38 GDT: Fix test storage type mismatches (#5912) 2020-06-25 12:22:15 -04:00
Maksym Malyhin 527ce9049f Use UUID as GDTCOREvent.eventID (#5907)
* Remove unused header from FIRCoreDiagnosticsTest

* Use UUID as GDTCOREvent

* Fix analyzer issue

* run ./scripts/style.sh

* Code review comments
2020-06-25 09:46:01 -04:00
Paul Beusterien 5a5914da7e GDT Repo-relative imports and SPM (#5909) 2020-06-24 17:50:15 -07:00
Paul Beusterien e03a8d91a0 Consolidate GDT and GDTCCT to a single pod (#5902) 2020-06-24 14:09:46 -07:00