How to use Timeout method of httpext Package

Best K6 code snippet using httpext.Timeout

request.go

Source:request.go Github

copy

Full Screen

...114 Method: method,115 URL: u.GetURL(),116 Header: make(http.Header),117 },118 Timeout: 60 * time.Second,119 Throw: state.Options.Throw.Bool,120 Redirects: state.Options.MaxRedirects,121 Cookies: make(map[string]*httpext.HTTPRequestCookie),122 Tags: make(map[string]string),123 ResponseCallback: c.responseCallback,124 }125 if state.Options.DiscardResponseBodies.Bool {126 result.ResponseType = httpext.ResponseTypeNone127 } else {128 result.ResponseType = httpext.ResponseTypeText129 }130 formatFormVal := func(v interface{}) string {131 // TODO: handle/warn about unsupported/nested values132 return fmt.Sprintf("%v", v)133 }134 handleObjectBody := func(data map[string]interface{}) error {135 if !requestContainsFile(data) {136 bodyQuery := make(url.Values, len(data))137 for k, v := range data {138 if arr, ok := v.([]interface{}); ok {139 for _, el := range arr {140 bodyQuery.Add(k, formatFormVal(el))141 }142 continue143 }144 bodyQuery.Set(k, formatFormVal(v))145 }146 result.Body = bytes.NewBufferString(bodyQuery.Encode())147 result.Req.Header.Set("Content-Type", "application/x-www-form-urlencoded")148 return nil149 }150 // handling multipart request151 result.Body = &bytes.Buffer{}152 mpw := multipart.NewWriter(result.Body)153 // For parameters of type common.FileData, created with open(file, "b"),154 // we write the file boundary to the body buffer.155 // Otherwise parameters are treated as standard form field.156 for k, v := range data {157 switch ve := v.(type) {158 case FileData:159 // writing our own part to handle receiving160 // different content-type than the default application/octet-stream161 h := make(textproto.MIMEHeader)162 escapedFilename := escapeQuotes(ve.Filename)163 h.Set("Content-Disposition",164 fmt.Sprintf(`form-data; name="%s"; filename="%s"`,165 k, escapedFilename))166 h.Set("Content-Type", ve.ContentType)167 // this writer will be closed either by the next part or168 // the call to mpw.Close()169 fw, err := mpw.CreatePart(h)170 if err != nil {171 return err172 }173 if _, err := fw.Write(ve.Data); err != nil {174 return err175 }176 default:177 fw, err := mpw.CreateFormField(k)178 if err != nil {179 return err180 }181 if _, err := fw.Write([]byte(formatFormVal(v))); err != nil {182 return err183 }184 }185 }186 if err := mpw.Close(); err != nil {187 return err188 }189 result.Req.Header.Set("Content-Type", mpw.FormDataContentType())190 return nil191 }192 if body != nil {193 switch data := body.(type) {194 case map[string]goja.Value:195 // TODO: fix forms submission and serialization in k6/html before fixing this..196 newData := map[string]interface{}{}197 for k, v := range data {198 newData[k] = v.Export()199 }200 if err := handleObjectBody(newData); err != nil {201 return nil, err202 }203 case goja.ArrayBuffer:204 result.Body = bytes.NewBuffer(data.Bytes())205 case map[string]interface{}:206 if err := handleObjectBody(data); err != nil {207 return nil, err208 }209 case string:210 result.Body = bytes.NewBufferString(data)211 case []byte:212 result.Body = bytes.NewBuffer(data)213 default:214 return nil, fmt.Errorf("unknown request body type %T", body)215 }216 }217 result.Req.Header.Set("User-Agent", state.Options.UserAgent.String)218 if state.CookieJar != nil {219 result.ActiveJar = state.CookieJar220 }221 // TODO: ditch goja.Value, reflections and Object and use a simple go map and type assertions?222 if params != nil && !goja.IsUndefined(params) && !goja.IsNull(params) {223 params := params.ToObject(rt)224 for _, k := range params.Keys() {225 switch k {226 case "cookies":227 cookiesV := params.Get(k)228 if goja.IsUndefined(cookiesV) || goja.IsNull(cookiesV) {229 continue230 }231 cookies := cookiesV.ToObject(rt)232 if cookies == nil {233 continue234 }235 for _, key := range cookies.Keys() {236 cookieV := cookies.Get(key)237 if goja.IsUndefined(cookieV) || goja.IsNull(cookieV) {238 continue239 }240 switch cookieV.ExportType() {241 case reflect.TypeOf(map[string]interface{}{}):242 result.Cookies[key] = &httpext.HTTPRequestCookie{Name: key, Value: "", Replace: false}243 cookie := cookieV.ToObject(rt)244 for _, attr := range cookie.Keys() {245 switch strings.ToLower(attr) {246 case "replace":247 result.Cookies[key].Replace = cookie.Get(attr).ToBoolean()248 case "value":249 result.Cookies[key].Value = cookie.Get(attr).String()250 }251 }252 default:253 result.Cookies[key] = &httpext.HTTPRequestCookie{Name: key, Value: cookieV.String(), Replace: false}254 }255 }256 case "headers":257 headersV := params.Get(k)258 if goja.IsUndefined(headersV) || goja.IsNull(headersV) {259 continue260 }261 headers := headersV.ToObject(rt)262 if headers == nil {263 continue264 }265 for _, key := range headers.Keys() {266 str := headers.Get(key).String()267 if strings.ToLower(key) == "host" {268 result.Req.Host = str269 }270 result.Req.Header.Set(key, str)271 }272 case "jar":273 jarV := params.Get(k)274 if goja.IsUndefined(jarV) || goja.IsNull(jarV) {275 continue276 }277 switch v := jarV.Export().(type) {278 case *CookieJar:279 result.ActiveJar = v.Jar280 }281 case "compression":282 algosString := strings.TrimSpace(params.Get(k).ToString().String())283 if algosString == "" {284 continue285 }286 algos := strings.Split(algosString, ",")287 var err error288 result.Compressions = make([]httpext.CompressionType, len(algos))289 for index, algo := range algos {290 algo = strings.TrimSpace(algo)291 result.Compressions[index], err = httpext.CompressionTypeString(algo)292 if err != nil {293 return nil, fmt.Errorf("unknown compression algorithm %s, supported algorithms are %s",294 algo, httpext.CompressionTypeValues())295 }296 }297 case "redirects":298 result.Redirects = null.IntFrom(params.Get(k).ToInteger())299 case "tags":300 tagsV := params.Get(k)301 if goja.IsUndefined(tagsV) || goja.IsNull(tagsV) {302 continue303 }304 tagObj := tagsV.ToObject(rt)305 if tagObj == nil {306 continue307 }308 for _, key := range tagObj.Keys() {309 result.Tags[key] = tagObj.Get(key).String()310 }311 case "auth":312 result.Auth = params.Get(k).String()313 case "timeout":314 t, err := types.GetDurationValue(params.Get(k).Export())315 if err != nil {316 return nil, fmt.Errorf("invalid timeout value: %w", err)317 }318 result.Timeout = t319 case "throw":320 result.Throw = params.Get(k).ToBoolean()321 case "responseType":322 responseType, err := httpext.ResponseTypeString(params.Get(k).String())323 if err != nil {324 return nil, err325 }326 result.ResponseType = responseType327 case "responseCallback":328 v := params.Get(k).Export()329 if v == nil {330 result.ResponseCallback = nil331 } else if c, ok := v.(*expectedStatuses); ok {332 result.ResponseCallback = c.match...

Full Screen

Full Screen

client.go

Source:client.go Github

copy

Full Screen

...32}33type Config struct {34 URL url.URL35 UserAgent string36 Timeout time.Duration37 TenantID string38 Labels LabelPool39 ProtobufRatio float6440}41func (c *Client) InstantQuery(logQuery string, limit int) (httpext.Response, error) {42 return c.instantQuery(logQuery, limit, time.Now())43}44func (c *Client) InstantQueryAt(logQuery string, limit int, instant int64) (httpext.Response, error) {45 return c.instantQuery(logQuery, limit, time.Unix(instant, 0))46}47func (c *Client) instantQuery(logQuery string, limit int, now time.Time) (httpext.Response, error) {48 q := &Query{49 Type: InstantQuery,50 QueryString: logQuery,51 Limit: limit,52 }53 q.SetInstant(now)54 response, err := c.sendQuery(q)55 if err == nil && IsSuccessfulResponse(response.Status) {56 err = c.reportMetricsFromStats(response, InstantQuery)57 }58 return response, err59}60func (c *Client) RangeQuery(logQuery string, duration string, limit int) (httpext.Response, error) {61 return c.rangeQuery(logQuery, duration, limit, time.Now())62}63func (c *Client) RangeQueryAt(logQuery string, duration string, limit int, instant int64) (httpext.Response, error) {64 return c.rangeQuery(logQuery, duration, limit, time.Unix(instant, 0))65}66func (c *Client) rangeQuery(logQuery string, duration string, limit int, now time.Time) (httpext.Response, error) {67 dur, err := time.ParseDuration(duration)68 if err != nil {69 return httpext.Response{}, err70 }71 q := &Query{72 Type: RangeQuery,73 QueryString: logQuery,74 Start: now.Add(-dur),75 End: now,76 Limit: limit,77 }78 response, err := c.sendQuery(q)79 if err == nil && IsSuccessfulResponse(response.Status) {80 err = c.reportMetricsFromStats(response, RangeQuery)81 }82 return response, err83}84func (c *Client) LabelsQuery(duration string) (httpext.Response, error) {85 return c.labelsQuery(duration, time.Now())86}87func (c *Client) LabelsQueryAt(duration string, instant int64) (httpext.Response, error) {88 return c.labelsQuery(duration, time.Unix(instant, 0))89}90func (c *Client) labelsQuery(duration string, now time.Time) (httpext.Response, error) {91 dur, err := time.ParseDuration(duration)92 if err != nil {93 return httpext.Response{}, err94 }95 q := &Query{96 Type: LabelsQuery,97 Start: now.Add(-dur),98 End: now,99 }100 return c.sendQuery(q)101}102func (c *Client) LabelValuesQuery(label string, duration string) (httpext.Response, error) {103 return c.labelValuesQuery(label, duration, time.Now())104}105func (c *Client) LabelValuesQueryAt(label string, duration string, instant int64) (httpext.Response, error) {106 return c.labelValuesQuery(label, duration, time.Unix(instant, 0))107}108func (c *Client) labelValuesQuery(label string, duration string, now time.Time) (httpext.Response, error) {109 dur, err := time.ParseDuration(duration)110 if err != nil {111 return httpext.Response{}, err112 }113 q := &Query{114 Type: LabelValuesQuery,115 Start: now.Add(-dur),116 End: now,117 PathParams: []interface{}{label},118 }119 return c.sendQuery(q)120}121func (c *Client) SeriesQuery(matchers string, duration string) (httpext.Response, error) {122 return c.seriesQuery(matchers, duration, time.Now())123}124func (c *Client) SeriesQueryAt(matchers string, duration string, instant int64) (httpext.Response, error) {125 return c.seriesQuery(matchers, duration, time.Unix(instant, 0))126}127func (c *Client) seriesQuery(matchers string, duration string, now time.Time) (httpext.Response, error) {128 dur, err := time.ParseDuration(duration)129 if err != nil {130 return httpext.Response{}, err131 }132 q := &Query{133 Type: SeriesQuery,134 QueryString: matchers,135 Start: now.Add(-dur),136 End: now,137 }138 return c.sendQuery(q)139}140// buildURL concatinates a URL `http://foo/bar` with a path `/buzz` and a query string `?query=...`.141func buildURL(u, p, qs string) (string, error) {142 url, err := url.Parse(u)143 if err != nil {144 return "", err145 }146 url.Path = path.Join(url.Path, p)147 url.RawQuery = qs148 return url.String(), nil149}150func (c *Client) sendQuery(q *Query) (httpext.Response, error) {151 state := c.vu.State()152 if state == nil {153 return *httpext.NewResponse(), errors.New("state is nil")154 }155 httpResp := httpext.NewResponse()156 path := q.Endpoint()157 urlString, err := buildURL(c.cfg.URL.String(), path, q.Values().Encode())158 if err != nil {159 return *httpext.NewResponse(), err160 }161 r, err := http.NewRequest(http.MethodGet, urlString, nil)162 if err != nil {163 return *httpResp, err164 }165 r.Header.Set("User-Agent", c.cfg.UserAgent)166 r.Header.Set("Accept", ContentTypeJSON)167 if c.cfg.TenantID != "" {168 r.Header.Set("X-Scope-OrgID", c.cfg.TenantID)169 } else {170 r.Header.Set("X-Scope-OrgID", fmt.Sprintf("%s-%d", TenantPrefix, state.VUID))171 }172 url, _ := httpext.NewURL(urlString, path)173 response, err := httpext.MakeRequest(c.vu.Context(), state, &httpext.ParsedHTTPRequest{174 URL: &url,175 Req: r,176 Throw: state.Options.Throw.Bool,177 Redirects: state.Options.MaxRedirects,178 Timeout: c.cfg.Timeout,179 ResponseCallback: IsSuccessfulResponse,180 })181 if err != nil {182 return *httpResp, err183 }184 return *response, err185}186func (c *Client) Push() (httpext.Response, error) {187 // 5 streams per batch188 // batch size between 800KB and 1MB189 return c.PushParameterized(5, 800*1024, 1024*1024)190}191// PushParametrized is deprecated in favor or PushParameterized192func (c *Client) PushParametrized(streams, minBatchSize, maxBatchSize int) (httpext.Response, error) {193 if state := c.vu.State(); state == nil {194 return *httpext.NewResponse(), errors.New("state is nil")195 } else {196 state.Logger.Warn("method pushParametrized() is deprecated and will be removed in future releases; please use pushParameterized() instead")197 }198 return c.PushParameterized(streams, minBatchSize, maxBatchSize)199}200func (c *Client) PushParameterized(streams, minBatchSize, maxBatchSize int) (httpext.Response, error) {201 state := c.vu.State()202 if state == nil {203 return *httpext.NewResponse(), errors.New("state is nil")204 }205 batch := c.newBatch(c.cfg.Labels, streams, minBatchSize, maxBatchSize)206 return c.pushBatch(batch)207}208func (c *Client) pushBatch(batch *Batch) (httpext.Response, error) {209 state := c.vu.State()210 if state == nil {211 return *httpext.NewResponse(), errors.New("state is nil")212 }213 var buf []byte214 var err error215 // Use snappy encoded Protobuf for 90% of the requests216 // Use JSON encoding for 10% of the requests217 encodeSnappy := rand.Float64() < c.cfg.ProtobufRatio218 if encodeSnappy {219 buf, _, err = batch.encodeSnappy()220 } else {221 buf, _, err = batch.encodeJSON()222 }223 if err != nil {224 return *httpext.NewResponse(), errors.Wrap(err, "failed to encode payload")225 }226 res, err := c.send(state, buf, encodeSnappy)227 if err != nil {228 return *httpext.NewResponse(), errors.Wrap(err, "push request failed")229 }230 res.Request.Body = ""231 return res, nil232}233func (c *Client) send(state *lib.State, buf []byte, useProtobuf bool) (httpext.Response, error) {234 httpResp := httpext.NewResponse()235 path := "/loki/api/v1/push"236 r, err := http.NewRequest(http.MethodPost, c.cfg.URL.String()+path, nil)237 if err != nil {238 return *httpResp, err239 }240 r.Header.Set("User-Agent", c.cfg.UserAgent)241 r.Header.Set("Accept", ContentTypeJSON)242 if c.cfg.TenantID != "" {243 r.Header.Set("X-Scope-OrgID", c.cfg.TenantID)244 } else {245 r.Header.Set("X-Scope-OrgID", fmt.Sprintf("%s-%d", TenantPrefix, state.VUID))246 }247 if useProtobuf {248 r.Header.Set("Content-Type", ContentTypeProtobuf)249 r.Header.Add("Content-Encoding", ContentEncodingSnappy)250 } else {251 r.Header.Set("Content-Type", ContentTypeJSON)252 }253 url, _ := httpext.NewURL(c.cfg.URL.String()+path, path)254 response, err := httpext.MakeRequest(c.vu.Context(), state, &httpext.ParsedHTTPRequest{255 URL: &url,256 Req: r,257 Body: bytes.NewBuffer(buf),258 Throw: state.Options.Throw.Bool,259 Redirects: state.Options.MaxRedirects,260 Timeout: c.cfg.Timeout,261 ResponseCallback: IsSuccessfulResponse,262 })263 if err != nil {264 return *httpResp, err265 }266 return *response, err267}268func IsSuccessfulResponse(n int) bool {269 // report all 2xx respones as successful requests270 return n/100 == 2271}272type responseWithStats struct {273 Data struct {274 stats stats.Result...

Full Screen

Full Screen

di.go

Source:di.go Github

copy

Full Screen

...108 }109 s := &http.Server{110 MaxHeaderBytes: 1024 * 8,111 Handler: h,112 WriteTimeout: time.Second * 30,113 ReadTimeout: time.Second * 30,114 IdleTimeout: time.Second * 15,115 }116 res = s117 return118 },119 })120 builder.Add(util.Def{121 Name: SecureHTTPServerDI,122 Build: func(ctn di.Container) (res interface{}, err error) {123 cfg := &tls.Config{124 MinVersion: tls.VersionTLS13,125 }126 var h http.Handler127 err = ctn.Fill(RouterDI, &h)128 if err != nil {129 return130 }131 s := &http.Server{132 MaxHeaderBytes: 1024 * 8,133 Handler: h,134 TLSConfig: cfg,135 WriteTimeout: time.Second * 30,136 ReadTimeout: time.Second * 30,137 IdleTimeout: time.Second * 15,138 }139 res = s140 return141 },142 })143 builder.Add(util.Def{144 Name: RunnerDI,145 Build: func(ctn di.Container) (res interface{}, err error) {146 res = util.RunnerFunc(func() (err error) {147 return runHttp(ctn)148 })149 return150 },151 })...

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 c := colly.NewCollector(4 colly.Async(true),5 extensions.RandomUserAgent(c)6 extensions.Referer(c)7 extensions.Timeout(c, 10)8 c.OnRequest(func(r *colly.Request) {9 fmt.Println("Visiting", r.URL.String())10 })11 c.OnResponse(func(r *colly.Response) {12 fmt.Println("Visited", r.Request.URL.String())13 })14 c.OnError(func(r *colly.Response, err error) {15 fmt.Println("Something went wrong:", err)16 })17 c.Wait()18}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 client := http.Client{4 }5 if err != nil {6 fmt.Println(err)7 }8 fmt.Println(resp.StatusCode)9}10import (11func main() {12 client := http.Client{13 }14 handler := http.TimeoutHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {15 time.Sleep(2 * time.Second)16 }), timeout, "timeout")17 server := http.Server{18 }19 server.ListenAndServe()20}21import (22func main() {23 client := http.Client{}24 if err != nil {25 fmt.Println(err)26 }27 resp, err := client.DoTimeout(req, 1*time.Second)28 if err != nil {29 fmt.Println(err)30 }31 fmt.Println(resp.StatusCode)32}33import (34func main() {35 if err != nil {36 fmt.Println(err)37 }38 fmt.Println(resp.StatusCode)39}40import (41func main() {42 if err != nil {43 fmt.Println(err)44 }45 fmt.Println(resp.StatusCode)46}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 client := http.Client{4 }5 if err != nil {6 fmt.Println(err)7 }8}9import (10func main() {11 if err != nil {12 fmt.Println(err)13 }14 fmt.Println(res)15}16&{200 OK 200 HTTP/2.0 2 0 map[Alt-Svc:[h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"] Cache-Control:[private, max-age=0] Content-Type

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 client := &http.Client{4 }5 if err != nil {6 fmt.Println(err)7 }8}9import (10func main() {11 client := &http.Client{12 }13 if err != nil {14 fmt.Println(err)15 }16}17import (18func main() {19 client := &http.Client{20 }21 if err != nil {22 fmt.Println(err)23 }24}25import (26func main() {27 client := &http.Client{28 }29 if err != nil {30 fmt.Println(err)31 }32}33import (34func main() {35 client := &http.Client{36 }37 if err != nil {38 fmt.Println(err)39 }40}41import (42func main() {43 client := &http.Client{44 }45 if err != nil {46 fmt.Println(err)47 }48}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 if err != nil {4 fmt.Println(err)5 }6 client := &http.Client{7 }8 res, getErr := client.Do(req)9 if getErr != nil {10 fmt.Println(getErr)11 }12 fmt.Println("response Status:", res.Status)13}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 request := gorequest.New()4 request.Timeout(10 * time.Second)5 if errs != nil {6 fmt.Println(errs)7 }8}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 request := gorequest.New()4 request.Timeout(10 * time.Second)5 request.Retry(5, 5 * time.Second, http.StatusInternalServerError)6 request.Retry(5, 5 * time.Second, http.StatusInternalServerError)7 request.Retry(5, 5 * time.Second, http.StatusInternalServerError, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout, http.StatusNetworkAuthenticationRequired, http.StatusNetworkAuthenticationRequired)8 request.Retry(5, 5 * time.Second, http.StatusInternalServerError, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout, http.StatusNetworkAuthenticationRequired, http.StatusNetworkAuthenticationRequired, "Custom error")9 request.Retry(5, 5 * time.Second, http.StatusInternalServerError, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout, http.StatusNetworkAuthenticationRequired, http.StatusNetworkAuthenticationRequired, "Custom error", func(res gorequest.Response, body string, errs []error) bool {10 })11 request.Retry(5,

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 client := &fasthttp.Client{4 }5 req := fasthttp.AcquireRequest()6 resp := fasthttp.AcquireResponse()7 err := client.Do(req, resp)8 if err != nil {9 fmt.Printf("Error: %s10 }11 fmt.Printf("Response: %s12 fasthttp.ReleaseRequest(req)13 fasthttp.ReleaseResponse(resp)14}15Response: &{200 OK 1 1 map[Content-Type:[text/plain; charset=utf-8] Date:[Sat, 07 Nov 2020 18:50:42 GMT]] 0 [] false localhost:8080 map[] <nil> 0 [] false}

Full Screen

Full Screen

Timeout

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 client := &http.Client{}4 if err != nil {5 fmt.Println(err)6 }7 resp, err := client.Do(req)8 if err != nil {9 fmt.Println(err)10 }11 fmt.Println(resp.Status)12}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run K6 automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful