func NewProvider(platform boshplatform.Platform, logger boshlog.Logger) ClientProvider { httpClient := http.DefaultClient shortHTTPClient := boshhttp.NewRetryClient( httpClient, shortRetryStrategyAttempts, retryDelay, logger, ) longHTTPClient := NewMonitRetryClient( httpClient, longRetryStrategyAttempts, shortRetryStrategyAttempts, retryDelay, logger, ) return clientProvider{ platform: platform, logger: logger, shortHTTPClient: shortHTTPClient, longHTTPClient: longHTTPClient, } }
func (ms httpMetadataService) doGet(url string) (*http.Response, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } for key, value := range ms.metadataHeaders { req.Header.Add(key, value) } client := boshhttp.NewRetryClient( &http.Client{}, 10, ms.retryDelay, ms.logger, ) return client.Do(req) }
func NewClient(config davconf.Config, httpClient boshhttp.Client, logger boshlog.Logger) (c Client) { if config.RetryAttempts == 0 { config.RetryAttempts = 3 } // @todo should a logger now be passed in to this client? duration := time.Duration(0) retryClient := boshhttp.NewRetryClient( httpClient, config.RetryAttempts, duration, logger, ) return client{ config: config, httpClient: retryClient, } }
. "github.com/cloudfoundry/bosh-agent/jobsupervisor/monit" ) var _ = Describe("clientProvider", func() { It("Get", func() { logger := boshlog.NewLogger(boshlog.LevelNone) platform := fakeplatform.NewFakePlatform() platform.GetMonitCredentialsUsername = "******" platform.GetMonitCredentialsPassword = "******" client, err := NewProvider(platform, logger).Get() Expect(err).ToNot(HaveOccurred()) httpClient := http.DefaultClient shortHTTPClient := boshhttp.NewRetryClient(httpClient, 20, 1*time.Second, logger) longHTTPClient := NewMonitRetryClient(httpClient, 300, 20, 1*time.Second, logger) expectedClient := NewHTTPClient( "127.0.0.1:2822", "fake-user", "fake-pass", shortHTTPClient, longHTTPClient, logger, ) Expect(client).To(Equal(expectedClient)) }) })