package main

import (
    "bytes"
    "crypto/tls"
    "fmt"
    "io"
    "io/ioutil"
    "mime/multipart"
    "net/http"
    "os"
    "path/filepath"
    "strconv"
    "sync"
    "time"
)

func main() {
    test()

    time.Sleep(10 * time.Minute)
}

func test() {
    for i := 0; i < 50; i++ {
        go UploadFile("myFile", 
"C:\\XXXXX\\installation\\jmeter\\TinyFileUploadDocs\\file-example_PDF_500_kB.pdf",
 
0, 0)
    }
}
func UploadFile(key, filePath string, offset int64, limit int64) {

    url := "https://www.xyz.com/test";
    file, _ := os.Open(filePath)
    fi, _ := file.Stat()
    defer file.Close()

    //
    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile(key, filepath.Base(filePath))
    if err != nil {
        fmt.Println(err)
    }
    _, err = io.Copy(part, file)

    err = writer.Close()
    if err != nil {
        fmt.Println(err)
    }
    if limit <= 0 {
        limit = fi.Size()
    }

    contentType := writer.FormDataContentType()
    req, err := http.NewRequest("POST", url, body)
    req.Header.Add("Content-Type", contentType)
    req.Header.Add("content-length", strconv.Itoa(int(limit)))
    transp, _ := createTransport()
    jobCreateTime := time.Now()
    resp, err := transp.RoundTrip(req)
    timeDifference := time.Now().Sub(jobCreateTime)
    fmt.Println("time difference is ", timeDifference)
    if resp != nil {
        defer resp.Body.Close()
        responseBody, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            fmt.Println("Response is %s %s", responseBody, err)
        }
    }

}

var m sync.Mutex
var defaultTransport *http.Transport

func createTransport() (*http.Transport, error) {
    m.Lock()
    defer m.Unlock()
    if defaultTransport != nil {
        fmt.Println("returning cached instance of httpclient", time.Now())
        return defaultTransport, nil
    }
    defaultRoundTripper := http.DefaultTransport
    defaultTransport = defaultRoundTripper.(*http.Transport).Clone()
    //if !ok {
    //    panic(fmt.Sprintf("defaultRoundTripper not an *http.Transport"))
    //}
    defaultTransport.TLSClientConfig = &tls.Config{
        InsecureSkipVerify: true,
    }
    defaultTransport.MaxIdleConns = 400
    defaultTransport.MaxIdleConnsPerHost = 400
    defaultTransport.IdleConnTimeout = 60 * time.Minute
    defaultTransport.ForceAttemptHTTP2 = false

    fmt.Println("returning newly created httpclient")
    return defaultTransport, nil
}


Response time is linearly increasing
returning newly created httpclient
returning cached instance of httpclient 2023-01-24 22:09:53.9637231 +0530 
IST m=+0.014956001
returning cached instance of httpclient 2023-01-24 22:09:53.971713 +0530 
IST m=+0.022946601
returning cached instance of httpclient 2023-01-24 22:09:53.971713 +0530 
IST m=+0.022946601
returning cached instance of httpclient 2023-01-24 22:09:53.971713 +0530 
IST m=+0.022946601
returning cached instance of httpclient 2023-01-24 22:09:53.9722399 +0530 
IST m=+0.023473501
returning cached instance of httpclient 2023-01-24 22:09:53.9722399 +0530 
IST m=+0.023473501
returning cached instance of httpclient 2023-01-24 22:09:53.9727521 +0530 
IST m=+0.023985801
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9727617 +0530 
IST m=+0.023995401
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9732854 +0530 
IST m=+0.024519101
returning cached instance of httpclient 2023-01-24 22:09:53.9738049 +0530 
IST m=+0.025038701
returning cached instance of httpclient 2023-01-24 22:09:53.9738049 +0530 
IST m=+0.025038701
returning cached instance of httpclient 2023-01-24 22:09:53.9738049 +0530 
IST m=+0.025038701
returning cached instance of httpclient 2023-01-24 22:09:53.9738049 +0530 
IST m=+0.025038701
returning cached instance of httpclient 2023-01-24 22:09:53.9738049 +0530 
IST m=+0.025038701
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9743254 +0530 
IST m=+0.025559201
returning cached instance of httpclient 2023-01-24 22:09:53.9748602 +0530 
IST m=+0.026094001
returning cached instance of httpclient 2023-01-24 22:09:53.9748602 +0530 
IST m=+0.026094001
returning cached instance of httpclient 2023-01-24 22:09:53.9748602 +0530 
IST m=+0.026094001
returning cached instance of httpclient 2023-01-24 22:09:53.9748602 +0530 
IST m=+0.026094001
returning cached instance of httpclient 2023-01-24 22:09:53.9753908 +0530 
IST m=+0.026624701
returning cached instance of httpclient 2023-01-24 22:09:53.9753908 +0530 
IST m=+0.026624701
returning cached instance of httpclient 2023-01-24 22:09:53.9753908 +0530 
IST m=+0.026624701
returning cached instance of httpclient 2023-01-24 22:09:53.9753908 +0530 
IST m=+0.026624701
returning cached instance of httpclient 2023-01-24 22:09:53.9753908 +0530 
IST m=+0.026624701
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
returning cached instance of httpclient 2023-01-24 22:09:53.9759277 +0530 
IST m=+0.027161601
time difference is 2.2112483s
time difference is 2.2788669s
time difference is 2.682173s
time difference is 2.746857s
time difference is 2.848968s
time difference is 2.8817055s
time difference is 2.8923872s
time difference is 3.0118433s
time difference is 3.0381271s
time difference is 3.069961s
time difference is 3.2203927s
time difference is 3.3128912s
time difference is 3.3236621s
time difference is 3.3923878s
time difference is 3.4503079s
time difference is 3.4574394s
time difference is 3.4735691s
time difference is 3.4856638s
time difference is 3.4835582s
time difference is 3.4962755s
time difference is 3.5307242s
time difference is 3.5364922s
time difference is 3.5358658s
time difference is 3.5781682s
time difference is 3.5832667s
time difference is 3.5837974s
time difference is 3.6138955s
time difference is 3.6152253s
time difference is 3.6367311s
time difference is 3.6708537s
time difference is 3.6875839s
time difference is 3.6918802s
time difference is 3.7155376s
time difference is 3.7180674s
time difference is 3.7208604s
time difference is 3.7445374s
time difference is 3.7464671s
time difference is 3.7464801s
time difference is 3.7584079s
time difference is 3.8687172s
time difference is 3.8977421s
time difference is 3.9151934s
time difference is 3.9218858s
time difference is 3.9335794s
time difference is 3.9870066s
time difference is 4.0831174s
time difference is 4.2388037s
time difference is 4.2442227s
time difference is 5.8370773s
time difference is 6.4261305s

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/c82c96a3-0568-4bac-9f01-e8c2e20f2d67n%40googlegroups.com.

Reply via email to