github.com/aavshr/aws-sdk-go@v1.41.3/aws/request/http_request_copy_test.go (about)

     1  package request
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"net/http"
     7  	"net/url"
     8  	"sync"
     9  	"testing"
    10  )
    11  
    12  func TestRequestCopyRace(t *testing.T) {
    13  	origReq := &http.Request{URL: &url.URL{}, Header: http.Header{}}
    14  	origReq.Header.Set("Header", "OrigValue")
    15  
    16  	var wg sync.WaitGroup
    17  	for i := 0; i < 100; i++ {
    18  		wg.Add(1)
    19  		go func() {
    20  			req := copyHTTPRequest(origReq, ioutil.NopCloser(&bytes.Buffer{}))
    21  			req.Header.Set("Header", "Value")
    22  			go func() {
    23  				req2 := copyHTTPRequest(req, ioutil.NopCloser(&bytes.Buffer{}))
    24  				req2.Header.Add("Header", "Value2")
    25  			}()
    26  			_ = req.Header.Get("Header")
    27  			wg.Done()
    28  		}()
    29  		_ = origReq.Header.Get("Header")
    30  	}
    31  	origReq.Header.Get("Header")
    32  
    33  	wg.Wait()
    34  }