From 110e48093b1959ae972fbd947f54defad3adc766 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 00:49:12 +0000 Subject: [PATCH 1/5] chore: update rubocop-performance requirement from ~> 1.24.0 to ~> 1.25.0 Updates the requirements on [rubocop-performance](https://github.com/rubocop/rubocop-performance) to permit the latest version. - [Release notes](https://github.com/rubocop/rubocop-performance/releases) - [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.24.0...v1.25.0) --- updated-dependencies: - dependency-name: rubocop-performance dependency-version: 1.25.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 18df87d61b..59ef31b9b7 100644 --- a/Gemfile +++ b/Gemfile @@ -8,4 +8,4 @@ source 'https://rubygems.org' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' -gem 'rubocop-performance', '~> 1.24.0' +gem 'rubocop-performance', '~> 1.25.0' From 22a6005c658e5f8801cc1e211be40c699693981c Mon Sep 17 00:00:00 2001 From: Kayla Reopelle <87386821+kaylareopelle@users.noreply.github.com> Date: Tue, 8 Apr 2025 11:20:40 -0700 Subject: [PATCH 2/5] chore: Update grpc example's require_relative order (#1467) chore: Update require_relative order Since we're using an inline gemfile, call require_relative after the grpc gem is available to avoid 'cannot load such file' errors. --- instrumentation/grpc/example/trace_demonstration.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/instrumentation/grpc/example/trace_demonstration.rb b/instrumentation/grpc/example/trace_demonstration.rb index 479ca11429..23cf123d30 100644 --- a/instrumentation/grpc/example/trace_demonstration.rb +++ b/instrumentation/grpc/example/trace_demonstration.rb @@ -1,6 +1,3 @@ -require_relative './proto/example_api_services_pb' -require_relative './example_impl' - require 'bundler/inline' gemfile do @@ -12,6 +9,9 @@ gem 'opentelemetry-sdk' end +require_relative 'proto/example_api_services_pb' +require_relative 'example_impl' + ENV['OTEL_TRACES_EXPORTER'] = 'console' OpenTelemetry::SDK.configure do |c| c.use 'OpenTelemetry::Instrumentation::Grpc' From 999dbb1f62a063c7a351134750f04ceba3a9674c Mon Sep 17 00:00:00 2001 From: Michael He <53622546+yiyuan-he@users.noreply.github.com> Date: Wed, 9 Apr 2025 09:49:58 -0700 Subject: [PATCH 3/5] feat: contribute aws ec2 resource detector (#1455) * feat: contribute ec2 resource detector * fix ci and address comments * ci fix pt.2 * fix rubocop offenses * add fallback mechanism in IMDSv1 case * update versions and add constant for otel resource prefix --------- Co-authored-by: Kayla Reopelle <87386821+kaylareopelle@users.noreply.github.com> --- .github/workflows/ci-contrib.yml | 1 + resources/aws/Gemfile | 25 ++ resources/aws/LICENSE | 201 ++++++++++++++ resources/aws/README.md | 59 ++++ resources/aws/Rakefile | 28 ++ .../opentelemetry-resource-detector-aws.rb | 7 + .../lib/opentelemetry/resource/detector.rb | 23 ++ .../opentelemetry/resource/detector/aws.rb | 26 ++ .../resource/detector/aws/ec2.rb | 144 ++++++++++ .../resource/detector/aws/version.rb | 15 ++ ...pentelemetry-resource-detector-aws.gemspec | 28 ++ .../resource/detector/aws/ec2_test.rb | 255 ++++++++++++++++++ .../resource/detector/aws_test.rb | 39 +++ resources/aws/test/test_helper.rb | 15 ++ 14 files changed, 866 insertions(+) create mode 100644 resources/aws/Gemfile create mode 100644 resources/aws/LICENSE create mode 100644 resources/aws/README.md create mode 100644 resources/aws/Rakefile create mode 100644 resources/aws/lib/opentelemetry-resource-detector-aws.rb create mode 100644 resources/aws/lib/opentelemetry/resource/detector.rb create mode 100644 resources/aws/lib/opentelemetry/resource/detector/aws.rb create mode 100644 resources/aws/lib/opentelemetry/resource/detector/aws/ec2.rb create mode 100644 resources/aws/lib/opentelemetry/resource/detector/aws/version.rb create mode 100644 resources/aws/opentelemetry-resource-detector-aws.gemspec create mode 100644 resources/aws/test/opentelemetry/resource/detector/aws/ec2_test.rb create mode 100644 resources/aws/test/opentelemetry/resource/detector/aws_test.rb create mode 100644 resources/aws/test/test_helper.rb diff --git a/.github/workflows/ci-contrib.yml b/.github/workflows/ci-contrib.yml index eeb666d552..65e48a6afb 100644 --- a/.github/workflows/ci-contrib.yml +++ b/.github/workflows/ci-contrib.yml @@ -110,6 +110,7 @@ jobs: fail-fast: false matrix: gem: + - resource-detector-aws - resource-detector-azure - resource-detector-container - resource-detector-google_cloud_platform diff --git a/resources/aws/Gemfile b/resources/aws/Gemfile new file mode 100644 index 0000000000..b55c4be964 --- /dev/null +++ b/resources/aws/Gemfile @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +source 'https://rubygems.org' + +gemspec + +group :test do + gem 'bundler', '~> 2.4' + gem 'minitest', '~> 5.0' + gem 'rake', '~> 13.0' + gem 'rubocop', '~> 1.75.2' + gem 'rubocop-performance', '~> 1.24.0' + gem 'simplecov', '~> 0.22.0' + gem 'webmock', '~> 3.24' + gem 'yard', '~> 0.9' + + if RUBY_VERSION >= '3.4' + gem 'base64' + gem 'mutex_m' + end +end diff --git a/resources/aws/LICENSE b/resources/aws/LICENSE new file mode 100644 index 0000000000..1ef7dad2c5 --- /dev/null +++ b/resources/aws/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright The OpenTelemetry Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/resources/aws/README.md b/resources/aws/README.md new file mode 100644 index 0000000000..1bb168ca36 --- /dev/null +++ b/resources/aws/README.md @@ -0,0 +1,59 @@ +# OpenTelemetry::Resource::Detector::AWS + +The `opentelemetry-resource-detector-aws` gem provides an AWS resource detector for OpenTelemetry. + +## What is OpenTelemetry? + +OpenTelemetry is an open source observability framework, providing a general-purpose API, SDK, and related tools required for the instrumentation of cloud-native software, frameworks, and libraries. + +OpenTelemetry provides a single set of APIs, libraries, agents, and collector services to capture distributed traces and metrics from your application. You can analyze them using Prometheus, Jaeger, and other observability tools. + +## How does this gem fit in? + +The `opentelemetry-resource-detector-aws` gem provides a means of retrieving a resource for supported environments following the resource semantic conventions. When running on AWS platforms, this detector automatically identifies and populates resource attributes with relevant metadata from the environment. + +## Installation + +Install the gem using: + +```console +gem install opentelemetry-sdk +gem install opentelemetry-resource-detector-aws +``` + +Or, if you use Bundler, include `opentelemetry-sdk` and `opentelemetry-resource-detector-aws` in your `Gemfile`. + +## Usage + +```rb +require 'opentelemetry/sdk' +require 'opentelemetry/resource/detector' + +OpenTelemetry::SDK.configure do |c| + c.resource = OpenTelemetry::Resource::Detector::AWS.detect +end +``` + +## Supported AWS Platforms + +### AWS EC2 Detector + + +Populates `cloud` and `host` for processes running on Amazon EC2, including abstractions such as ECS on EC2. Notably, it does not populate anything on AWS Fargate. + +| Resource Attribute | Description | +|--------------------|-------------| +| `cloud.account.id` | Value of `accountId` from `/latest/dynamic/instance-identity/document` request | +| `cloud.availability_zone` | Value of `availabilityZone` from `/latest/dynamic/instance-identity/document` request | +| `cloud.platform` | The cloud platform. In this context, it's always "aws_ec2" | +| `cloud.provider` | The cloud provider. In this context, it's always "aws" | +| `cloud.region` | Value of `region` from `/latest/dynamic/instance-identity/document` request | +| `host.id` | Value of `instanceId` from `/latest/dynamic/instance-identity/document` request | +| `host.name` | Value of hostname from `/latest/meta-data/hostname` request | +| `host.type` | Value of `instanceType` from `/latest/dynamic/instance-identity/document` request | + +Additional AWS platforms (ECS, EKS, Lambda) will be supported in future versions. + +## License + +The `opentelemetry-resource-detector-aws` gem is distributed under the Apache 2.0 license. See LICENSE for more information. diff --git a/resources/aws/Rakefile b/resources/aws/Rakefile new file mode 100644 index 0000000000..1a64ba842e --- /dev/null +++ b/resources/aws/Rakefile @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'bundler/gem_tasks' +require 'rake/testtask' +require 'yard' +require 'rubocop/rake_task' + +RuboCop::RakeTask.new + +Rake::TestTask.new :test do |t| + t.libs << 'test' + t.libs << 'lib' + t.test_files = FileList['test/**/*_test.rb'] +end + +YARD::Rake::YardocTask.new do |t| + t.stats_options = ['--list-undoc'] +end + +if RUBY_ENGINE == 'truffleruby' + task default: %i[test] +else + task default: %i[test rubocop yard] +end diff --git a/resources/aws/lib/opentelemetry-resource-detector-aws.rb b/resources/aws/lib/opentelemetry-resource-detector-aws.rb new file mode 100644 index 0000000000..a740ef21cc --- /dev/null +++ b/resources/aws/lib/opentelemetry-resource-detector-aws.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require_relative 'opentelemetry/resource/detector' diff --git a/resources/aws/lib/opentelemetry/resource/detector.rb b/resources/aws/lib/opentelemetry/resource/detector.rb new file mode 100644 index 0000000000..40ee6985f0 --- /dev/null +++ b/resources/aws/lib/opentelemetry/resource/detector.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'opentelemetry/sdk' +require 'opentelemetry/resource/detector/aws' +require 'opentelemetry/resource/detector/aws/version' + +# OpenTelemetry is an open source observability framework, providing a +# general-purpose API, SDK, and related tools required for the instrumentation +# of cloud-native software, frameworks, and libraries. +# +# The OpenTelemetry module provides global accessors for telemetry objects. +# See the documentation for the `opentelemetry-api` gem for details. +module OpenTelemetry + module Resource + # Detector contains the resource detectors + module Detector + end + end +end diff --git a/resources/aws/lib/opentelemetry/resource/detector/aws.rb b/resources/aws/lib/opentelemetry/resource/detector/aws.rb new file mode 100644 index 0000000000..ac5060b07c --- /dev/null +++ b/resources/aws/lib/opentelemetry/resource/detector/aws.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'opentelemetry/resource/detector/aws/ec2' + +module OpenTelemetry + module Resource + module Detector + # AWS contains detect class method for determining AWS environment resource attributes + module AWS + extend self + + def detect + # This will be a composite of all the AWS platform detectors + EC2.detect + + # For now, return the EC2 resource directly + # In the future, we'll implement detection for EC2, ECS, EKS, etc. + end + end + end + end +end diff --git a/resources/aws/lib/opentelemetry/resource/detector/aws/ec2.rb b/resources/aws/lib/opentelemetry/resource/detector/aws/ec2.rb new file mode 100644 index 0000000000..a83e28bcb7 --- /dev/null +++ b/resources/aws/lib/opentelemetry/resource/detector/aws/ec2.rb @@ -0,0 +1,144 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'net/http' +require 'json' +require 'opentelemetry/common' + +module OpenTelemetry + module Resource + module Detector + module AWS + # EC2 contains detect class method for determining EC2 resource attributes + module EC2 + extend self + + # EC2 metadata service endpoints and constants + EC2_METADATA_HOST = '169.254.169.254' + TOKEN_ENDPOINT = '/latest/api/token' + IDENTITY_DOCUMENT_ENDPOINT = '/latest/dynamic/instance-identity/document' + HOSTNAME_ENDPOINT = '/latest/meta-data/hostname' + + TOKEN_HEADER = 'X-aws-ec2-metadata-token' + TOKEN_TTL_HEADER = 'X-aws-ec2-metadata-token-ttl-seconds' + TOKEN_TTL_VALUE = '60' + + # Timeout in seconds for HTTP requests + HTTP_TIMEOUT = 1 + + # Create a constant for resource semantic conventions + RESOURCE = OpenTelemetry::SemanticConventions::Resource + + def detect + # Implementation for EC2 detection supporting both IMDSv1 and IMDSv2 + resource_attributes = {} + + begin + # Attempt to get IMDSv2 token - this will fail if IMDSv2 is not supported + # but we'll still try IMDSv1 in that case + token = fetch_token + + # Get instance identity document which contains most metadata + # Will try with token (IMDSv2) or without token (IMDSv1) + identity = fetch_identity_document(token) || {} + return OpenTelemetry::SDK::Resources::Resource.create({}) if identity.empty? + + hostname = fetch_hostname(token) + + # Set resource attributes from the identity document + resource_attributes[RESOURCE::CLOUD_PROVIDER] = 'aws' + resource_attributes[RESOURCE::CLOUD_PLATFORM] = 'aws_ec2' + resource_attributes[RESOURCE::CLOUD_ACCOUNT_ID] = identity['accountId'] + resource_attributes[RESOURCE::CLOUD_REGION] = identity['region'] + resource_attributes[RESOURCE::CLOUD_AVAILABILITY_ZONE] = identity['availabilityZone'] + + resource_attributes[RESOURCE::HOST_ID] = identity['instanceId'] + resource_attributes[RESOURCE::HOST_TYPE] = identity['instanceType'] + resource_attributes[RESOURCE::HOST_NAME] = hostname + rescue StandardError => e + OpenTelemetry.logger.debug("EC2 resource detection failed: #{e.message}") + return OpenTelemetry::SDK::Resources::Resource.create({}) + end + + # Filter out nil or empty values + resource_attributes.delete_if { |_key, value| value.nil? || value.empty? } + OpenTelemetry::SDK::Resources::Resource.create(resource_attributes) + end + + private + + # Fetches an IMDSv2 token from the EC2 metadata service + # + # @return [String, nil] The token or nil if the request failed + def fetch_token + uri = URI.parse("http://#{EC2_METADATA_HOST}#{TOKEN_ENDPOINT}") + request = Net::HTTP::Put.new(uri) + request[TOKEN_TTL_HEADER] = TOKEN_TTL_VALUE + + response = make_request(uri, request) + return nil unless response.is_a?(Net::HTTPSuccess) + + response.body + end + + # Fetches the instance identity document which contains EC2 instance metadata + # + # @param token [String, nil] IMDSv2 token (optional for IMDSv1) + # @return [Hash, nil] Parsed identity document or nil if the request failed + def fetch_identity_document(token) + uri = URI.parse("http://#{EC2_METADATA_HOST}#{IDENTITY_DOCUMENT_ENDPOINT}") + request = Net::HTTP::Get.new(uri) + request[TOKEN_HEADER] = token if token + + response = make_request(uri, request) + return nil unless response.is_a?(Net::HTTPSuccess) + + begin + JSON.parse(response.body) + rescue JSON::ParserError + nil + end + end + + # Fetches the EC2 instance hostname + # + # @param token [String, nil] IMDSv2 token (optional for IMDSv1) + # @return [String, nil] The hostname or nil if the request failed + def fetch_hostname(token) + uri = URI.parse("http://#{EC2_METADATA_HOST}#{HOSTNAME_ENDPOINT}") + request = Net::HTTP::Get.new(uri) + request[TOKEN_HEADER] = token if token + + response = make_request(uri, request) + return nil unless response.is_a?(Net::HTTPSuccess) + + response.body + end + + # Makes an HTTP request with timeout handling + # + # @param uri [URI] The request URI + # @param request [Net::HTTP::Request] The request to perform + # @return [Net::HTTPResponse, nil] The response or nil if the request failed + def make_request(uri, request) + http = Net::HTTP.new(uri.host, uri.port) + http.open_timeout = HTTP_TIMEOUT + http.read_timeout = HTTP_TIMEOUT + + begin + OpenTelemetry::Common::Utilities.untraced do + http.request(request) + end + rescue StandardError => e + OpenTelemetry.logger.debug("EC2 metadata service request failed: #{e.message}") + nil + end + end + end + end + end + end +end diff --git a/resources/aws/lib/opentelemetry/resource/detector/aws/version.rb b/resources/aws/lib/opentelemetry/resource/detector/aws/version.rb new file mode 100644 index 0000000000..6700b50f05 --- /dev/null +++ b/resources/aws/lib/opentelemetry/resource/detector/aws/version.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +module OpenTelemetry + module Resource + module Detector + module AWS + VERSION = '0.0.0' + end + end + end +end diff --git a/resources/aws/opentelemetry-resource-detector-aws.gemspec b/resources/aws/opentelemetry-resource-detector-aws.gemspec new file mode 100644 index 0000000000..591a6627f9 --- /dev/null +++ b/resources/aws/opentelemetry-resource-detector-aws.gemspec @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +lib = File.expand_path('lib', __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'opentelemetry/resource/detector/aws/version' + +Gem::Specification.new do |spec| + spec.name = 'opentelemetry-resource-detector-aws' + spec.version = OpenTelemetry::Resource::Detector::AWS::VERSION + spec.authors = ['OpenTelemetry Authors'] + spec.email = ['cncf-opentelemetry-contributors@lists.cncf.io'] + + spec.summary = 'AWS resource detector for OpenTelemetry' + spec.description = 'AWS resource detector for OpenTelemetry' + spec.homepage = 'https://github.com/open-telemetry/opentelemetry-ruby-contrib' + spec.license = 'Apache-2.0' + + spec.files = Dir.glob('lib/**/*.rb') + + ['LICENSE', 'README.md'] + spec.require_paths = ['lib'] + spec.required_ruby_version = ">= #{File.read(File.expand_path('../../gemspecs/RUBY_REQUIREMENT', __dir__))}" + + spec.add_dependency 'opentelemetry-sdk', '~> 1.0' +end diff --git a/resources/aws/test/opentelemetry/resource/detector/aws/ec2_test.rb b/resources/aws/test/opentelemetry/resource/detector/aws/ec2_test.rb new file mode 100644 index 0000000000..9644d8edf9 --- /dev/null +++ b/resources/aws/test/opentelemetry/resource/detector/aws/ec2_test.rb @@ -0,0 +1,255 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'test_helper' + +describe OpenTelemetry::Resource::Detector::AWS::EC2 do + let(:detector) { OpenTelemetry::Resource::Detector::AWS::EC2 } + let(:ec2_metadata_host) { '169.254.169.254' } + let(:token_path) { '/latest/api/token' } + let(:identity_document_path) { '/latest/dynamic/instance-identity/document' } + let(:hostname_path) { '/latest/meta-data/hostname' } + + let(:mock_token) { 'mock-token-123456' } + let(:mock_identity_document) do + { + accountId: '123456789012', + architecture: 'x86_64', + availabilityZone: 'mock-west-2a', + billingProducts: nil, + devpayProductCodes: nil, + marketplaceProductCodes: nil, + imageId: 'ami-0957cee1854021123', + instanceId: 'i-1234ab56cd7e89f01', + instanceType: 't2.micro-mock', + kernelId: nil, + pendingTime: '2021-07-13T21:53:41Z', + privateIp: '172.12.34.567', + ramdiskId: nil, + region: 'mock-west-2', + version: '2017-09-30' + } + end + let(:mock_hostname) { 'ip-172-12-34-567.mock-west-2.compute.internal' } + + describe '.detect' do + let(:detected_resource) { detector.detect } + let(:detected_resource_attributes) { detected_resource.attribute_enumerator.to_h } + + before do + WebMock.disable_net_connect! + end + + after do + WebMock.allow_net_connect! + end + + describe 'when running on EC2 with successful responses' do + before do + # Stub token request + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .with(headers: { 'X-aws-ec2-metadata-token-ttl-seconds' => '60' }) + .to_return(status: 200, body: mock_token) + + # Stub identity document request + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_return(status: 200, body: mock_identity_document.to_json) + + # Stub hostname request + stub_request(:get, "http://#{ec2_metadata_host}#{hostname_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_return(status: 200, body: mock_hostname) + end + + let(:expected_resource_attributes) do + { + 'cloud.provider' => 'aws', + 'cloud.platform' => 'aws_ec2', + 'cloud.account.id' => '123456789012', + 'cloud.region' => 'mock-west-2', + 'cloud.availability_zone' => 'mock-west-2a', + 'host.id' => 'i-1234ab56cd7e89f01', + 'host.type' => 't2.micro-mock', + 'host.name' => 'ip-172-12-34-567.mock-west-2.compute.internal' + } + end + + it 'returns a resource with EC2 attributes' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal(expected_resource_attributes) + end + end + + describe 'when token request fails' do + before do + # Simulate connection timeout for token request (IMDSv2) + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .to_timeout + + # Stub IMDSv1 fallback request for identity document (without token) + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: mock_identity_document.to_json) + + # Stub IMDSv1 fallback request for hostname (without token) + stub_request(:get, "http://#{ec2_metadata_host}#{hostname_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: mock_hostname) + end + + let(:expected_resource_attributes) do + { + 'cloud.provider' => 'aws', + 'cloud.platform' => 'aws_ec2', + 'cloud.account.id' => '123456789012', + 'cloud.region' => 'mock-west-2', + 'cloud.availability_zone' => 'mock-west-2a', + 'host.id' => 'i-1234ab56cd7e89f01', + 'host.type' => 't2.micro-mock', + 'host.name' => 'ip-172-12-34-567.mock-west-2.compute.internal' + } + end + + it 'falls back to IMDSv1 and returns a resource with EC2 attributes' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal(expected_resource_attributes) + end + end + + describe 'when token request returns error code' do + before do + # Simulate 403 error for token request + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .to_return(status: 403, body: 'Forbidden') + + # Stub IMDSv1 fallback request for identity document (without token) + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: mock_identity_document.to_json) + + # Stub IMDSv1 fallback request for hostname (without token) + stub_request(:get, "http://#{ec2_metadata_host}#{hostname_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: mock_hostname) + end + + let(:expected_resource_attributes) do + { + 'cloud.provider' => 'aws', + 'cloud.platform' => 'aws_ec2', + 'cloud.account.id' => '123456789012', + 'cloud.region' => 'mock-west-2', + 'cloud.availability_zone' => 'mock-west-2a', + 'host.id' => 'i-1234ab56cd7e89f01', + 'host.type' => 't2.micro-mock', + 'host.name' => 'ip-172-12-34-567.mock-west-2.compute.internal' + } + end + + it 'falls back to IMDSv1 and returns a resource with EC2 attributes' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal(expected_resource_attributes) + end + end + + describe 'when identity document request fails' do + before do + # Successful token request + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .with(headers: { 'X-aws-ec2-metadata-token-ttl-seconds' => '60' }) + .to_return(status: 200, body: mock_token) + + # Identity document request with token fails (IMDSv2) + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_return(status: 500, body: 'Internal Server Error') + + # Identity document request without token also fails (IMDSv1 fallback) + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 500, body: 'Internal Server Error') + end + + it 'returns an empty resource' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal({}) + end + end + + describe 'when identity document is not valid JSON' do + before do + # Successful token request + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .with(headers: { 'X-aws-ec2-metadata-token-ttl-seconds' => '60' }) + .to_return(status: 200, body: mock_token) + + # Identity document is invalid JSON (IMDSv2) + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_return(status: 200, body: '{not valid json') + + # Identity document is also invalid JSON when accessed via IMDSv1 + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: '{not valid json') + end + + it 'returns an empty resource' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal({}) + end + end + + describe 'when hostname request fails' do + before do + # Successful token request + stub_request(:put, "http://#{ec2_metadata_host}#{token_path}") + .with(headers: { 'X-aws-ec2-metadata-token-ttl-seconds' => '60' }) + .to_return(status: 200, body: mock_token) + + # Successful identity document request with IMDSv2 + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_return(status: 200, body: mock_identity_document.to_json) + + # Also stub the IMDSv1 fallback for identity document (without token) + # This ensures we don't get unexpected requests even if code paths change + stub_request(:get, "http://#{ec2_metadata_host}#{identity_document_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 200, body: mock_identity_document.to_json) + + # Hostname request times out + stub_request(:get, "http://#{ec2_metadata_host}#{hostname_path}") + .with(headers: { 'X-aws-ec2-metadata-token' => mock_token }) + .to_timeout + + # Also stub the IMDSv1 fallback for hostname (without token) + stub_request(:get, "http://#{ec2_metadata_host}#{hostname_path}") + .with(headers: { 'Accept' => '*/*' }) + .to_timeout + end + + let(:expected_resource_attributes) do + { + 'cloud.provider' => 'aws', + 'cloud.platform' => 'aws_ec2', + 'cloud.account.id' => '123456789012', + 'cloud.region' => 'mock-west-2', + 'cloud.availability_zone' => 'mock-west-2a', + 'host.id' => 'i-1234ab56cd7e89f01', + 'host.type' => 't2.micro-mock' + # host.name is missing because the request failed + } + end + + it 'returns a resource without the hostname' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal(expected_resource_attributes) + end + end + end +end diff --git a/resources/aws/test/opentelemetry/resource/detector/aws_test.rb b/resources/aws/test/opentelemetry/resource/detector/aws_test.rb new file mode 100644 index 0000000000..549e55a436 --- /dev/null +++ b/resources/aws/test/opentelemetry/resource/detector/aws_test.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'test_helper' + +describe OpenTelemetry::Resource::Detector::AWS do + let(:detector) { OpenTelemetry::Resource::Detector::AWS } + + describe '.detect' do + before do + WebMock.disable_net_connect! + # Ensure we stub any potential requests to EC2 metadata service + # Simulate failed token request + stub_request(:put, 'http://169.254.169.254/latest/api/token') + .to_timeout + + # Simulate failed identity document request + stub_request(:get, 'http://169.254.169.254/latest/dynamic/instance-identity/document') + .with(headers: { 'Accept' => '*/*' }) + .to_return(status: 404, body: 'Not Found') + end + + after do + WebMock.allow_net_connect! + end + + let(:detected_resource) { detector.detect } + let(:detected_resource_attributes) { detected_resource.attribute_enumerator.to_h } + let(:expected_resource_attributes) { {} } + + it 'returns an empty resource' do + _(detected_resource).must_be_instance_of(OpenTelemetry::SDK::Resources::Resource) + _(detected_resource_attributes).must_equal(expected_resource_attributes) + end + end +end diff --git a/resources/aws/test/test_helper.rb b/resources/aws/test/test_helper.rb new file mode 100644 index 0000000000..7d5b4d5bdd --- /dev/null +++ b/resources/aws/test/test_helper.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require 'simplecov' +require 'bundler/setup' +Bundler.require(:default, :development, :test) + +require 'opentelemetry-resource-detector-aws' +require 'minitest/autorun' +require 'webmock/minitest' + +OpenTelemetry.logger = Logger.new($stderr, level: ENV.fetch('OTEL_LOG_LEVEL', 'fatal').to_sym) From 769f11790e5cebb61cb5f294e4c1302eac5de664 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 10:33:37 -0700 Subject: [PATCH 4/5] chore: bump github/codeql-action from 3.28.13 to 3.28.15 (#1472) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.13 to 3.28.15. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/1b549b9259bda1cb5ddde3b41741a82a2d15a841...45775bd8235c68ba998cffa5171334d58593da47) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.28.15 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ossf-scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml index 23e0ffbd49..5223e7081e 100644 --- a/.github/workflows/ossf-scorecard.yml +++ b/.github/workflows/ossf-scorecard.yml @@ -43,6 +43,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: sarif_file: results.sarif From 6733685e997f819dd37d9622df9bedc082f218f5 Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Wed, 9 Apr 2025 10:45:40 -0700 Subject: [PATCH 5/5] chore: update rubocop-performance to 1.25.0 --- .instrumentation_generator/templates/Gemfile | 2 +- Gemfile | 2 +- helpers/mysql/Gemfile | 2 +- helpers/sql-obfuscation/Gemfile | 2 +- helpers/sql/Gemfile | 2 +- instrumentation/action_mailer/Gemfile | 2 +- instrumentation/action_pack/Gemfile | 2 +- instrumentation/action_view/Gemfile | 2 +- instrumentation/active_job/Gemfile | 2 +- instrumentation/active_model_serializers/Gemfile | 2 +- instrumentation/active_record/Gemfile | 2 +- instrumentation/active_storage/Gemfile | 2 +- instrumentation/active_support/Gemfile | 2 +- instrumentation/all/Gemfile | 4 ++-- instrumentation/aws_lambda/Gemfile | 2 +- instrumentation/aws_sdk/Gemfile | 2 +- instrumentation/base/Gemfile | 2 +- instrumentation/bunny/Gemfile | 2 +- instrumentation/concurrent_ruby/Gemfile | 2 +- instrumentation/dalli/Gemfile | 2 +- instrumentation/delayed_job/Gemfile | 2 +- instrumentation/ethon/Gemfile | 2 +- instrumentation/excon/Gemfile | 2 +- instrumentation/faraday/Gemfile | 2 +- instrumentation/grape/Gemfile | 2 +- instrumentation/graphql/Gemfile | 2 +- instrumentation/grpc/Gemfile | 2 +- instrumentation/gruf/Gemfile | 2 +- instrumentation/http/Gemfile | 2 +- instrumentation/http_client/Gemfile | 2 +- instrumentation/httpx/Gemfile | 2 +- instrumentation/koala/Gemfile | 2 +- instrumentation/lmdb/Gemfile | 2 +- instrumentation/mongo/Gemfile | 2 +- instrumentation/mysql2/Gemfile | 2 +- instrumentation/net_http/Gemfile | 2 +- instrumentation/pg/Gemfile | 2 +- instrumentation/que/Gemfile | 2 +- instrumentation/racecar/Gemfile | 2 +- instrumentation/rack/Gemfile | 2 +- instrumentation/rails/Gemfile | 2 +- instrumentation/rake/Gemfile | 2 +- instrumentation/rdkafka/Gemfile | 2 +- instrumentation/redis/Gemfile | 2 +- instrumentation/resque/Gemfile | 2 +- instrumentation/restclient/Gemfile | 2 +- instrumentation/rspec/Gemfile | 2 +- instrumentation/ruby_kafka/Gemfile | 2 +- instrumentation/sidekiq/Gemfile | 2 +- instrumentation/sinatra/Gemfile | 2 +- instrumentation/trilogy/Gemfile | 2 +- processor/baggage/Gemfile | 2 +- propagator/ottrace/Gemfile | 2 +- propagator/vitess/Gemfile | 2 +- propagator/xray/Gemfile | 2 +- resources/aws/Gemfile | 2 +- resources/azure/Gemfile | 2 +- resources/container/Gemfile | 2 +- resources/google_cloud_platform/Gemfile | 2 +- 59 files changed, 60 insertions(+), 60 deletions(-) diff --git a/.instrumentation_generator/templates/Gemfile b/.instrumentation_generator/templates/Gemfile index 3723fca98e..07384cd70a 100644 --- a/.instrumentation_generator/templates/Gemfile +++ b/.instrumentation_generator/templates/Gemfile @@ -21,7 +21,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.17.1' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/Gemfile b/Gemfile index 18df87d61b..59ef31b9b7 100644 --- a/Gemfile +++ b/Gemfile @@ -8,4 +8,4 @@ source 'https://rubygems.org' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' -gem 'rubocop-performance', '~> 1.24.0' +gem 'rubocop-performance', '~> 1.25.0' diff --git a/helpers/mysql/Gemfile b/helpers/mysql/Gemfile index 3d1086e0fb..0a128e1d71 100644 --- a/helpers/mysql/Gemfile +++ b/helpers/mysql/Gemfile @@ -14,7 +14,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'yard-doctest', '~> 0.1.6' diff --git a/helpers/sql-obfuscation/Gemfile b/helpers/sql-obfuscation/Gemfile index 3d1086e0fb..0a128e1d71 100644 --- a/helpers/sql-obfuscation/Gemfile +++ b/helpers/sql-obfuscation/Gemfile @@ -14,7 +14,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'yard-doctest', '~> 0.1.6' diff --git a/helpers/sql/Gemfile b/helpers/sql/Gemfile index d9711191f1..954dd1cb51 100644 --- a/helpers/sql/Gemfile +++ b/helpers/sql/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/instrumentation/action_mailer/Gemfile b/instrumentation/action_mailer/Gemfile index 1433110629..17e31b770f 100644 --- a/instrumentation/action_mailer/Gemfile +++ b/instrumentation/action_mailer/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/action_pack/Gemfile b/instrumentation/action_pack/Gemfile index cc0e435d99..849c34074d 100644 --- a/instrumentation/action_pack/Gemfile +++ b/instrumentation/action_pack/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/action_view/Gemfile b/instrumentation/action_view/Gemfile index afbb2d8e11..c5a673002d 100644 --- a/instrumentation/action_view/Gemfile +++ b/instrumentation/action_view/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/active_job/Gemfile b/instrumentation/active_job/Gemfile index a2eceb969b..e1c8b9144c 100644 --- a/instrumentation/active_job/Gemfile +++ b/instrumentation/active_job/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/active_model_serializers/Gemfile b/instrumentation/active_model_serializers/Gemfile index eaa2d79162..8daf1bc2a5 100644 --- a/instrumentation/active_model_serializers/Gemfile +++ b/instrumentation/active_model_serializers/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/active_record/Gemfile b/instrumentation/active_record/Gemfile index a2eceb969b..e1c8b9144c 100644 --- a/instrumentation/active_record/Gemfile +++ b/instrumentation/active_record/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/active_storage/Gemfile b/instrumentation/active_storage/Gemfile index afbb2d8e11..c5a673002d 100644 --- a/instrumentation/active_storage/Gemfile +++ b/instrumentation/active_storage/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/active_support/Gemfile b/instrumentation/active_support/Gemfile index 21723b363c..4affa4975b 100644 --- a/instrumentation/active_support/Gemfile +++ b/instrumentation/active_support/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/all/Gemfile b/instrumentation/all/Gemfile index 4b2ef1e396..4eb9273419 100644 --- a/instrumentation/all/Gemfile +++ b/instrumentation/all/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'active_model_serializers' @@ -29,7 +29,7 @@ group :test do .sort .each { |dir| gem "opentelemetry-helpers-#{dir}", path: "../../helpers/#{dir}" } - excluded_instrumentations = %w[. .. all grpc] + excluded_instrumentations = %w[. .. all] Dir.entries('../') .select { |entry| File.directory?(File.join('../', entry)) } .reject { |entry| excluded_instrumentations.include?(entry) } diff --git a/instrumentation/aws_lambda/Gemfile b/instrumentation/aws_lambda/Gemfile index a30cb0e121..52afb84fab 100644 --- a/instrumentation/aws_lambda/Gemfile +++ b/instrumentation/aws_lambda/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/aws_sdk/Gemfile b/instrumentation/aws_sdk/Gemfile index a30cb0e121..52afb84fab 100644 --- a/instrumentation/aws_sdk/Gemfile +++ b/instrumentation/aws_sdk/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/base/Gemfile b/instrumentation/base/Gemfile index 7974f37165..a6c535a4e4 100644 --- a/instrumentation/base/Gemfile +++ b/instrumentation/base/Gemfile @@ -14,7 +14,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/instrumentation/bunny/Gemfile b/instrumentation/bunny/Gemfile index 8f27a80732..024b3cace5 100644 --- a/instrumentation/bunny/Gemfile +++ b/instrumentation/bunny/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/concurrent_ruby/Gemfile b/instrumentation/concurrent_ruby/Gemfile index 8f27a80732..024b3cace5 100644 --- a/instrumentation/concurrent_ruby/Gemfile +++ b/instrumentation/concurrent_ruby/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/dalli/Gemfile b/instrumentation/dalli/Gemfile index 8f27a80732..024b3cace5 100644 --- a/instrumentation/dalli/Gemfile +++ b/instrumentation/dalli/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/delayed_job/Gemfile b/instrumentation/delayed_job/Gemfile index 648e7a08f1..0b3e70032c 100644 --- a/instrumentation/delayed_job/Gemfile +++ b/instrumentation/delayed_job/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/ethon/Gemfile b/instrumentation/ethon/Gemfile index 8f27a80732..024b3cace5 100644 --- a/instrumentation/ethon/Gemfile +++ b/instrumentation/ethon/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/excon/Gemfile b/instrumentation/excon/Gemfile index 33388452b1..22650e9e2b 100644 --- a/instrumentation/excon/Gemfile +++ b/instrumentation/excon/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/faraday/Gemfile b/instrumentation/faraday/Gemfile index 33388452b1..22650e9e2b 100644 --- a/instrumentation/faraday/Gemfile +++ b/instrumentation/faraday/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/grape/Gemfile b/instrumentation/grape/Gemfile index 95a1c92820..4890a90de4 100644 --- a/instrumentation/grape/Gemfile +++ b/instrumentation/grape/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/graphql/Gemfile b/instrumentation/graphql/Gemfile index a2eceb969b..e1c8b9144c 100644 --- a/instrumentation/graphql/Gemfile +++ b/instrumentation/graphql/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/grpc/Gemfile b/instrumentation/grpc/Gemfile index 529d14941a..94776e2679 100644 --- a/instrumentation/grpc/Gemfile +++ b/instrumentation/grpc/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.4' gem 'rake', '~> 13.2' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/gruf/Gemfile b/instrumentation/gruf/Gemfile index 82410bca6d..b3989adade 100644 --- a/instrumentation/gruf/Gemfile +++ b/instrumentation/gruf/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.0' gem 'rake', '~> 12.3.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/http/Gemfile b/instrumentation/http/Gemfile index a07a1265b1..855159e2c3 100644 --- a/instrumentation/http/Gemfile +++ b/instrumentation/http/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/http_client/Gemfile b/instrumentation/http_client/Gemfile index a2eceb969b..e1c8b9144c 100644 --- a/instrumentation/http_client/Gemfile +++ b/instrumentation/http_client/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/httpx/Gemfile b/instrumentation/httpx/Gemfile index a07a1265b1..855159e2c3 100644 --- a/instrumentation/httpx/Gemfile +++ b/instrumentation/httpx/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/koala/Gemfile b/instrumentation/koala/Gemfile index a07a1265b1..855159e2c3 100644 --- a/instrumentation/koala/Gemfile +++ b/instrumentation/koala/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/lmdb/Gemfile b/instrumentation/lmdb/Gemfile index a2eceb969b..e1c8b9144c 100644 --- a/instrumentation/lmdb/Gemfile +++ b/instrumentation/lmdb/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/mongo/Gemfile b/instrumentation/mongo/Gemfile index 0378df5f77..51f5bdefda 100644 --- a/instrumentation/mongo/Gemfile +++ b/instrumentation/mongo/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/mysql2/Gemfile b/instrumentation/mysql2/Gemfile index c9fadb8134..13bf10d4a2 100644 --- a/instrumentation/mysql2/Gemfile +++ b/instrumentation/mysql2/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' diff --git a/instrumentation/net_http/Gemfile b/instrumentation/net_http/Gemfile index 31b475bb19..547260729b 100644 --- a/instrumentation/net_http/Gemfile +++ b/instrumentation/net_http/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0.1' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/pg/Gemfile b/instrumentation/pg/Gemfile index 912305ffee..7f9d60bce9 100644 --- a/instrumentation/pg/Gemfile +++ b/instrumentation/pg/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'activerecord', '>= 7.0.0' diff --git a/instrumentation/que/Gemfile b/instrumentation/que/Gemfile index 2c835fa4c6..cc17c8a782 100644 --- a/instrumentation/que/Gemfile +++ b/instrumentation/que/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'pg' diff --git a/instrumentation/racecar/Gemfile b/instrumentation/racecar/Gemfile index 57d90e370f..332ad8965d 100644 --- a/instrumentation/racecar/Gemfile +++ b/instrumentation/racecar/Gemfile @@ -24,7 +24,7 @@ group :test do gem 'rake', '~> 13.0' gem 'rspec-mocks' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/rack/Gemfile b/instrumentation/rack/Gemfile index c6751136e2..5190037e46 100644 --- a/instrumentation/rack/Gemfile +++ b/instrumentation/rack/Gemfile @@ -17,7 +17,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/rails/Gemfile b/instrumentation/rails/Gemfile index ef771300ff..9d027b2293 100644 --- a/instrumentation/rails/Gemfile +++ b/instrumentation/rails/Gemfile @@ -17,7 +17,7 @@ group :test do gem 'rack-test', '~> 2.1.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/rake/Gemfile b/instrumentation/rake/Gemfile index b7ae0066e5..e483cf498b 100644 --- a/instrumentation/rake/Gemfile +++ b/instrumentation/rake/Gemfile @@ -19,7 +19,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.0' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/rdkafka/Gemfile b/instrumentation/rdkafka/Gemfile index e152bbd50f..34a35911da 100644 --- a/instrumentation/rdkafka/Gemfile +++ b/instrumentation/rdkafka/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/redis/Gemfile b/instrumentation/redis/Gemfile index 8f27a80732..024b3cace5 100644 --- a/instrumentation/redis/Gemfile +++ b/instrumentation/redis/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'opentelemetry-instrumentation-base', path: '../base' diff --git a/instrumentation/resque/Gemfile b/instrumentation/resque/Gemfile index 0a1b56028d..0806fb2f8e 100644 --- a/instrumentation/resque/Gemfile +++ b/instrumentation/resque/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/restclient/Gemfile b/instrumentation/restclient/Gemfile index 33388452b1..22650e9e2b 100644 --- a/instrumentation/restclient/Gemfile +++ b/instrumentation/restclient/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/rspec/Gemfile b/instrumentation/rspec/Gemfile index be2d93adde..025749ae74 100644 --- a/instrumentation/rspec/Gemfile +++ b/instrumentation/rspec/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/ruby_kafka/Gemfile b/instrumentation/ruby_kafka/Gemfile index 07ac19d13b..6fe118b615 100644 --- a/instrumentation/ruby_kafka/Gemfile +++ b/instrumentation/ruby_kafka/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'rspec-mocks' diff --git a/instrumentation/sidekiq/Gemfile b/instrumentation/sidekiq/Gemfile index db0968f4c8..31c6e3d160 100644 --- a/instrumentation/sidekiq/Gemfile +++ b/instrumentation/sidekiq/Gemfile @@ -15,7 +15,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'rails', '>= 7.0' diff --git a/instrumentation/sinatra/Gemfile b/instrumentation/sinatra/Gemfile index 5c2bbcf78b..5d7b0d01e1 100644 --- a/instrumentation/sinatra/Gemfile +++ b/instrumentation/sinatra/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rack-test', '~> 2.1' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/instrumentation/trilogy/Gemfile b/instrumentation/trilogy/Gemfile index 852411dbbb..66156ba280 100644 --- a/instrumentation/trilogy/Gemfile +++ b/instrumentation/trilogy/Gemfile @@ -16,7 +16,7 @@ group :test do gem 'opentelemetry-test-helpers', '~> 0.3' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' gem 'rspec-mocks' diff --git a/processor/baggage/Gemfile b/processor/baggage/Gemfile index d0f1fbee53..c664e83d7b 100644 --- a/processor/baggage/Gemfile +++ b/processor/baggage/Gemfile @@ -11,7 +11,7 @@ group :test do gem 'opentelemetry-sdk', '~> 1.1' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/propagator/ottrace/Gemfile b/propagator/ottrace/Gemfile index 9708a23451..ca706b5190 100644 --- a/propagator/ottrace/Gemfile +++ b/propagator/ottrace/Gemfile @@ -10,7 +10,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/propagator/vitess/Gemfile b/propagator/vitess/Gemfile index e7c1bde87c..7ab9dc48e7 100644 --- a/propagator/vitess/Gemfile +++ b/propagator/vitess/Gemfile @@ -10,7 +10,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/propagator/xray/Gemfile b/propagator/xray/Gemfile index 5516c83446..2dd0233e96 100644 --- a/propagator/xray/Gemfile +++ b/propagator/xray/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' if RUBY_VERSION >= '3.4' diff --git a/resources/aws/Gemfile b/resources/aws/Gemfile index b55c4be964..184fc73235 100644 --- a/resources/aws/Gemfile +++ b/resources/aws/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.2' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/resources/azure/Gemfile b/resources/azure/Gemfile index cb9965eb44..8fe1e19416 100644 --- a/resources/azure/Gemfile +++ b/resources/azure/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9' diff --git a/resources/container/Gemfile b/resources/container/Gemfile index 8bf2eb907b..aa84870233 100644 --- a/resources/container/Gemfile +++ b/resources/container/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'yard', '~> 0.9' diff --git a/resources/google_cloud_platform/Gemfile b/resources/google_cloud_platform/Gemfile index cb9965eb44..8fe1e19416 100644 --- a/resources/google_cloud_platform/Gemfile +++ b/resources/google_cloud_platform/Gemfile @@ -13,7 +13,7 @@ group :test do gem 'minitest', '~> 5.0' gem 'rake', '~> 13.0' gem 'rubocop', '~> 1.75.1' - gem 'rubocop-performance', '~> 1.24.0' + gem 'rubocop-performance', '~> 1.25.0' gem 'simplecov', '~> 0.22.0' gem 'webmock', '~> 3.24' gem 'yard', '~> 0.9'