Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NO-TICKET] Bootstrap Ruby 3.4.0-preview1 image for early testing #3711

Merged
merged 1 commit into from
Jun 13, 2024

Conversation

ivoanjo
Copy link
Member

@ivoanjo ivoanjo commented Jun 12, 2024

What does this PR do?

This PR does the minimal amount of work to enable us to start tackling Ruby 3.4 testing.

There's a number of tests failing just in the core test suite:

4328 examples, 15 failures, 48 pending

Failed examples:

rspec ./spec/datadog/core/utils/safe_dup_spec.rb:49 # Datadog::Core::Utils::SafeDup String .frozen_dup when given a string returns a frozen duplicate
rspec ./spec/datadog/core/utils/safe_dup_spec.rb:20 # Datadog::Core::Utils::SafeDup String .frozen_or_dup when given a string returns a non-frozen dupliacte
rspec ./spec/datadog/core/error_spec.rb:87 # Datadog::Core::Error.build_from with an exception with a cause reports nested errors
rspec ./spec/datadog/core/telemetry/event_spec.rb:31 # Datadog::Core::Telemetry::Event AppStarted is expected to match {:products=>{:appsec=>{:enabled=>false}, :profiler=>{:enabled=>false, :error=>#<RSpec::Mocks::ArgumentMatchers::AnyArgMatcher:0x0000705250507db0>}}, :configuration=>[{:name=>"DD_AGENT_HOST", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"1.2.3.4"}, {:name=>"DD_AGENT_TRANSPORT", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"TCP"}, {:name=>"DD_TRACE_SAMPLE_RATE", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"0.5"}, {:name=>"DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"DD_TRACE_PEER_SERVICE_MAPPING", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"foo:bar"}, {:name=>"logger.level", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>0}, {:name=>"profiling.advanced.code_provenance_enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"profiling.advanced.endpoint.collection.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"profiling.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"runtime_metrics.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.analytics.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.propagation_style_extract", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"[\"datadog\", \"tracecontext\"]"}, {:name=>"tracing.propagation_style_inject", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"[\"datadog\", \"tracecontext\"]"}, {:name=>"tracing.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.log_injection", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.partial_flush.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.partial_flush.min_spans_threshold", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>500}, {:name=>"tracing.report_hostname", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.sampling.rate_limit", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>100}, {:name=>"tracing.auto_instrument.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.writer_options.buffer_size", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>123}, {:name=>"tracing.writer_options.flush_interval", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>456}, {:name=>"tracing.opentelemetry.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"logger.instance", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"MyLogger"}, {:name=>"appsec.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"appsec.sca_enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}], :install_signature=>{:install_id=>"id", :install_time=>"time", :install_type=>"type"}}
rspec ./spec/datadog/tracing/remote_spec.rb:33 # Datadog::Tracing::Remote#process_config with an empty content sets errored apply state
rspec ./spec/datadog/release_gem_spec.rb:8 # gem release process datadog.gemspec files includes all important files
rspec ./spec/datadog/core/environment/execution_spec.rb:69 # Datadog::Core::Environment::Execution.development? when not in an RSpec test when in a Pry session returns true
rspec ./spec/datadog/tracing/trace_segment_spec.rb:207 # Datadog::Tracing::TraceSegment::new given tags :origin is expected to have attributes {:origin => (be a copy of "synthetics")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:230 # Datadog::Tracing::TraceSegment::new given tags :resource is expected to have attributes {:resource => (be a copy of "generate_report")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:200 # Datadog::Tracing::TraceSegment::new given tags :name is expected to have attributes {:name => (be a copy of "job.work")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:276 # Datadog::Tracing::TraceSegment::new given tags :service is expected to have attributes {:service => (be a copy of "job-worker")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:150 # Datadog::Tracing::TraceSegment::new given arguments :service is expected to have attributes {:service => (be a copy of "job-worker")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:87 # Datadog::Tracing::TraceSegment::new given arguments :name is expected to have attributes {:name => (be a copy of "job.work")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:94 # Datadog::Tracing::TraceSegment::new given arguments :origin is expected to have attributes {:origin => (be a copy of "synthetics")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:115 # Datadog::Tracing::TraceSegment::new given arguments :resource is expected to have attributes {:resource => (be a copy of "generate_report")}

Motivation:

Start working on supporting Ruby 3.4.

Additional Notes:

We'll need to later do the full onboarding: add appraisals, integration apps, write up CI, etc (e.g. see #2863 as inspiration).

How to test the change?

This change only affects testing. You can use
docker-compose run --rm tracer-3.4 /bin/bash --init-file .config to start experimenting with Ruby 3.4.

**What does this PR do?**

This PR does the minimal amount of work to enable us to start tackling
Ruby 3.4 testing.

There's a number of tests failing just in the core test suite:

```
4328 examples, 15 failures, 48 pending

Failed examples:

rspec ./spec/datadog/core/utils/safe_dup_spec.rb:49 # Datadog::Core::Utils::SafeDup String .frozen_dup when given a string returns a frozen duplicate
rspec ./spec/datadog/core/utils/safe_dup_spec.rb:20 # Datadog::Core::Utils::SafeDup String .frozen_or_dup when given a string returns a non-frozen dupliacte
rspec ./spec/datadog/core/error_spec.rb:87 # Datadog::Core::Error.build_from with an exception with a cause reports nested errors
rspec ./spec/datadog/core/telemetry/event_spec.rb:31 # Datadog::Core::Telemetry::Event AppStarted is expected to match {:products=>{:appsec=>{:enabled=>false}, :profiler=>{:enabled=>false, :error=>#<RSpec::Mocks::ArgumentMatchers::AnyArgMatcher:0x0000705250507db0>}}, :configuration=>[{:name=>"DD_AGENT_HOST", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"1.2.3.4"}, {:name=>"DD_AGENT_TRANSPORT", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"TCP"}, {:name=>"DD_TRACE_SAMPLE_RATE", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"0.5"}, {:name=>"DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"DD_TRACE_PEER_SERVICE_MAPPING", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"foo:bar"}, {:name=>"logger.level", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>0}, {:name=>"profiling.advanced.code_provenance_enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"profiling.advanced.endpoint.collection.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"profiling.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"runtime_metrics.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.analytics.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.propagation_style_extract", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"[\"datadog\", \"tracecontext\"]"}, {:name=>"tracing.propagation_style_inject", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"[\"datadog\", \"tracecontext\"]"}, {:name=>"tracing.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.log_injection", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>true}, {:name=>"tracing.partial_flush.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.partial_flush.min_spans_threshold", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>500}, {:name=>"tracing.report_hostname", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.sampling.rate_limit", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>100}, {:name=>"tracing.auto_instrument.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"tracing.writer_options.buffer_size", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>123}, {:name=>"tracing.writer_options.flush_interval", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>456}, {:name=>"tracing.opentelemetry.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"logger.instance", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>"MyLogger"}, {:name=>"appsec.enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}, {:name=>"appsec.sca_enabled", :origin=>"code", :seq_id=>#<Double "seq_id">, :value=>false}], :install_signature=>{:install_id=>"id", :install_time=>"time", :install_type=>"type"}}
rspec ./spec/datadog/tracing/remote_spec.rb:33 # Datadog::Tracing::Remote#process_config with an empty content sets errored apply state
rspec ./spec/datadog/release_gem_spec.rb:8 # gem release process datadog.gemspec files includes all important files
rspec ./spec/datadog/core/environment/execution_spec.rb:69 # Datadog::Core::Environment::Execution.development? when not in an RSpec test when in a Pry session returns true
rspec ./spec/datadog/tracing/trace_segment_spec.rb:207 # Datadog::Tracing::TraceSegment::new given tags :origin is expected to have attributes {:origin => (be a copy of "synthetics")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:230 # Datadog::Tracing::TraceSegment::new given tags :resource is expected to have attributes {:resource => (be a copy of "generate_report")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:200 # Datadog::Tracing::TraceSegment::new given tags :name is expected to have attributes {:name => (be a copy of "job.work")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:276 # Datadog::Tracing::TraceSegment::new given tags :service is expected to have attributes {:service => (be a copy of "job-worker")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:150 # Datadog::Tracing::TraceSegment::new given arguments :service is expected to have attributes {:service => (be a copy of "job-worker")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:87 # Datadog::Tracing::TraceSegment::new given arguments :name is expected to have attributes {:name => (be a copy of "job.work")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:94 # Datadog::Tracing::TraceSegment::new given arguments :origin is expected to have attributes {:origin => (be a copy of "synthetics")}
rspec ./spec/datadog/tracing/trace_segment_spec.rb:115 # Datadog::Tracing::TraceSegment::new given arguments :resource is expected to have attributes {:resource => (be a copy of "generate_report")}
```

**Motivation:**

Start working on supporting Ruby 3.4.

**Additional Notes:**

We'll need to later do the full onboarding: add appraisals,
integration apps, write up CI, etc (e.g. see #2863 as inspiration).

**How to test the change?**

This change only affects testing. You can use
`docker-compose run --rm tracer-3.4 /bin/bash --init-file .config` to
start experimenting with Ruby 3.4.
@ivoanjo ivoanjo requested a review from a team as a code owner June 12, 2024 15:54
@ivoanjo
Copy link
Member Author

ivoanjo commented Jun 12, 2024

Note: I'll need to publish the images (https://github.com/DataDog/dd-trace-rb/blob/master/.circleci/images/primary/README.md#publishing-updates-to-images) before you can run with 3.4 in docker -- I built the image locally for my own testing.

@ivoanjo
Copy link
Member Author

ivoanjo commented Jun 12, 2024

Triggered github action to build Ruby 3.4 image: https://github.com/DataDog/dd-trace-rb/actions/runs/9485896901

@ivoanjo ivoanjo merged commit 5a95611 into master Jun 13, 2024
179 checks passed
@ivoanjo ivoanjo deleted the ivoanjo/bootstrap-ruby3.4-testing branch June 13, 2024 09:25
@github-actions github-actions bot added this to the 2.2.0 milestone Jun 13, 2024
&& mv /tmp/docker/* /usr/bin \
&& rm -rf /tmp/docker /tmp/docker.tgz \
&& which docker \
&& (docker version || true)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why || true for docker version ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question... We've been copy-pasting this all the way from #434 . It's possible it hasn't been needed for a long time...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants