Sha256: 42c4ea5153fce9835c36624eabd53bf8db0ce0b87ee90c07596908b42e40ab8e

Contents?: true

Size: 1.3 KB

Versions: 9

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module OpenTracing
  module Instrumentation
    module Mongo
      # OperationNameBuilder for Mongo::TraceSubscriber
      class OperationNameBuilder
        DEFAULT_OPERATION_NAME_PATTERN = \
          'mongo(collection=%<database>s.%<collection>s, command=%<command>s)'

        # @param operation_name_pattern [String]
        def initialize(
          operation_name_pattern: DEFAULT_OPERATION_NAME_PATTERN
        )
          @operation_name_pattern = operation_name_pattern
        end

        # @param event [Mongo::Monitoring::Event::CommandStarted]
        # @return [String] formated command name
        def build_operation_name(event)
          format_args = build_format_args(event)
          format(operation_name_pattern, **format_args)
        end

        private

        attr_reader :operation_name_pattern

        COLLECTION = 'collection'

        def build_format_args(event)
          {
            database: event.database_name,
            collection: fetch_collection_name(event),
            command: event.command_name,
          }
        end

        def fetch_collection_name(event)
          # On some command collection name into 'collection' field,
          event.command[COLLECTION] || event.command[event.command_name]
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
opentracing-instrumentation-0.2.1 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.2.0 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.18 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.17 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.16 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.15 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.14 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.13 lib/opentracing/instrumentation/mongo/operation_name_builder.rb
opentracing-instrumentation-0.1.11 lib/opentracing/instrumentation/mongo/operation_name_builder.rb