* Fix a couple of race conditions and module import of a private header
The header and API in question should be considered hidden. An alternative would be expose the API in the private header .
A race condition existed in the upload package itself--it should hand copies of itself and not self to prevent asynchronous mutation whilst a different queue is also executing an asynchronous mutation. One alternative would be to create mutable an immutable variants of the package. This could manifest as an EXC_BAD_ACCESS in GDTCCTPrioritizer.m
* Assert that the IMP is present, because there shouldn't be a silent failure
* Address GDT test issues
1. Fixes the event generator such that derived event fileURL will now be non-nil
2. Removes reachability check for integration tests since being locally connected via LAN but not connected to the internet would cause the test disabling check to pass. Instead, we attempt an actual NSURLRequest to a WAN target and set the value based on the success of that request.
* Create GDT's directory on first usage
* Libraries should save state if a completion block is requested
Currently, the onComplete block of sendXEvent:onComplete: is invoked when the event bytes are written to disk. However, if the app crashes before a lifecycle event occurs (trigger GDTCORStorage to serialize to disk), that event if effectively lost because the metadata has all been lost. This change triggers the saving of state of GDTCORStorage and prioritizers (if they implement it) if an onComplete block has been given.
* Remove flaky check
* Update GDTCORStorage.m
* Refactor event fileURLs to be derived
Apparently, since iOS 8, it's possible for the app's bundle to change directories as often as every launch. This is a mechanism that's hopefully slightly more robust against that, as data is supposed to carry over, the UUID component of the app's absolute directory might just change.
* Convert a couple of tests, actually use a non-absolute URL in GDTCOREvent
* Make sure to use the event fileURL property as the source of truth.
Add some additional logs and improve the integration test
* Fix KVC not working for the removed property
* Don't attempt to create data if the event's fileURL is nil.
This could be because of changes to NSCoding w.r.t. transitioning from GDTCORStoredEvent to GDTCOREvent.
* Attempt to address sudden analyzer issues
* Don't pass nil to a function that requires non-nil arguments.
* Change error code to the new GDTCORMCEFileReadError
* Populate network_connection_info and add test
* Wrap build-in api in GDTCORPlatform and other changes
* Set GDT_VERBOSE_LOGGING back to 0
* Add several check points for nil value
* tiny change import of nanopbhelper.m
* comments and typos
* Fixes appWillTerminate not running on GDTStorage's queue
Fixes#4546
Thanks @plu for the test case!
* Use the correct lifecycle event.
* Additional comments.
from readyToUploaderWithConditions: to readyToUploadTarget:conditions: in order to allow the same object to act as an uploader for multiple targets.
similarly, uploadPackageWithConditions: to uploadPackageWithTarget:conditions:
Deletes support and tests for the FLL backend, since it's being rolled into the CCT uploader and prioritizer objects.
* Send diagnostic data to the FLL backend instead of the CCT backend
* Handle FLL redirects and set the User-Agent
The podspec now surfaces the SDK version.
* Add unit tests for handling redirects
* Make mph-gdtsqlite run travis (#3861)
* Put upload coordinator encoding and decoding on the queue
* Fix main-thread access in the test app
* Remove accidental change to travis.yml
* Fix main thread crashing issue, reenable tests.
* Added log, extra check for event generation to prevent early exit.
* Temporarily run cron tests for travis.
* Revert travis.yml update
* Change property to atomic based on review comments.
* Fix missing `runningInBackground` flags.
* Attempt at fixing background issues with GDT.
* Add missing deprecated implementation.
* Transfer extra call to background call.
* Style
* Further review comments.
* Fix testing.
* Refactored FLLIntegrationTest.
This does a few things - split the tests into a specific multithreaded
test and a recursive run without crashing.
It also adds a notification for the upload to post how many events were
uploaded. This should be a bit more reliable and helps the overall
validation during the "run without crashing" test.
* Removed extra log.
* Fix flag for Catalyst.
* Disable currently non-functional test.
* Further review comments.
* Migrate CCT tests to match FLL.
* Revert accidental partial change.
* Clarify comment for starting the background tasks.
* Review feedback, changelog additions and bug numbers.
All data format is with regard to CCT, so renaming wasn't very necessary except in tests.
- Ensures that test event generation creates files, not uses existing ones
- Implements prioritizer and uploader for FLL server
- Main diff from CCT is needing gzipped data and api key
- With the sqlite refactor, this will be more consolidated