Sha256: 32ae643b478b98af16848296e25e33ca801a7a46ece7b3f928d94cfff0beff72

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require "pact/ffi/verifier"
require "sbmt/pact/native/logger"

module Sbmt
  module Pact
    module Provider
      class GrpcVerifier < BaseVerifier
        PROVIDER_TRANSPORT_TYPE = "grpc"
        INTERACTION_FILTER_REGEX = "^grpc:.+"

        def initialize(pact_config)
          super

          raise ArgumentError, "pact_config must be an instance of Sbmt::Pact::Provider::PactConfig::Grpc" unless pact_config.is_a?(::Sbmt::Pact::Provider::PactConfig::Grpc)
          @grpc_server = GrufServer.new(host: "127.0.0.1:#{@pact_config.grpc_port}", services: @pact_config.grpc_services)
        end

        private

        def add_provider_transport(pact_handle)
          PactFfi::Verifier.add_provider_transport(pact_handle, PROVIDER_TRANSPORT_TYPE, @pact_config.grpc_port, "", "")
        end

        def set_filter_info(pact_handle)
          PactFfi::Verifier.set_filter_info(pact_handle, INTERACTION_FILTER_REGEX, nil, 0)
        end

        def start_servers!
          super
          @grpc_server.start
        end

        def stop_servers
          super
          @grpc_server.stop
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sbmt-pact-0.12.2 lib/sbmt/pact/provider/grpc_verifier.rb
sbmt-pact-0.12.1 lib/sbmt/pact/provider/grpc_verifier.rb
sbmt-pact-0.12.0 lib/sbmt/pact/provider/grpc_verifier.rb