Skip to content

Commit

Permalink
Add Performance Support for Swift Package Manager (#8412)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>

* Remove Protobuf dependency  (#8511)

* Remove protobuf dependency

* Update FirebasePerformance.podspec

* Incorporate comments.

* Update UIKit import

Co-authored-by: Paul Beusterien <[email protected]>
  • Loading branch information
jeremyjiang-dev and paulb777 authored Aug 10, 2021
1 parent ad1cd17 commit ec193d0
Show file tree
Hide file tree
Showing 81 changed files with 2,870 additions and 3,813 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/performance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,34 @@ jobs:
- name: Test objc quickstart
run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Performance)

spm:
# Don't run on private repo unless it is a PR.
if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request'
runs-on: macOS-latest
strategy:
matrix:
target: [iOS]
steps:
- uses: actions/checkout@v2
- name: Initialize xcodebuild
run: scripts/setup_spm_tests.sh
- name: Unit Tests
run: scripts/third_party/travis/retry.sh ./scripts/build.sh PerformanceUnit ${{ matrix.target }} spm

spm-cron:
# Don't run on private repo.
if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk'
runs-on: macOS-latest
strategy:
matrix:
target: [tvOS]
steps:
- uses: actions/checkout@v2
- name: Initialize xcodebuild
run: scripts/setup_spm_tests.sh
- name: Unit Tests
run: scripts/third_party/travis/retry.sh ./scripts/build.sh PerformanceUnit ${{ matrix.target }} spm

catalyst:
if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request'
runs-on: macOS-latest
Expand All @@ -94,3 +122,23 @@ jobs:
run: scripts/setup_bundler.sh
- name: Build and test
run: scripts/third_party/travis/retry.sh pod spec lint FirebasePerformance.podspec --skip-tests --sources='https://github.com/firebase/SpecsTesting','https://github.com/firebase/SpecsDev.git','https://github.com/firebase/SpecsStaging.git','https://cdn.cocoapods.org/'

performance-cron-only:
# Don't run on private repo.
if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk'
runs-on: macos-latest
strategy:
matrix:
target: [ios, tvos]
flags: [
'--skip-tests --use-static-frameworks',
'--skip-tests --use-libraries'
]
needs: pod-lib-lint
steps:
- uses: actions/checkout@v2
- name: Setup Bundler
run: scripts/setup_bundler.sh
- name: PodLibLint Performance Cron
run: |
scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebasePerformance.podspec --platforms=${{ matrix.target }} ${{ matrix.flags }}
12 changes: 6 additions & 6 deletions FirebasePerformance.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ Firebase Performance library to measure performance of Mobile and Web Apps.

base_dir = "FirebasePerformance/"
s.source_files = [
base_dir + 'Sources/**/*.[mh]',
base_dir + 'ProtoSupport/**/*.[mh]',
base_dir + 'Sources/**/*.[cmh]',
'FirebaseCore/Sources/Private/*.h',
'FirebaseInstallations/Source/Library/Private/*.h',
'FirebaseRemoteConfig/Sources/Private/*.h',
Expand All @@ -40,9 +39,10 @@ Firebase Performance library to measure performance of Mobile and Web Apps.
base_dir + 'Public/**/*.h',
]

s.public_header_files = base_dir + 'Sources/Public/*.h'
s.public_header_files = base_dir + 'Sources/Public/FirebasePerformance/*.h'

preprocessor_definitions = 'GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 ' + 'FIRPerformance_LIB_VERSION=' + String(s.version)
preprocessor_definitions = 'FIRPerformance_LIB_VERSION=' + String(s.version)
preprocessor_definitions += ' PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1'
if ENV['FPR_UNSWIZZLE_AVAILABLE'] && ENV['FPR_UNSWIZZLE_AVAILABLE'] == '1' then
preprocessor_definitions += ' UNSWIZZLE_AVAILABLE=1'
end
Expand All @@ -64,14 +64,14 @@ Firebase Performance library to measure performance of Mobile and Web Apps.
s.dependency 'GoogleUtilities/Environment', '~> 7.4'
s.dependency 'GoogleUtilities/ISASwizzler', '~> 7.4'
s.dependency 'GoogleUtilities/MethodSwizzler', '~> 7.4'
s.dependency 'Protobuf', '~> 3.15'
s.dependency 'nanopb', '~> 2.30908.0'

s.test_spec 'unit' do |unit_tests|
unit_tests.platforms = {:ios => ios_deployment_target, :tvos => tvos_deployment_target}
unit_tests.scheme = { :code_coverage => true }
unit_tests.source_files = [
'FirebasePerformance/Tests/Unit/**/*.{m,h,plist}',
'GoogleDataTransport/GDTCORTests/Common/**/*.[hm]',
'SharedTestUtilities/*.[hm]',
]
unit_tests.resources = ['FirebasePerformance/Tests/Unit/Server/*File']
unit_tests.requires_arc = true
Expand Down
3 changes: 3 additions & 0 deletions FirebasePerformance/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Version 8.6.0
* Add Firebase Performance support for Swift Package Manager. (#6528)

# Version 8.2.0
* Update log messages with proper log levels.
* Fix empty values in `network_info.request_completed_time_us` field from the [data schema](https://firebase.google.com/docs/perf-mon/bigquery-export#detailed_data_schema).
Expand Down
Loading

0 comments on commit ec193d0

Please sign in to comment.