package pstest import "time" // PubSub Options type PubSubOption func(*pubsuboptions) type pubsuboptions struct { // disableTeardown (maybe?) port int projectID string } func makePubSubOptions(opts ...PubSubOption) *pubsuboptions { options := &pubsuboptions{} for _, o := range opts { o(options) } return options } // By default, pstest will connect the server to a random free port. // Ensure the port set here isn't already being used. func WithFixedPort(port int) PubSubOption { return func(o *pubsuboptions) { o.port = port } } // Make sure that if you use PubSub struct methods, topics and subscriptions created match this project ID. func WithProjectID(id string) PubSubOption { return func(o *pubsuboptions) { o.projectID = id } } // Subscription Options type SubOption func(*suboptions) type suboptions struct { filter string ackDeadline time.Duration expirationPolicy time.Duration } func makeSubOptions(opts ...SubOption) *suboptions { options := &suboptions{} for _, o := range opts { o(options) } return options } func WithFilter(filter string) SubOption { return func(o *suboptions) { o.filter = filter } } func WithAckDeadline(ackDeadline time.Duration) SubOption { return func(o *suboptions) { o.ackDeadline = ackDeadline } } func WithExpirationPolicy(expirationPolicy time.Duration) SubOption { return func(o *suboptions) { o.expirationPolicy = expirationPolicy } }