Documentation

Overview

    Package recorder records & replay yarpc requests on the client side.

    For recording, the client must be connected and able to issue requests to a remote service. Every request and its response is recorded into a YAML file, under the directory "testdata/recordings" relative to the test directory.

    During replay, the client doesn't need to be connected, for any recorded request Recorder will return the recorded response. Any new request (ie: not pre-recorded) will abort the test.

    NewRecorder() returns a Recorder, in the mode specified by the flag `--recorder=replay|append|overwrite`. `replay` is the default.

    The new Recorder instance is a yarpc outbound middleware. It takes a `testing.T` or compatible as argument.

    Example:

    func MyTest(t *testing.T) {
      dispatcher := yarpc.NewDispatcher(yarpc.Config{
      	Name: "...",
      	Outbounds: transport.Outbounds{
      		...
      	},
        OutboundMiddleware: yarpc.OutboundMiddleware {
      	  Unary: recorder.NewRecorder(t),
        },
      })
    }
    

    Running the tests in append mode:

    $ go test -v ./... --recorder=append
    

    The recorded messages will be stored in `./testdata/recordings/*.yaml`.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type Mode

    type Mode int

      Mode is the recording mode of the recorder.

      const (
      
      	// Replay replays stored request/response pairs, any non pre-recorded
      	// requests will be rejected.
      	Replay Mode
      
      	// Overwrite will store all request/response pairs, overwriting existing
      	// records.
      	Overwrite
      
      	// Append will store all new request/response pairs and replay from
      	// existing record.
      	Append
      )

      type Option

      type Option func(*config)

        Option is the type used for the functional options pattern.

        func RecordMode

        func RecordMode(mode Mode) Option

          RecordMode sets the mode.

          func RecordsPath

          func RecordsPath(path string) Option

            RecordsPath sets the records directory path.

            type Recorder

            type Recorder struct {
            	// contains filtered or unexported fields
            }

              Recorder records & replay yarpc requests on the client side.

              For recording, the client must be connected and able to issue requests to a remote service. Every request and its response is recorded into a YAML file, under the directory "testdata/recordings".

              During replay, the client doesn't need to be connected, for any recorded request Recorder will return the recorded response. Any new request will abort the test by calling logger.Fatal().

              func NewRecorder

              func NewRecorder(logger TestingT, opts ...Option) *Recorder

                NewRecorder returns a Recorder in whatever mode specified via the `--recorder` flag.

                The new Recorder instance is a yarpc unary outbound middleware. It takes a logger as argument compatible with `testing.T`.

                See package documentation for more details.

                func (*Recorder) Call

                  Call implements the yarpc transport outbound middleware interface

                  func (*Recorder) SetMode

                  func (r *Recorder) SetMode(newMode Mode)

                    SetMode let you choose enable the different replay and recording modes, overriding the --recorder flag.

                    type TestingT

                    type TestingT interface {
                    	// Logf must behaves similarly to testing.T.Logf.
                    	Logf(format string, args ...interface{})
                    
                    	// Fatal should behaves similarly to testing.T.Fatal. Namely, it must abort
                    	// the current test.
                    	Fatal(args ...interface{})
                    }

                      TestingT is an interface used by the recorder for logging and reporting fatal errors. It is intentionally made to match with testing.T.

                      Source Files