Sha256: 3b974818fd262bf80cf75c7c0a4b56dd7d6d525b7e190f1b053af7223521c678

Contents?: true

Size: 1.88 KB

Versions: 4

Compression:

Stored size: 1.88 KB

Contents

require 'spec_helper'

def skippable?(file)
  !write_command_enabled? && (file.include?('bulkWrite') || file.include?('insert'))
end

def ignore?(test)
  if version = test.ignore_if_server_version_greater_than
    return true if version == "3.0" && find_command_enabled?
  end
  if version = test.ignore_if_server_version_less_than
    return true if version == "3.1" && !find_command_enabled?
  end
  false
end

describe 'Command Monitoring Events' do

  COMMAND_MONITORING_TESTS.each do |file|

    if !skippable?(file)

      spec = Mongo::CommandMonitoring::Spec.new(file)

      spec.tests.each do |test|

        context(test.description) do

          let(:subscriber) do
            Mongo::CommandMonitoring::TestSubscriber.new
          end

          let(:monitoring) do
            authorized_client.instance_variable_get(:@monitoring)
          end

          before do
            authorized_collection.find.delete_many
            authorized_client.subscribe(Mongo::Monitoring::COMMAND, subscriber)
          end

          after do
            monitoring.subscribers[Mongo::Monitoring::COMMAND].delete(subscriber)
            authorized_collection.find.delete_many
          end

          test.expectations.each do |expectation|

            it "generates a #{expectation.event_name} for #{expectation.command_name}", unless: ignore?(test) do
              begin
                test.run(authorized_collection)
                event = subscriber.send(expectation.event_type)[expectation.command_name]
                expect(event).to send(expectation.matcher, expectation)
              rescue Mongo::Error::OperationFailure, Mongo::Error::BulkWriteError
                event = subscriber.send(expectation.event_type)[expectation.command_name]
                expect(event).to send(expectation.matcher, expectation)
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
mongo-2.5.0.beta spec/mongo/command_monitoring_spec.rb
mongo-2.4.3 spec/mongo/command_monitoring_spec.rb
tdiary-5.0.5 vendor/bundle/gems/mongo-2.4.2/spec/mongo/command_monitoring_spec.rb
mongo-2.4.2 spec/mongo/command_monitoring_spec.rb