File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -1251,13 +1251,16 @@ func (r *Request) TraceInfo() TraceInfo {
12511251		RequestAttempt : r .Attempt ,
12521252	}
12531253
1254- 	// Calculate the total time accordingly, 
1255- 	// when connection is reused 
1256- 	if  ct .gotConnInfo .Reused  {
1257- 		ti .TotalTime  =  ct .endTime .Sub (ct .getConn )
1258- 	} else  {
1259- 		ti .TotalTime  =  ct .endTime .Sub (ct .dnsStart )
1254+ 	// Calculate the total time accordingly when connection is reused, 
1255+ 	// and DNS start and get conn time may be zero if the request is invalid. 
1256+ 	// See issue #1016. 
1257+ 	requestStartTime  :=  r .Time 
1258+ 	if  ct .gotConnInfo .Reused  &&  ! ct .getConn .IsZero () {
1259+ 		requestStartTime  =  ct .getConn 
1260+ 	} else  if  ! ct .dnsStart .IsZero () {
1261+ 		requestStartTime  =  ct .dnsStart 
12601262	}
1263+ 	ti .TotalTime  =  ct .endTime .Sub (requestStartTime )
12611264
12621265	// Only calculate on successful connections 
12631266	if  ! ct .connectDone .IsZero () {
Original file line number Diff line number Diff line change @@ -1830,6 +1830,18 @@ func TestTraceInfo(t *testing.T) {
18301830
18311831	})
18321832
1833+ 	t .Run ("enable trace on invalid request, issue #1016" , func (t  * testing.T ) {
1834+ 		resp , err  :=  client .R ().EnableTrace ().Get ("unknown://url.com" )
1835+ 		assertNotNil (t , err )
1836+ 		tr  :=  resp .Request .TraceInfo ()
1837+ 		assertEqual (t , true , tr .DNSLookup  ==  0 )
1838+ 		assertEqual (t , true , tr .ConnTime  ==  0 )
1839+ 		assertEqual (t , true , tr .TLSHandshake  ==  0 )
1840+ 		assertEqual (t , true , tr .ServerTime  ==  0 )
1841+ 		assertEqual (t , true , tr .ResponseTime  ==  0 )
1842+ 		assertEqual (t , true , tr .TotalTime  >  0  &&  tr .TotalTime  <  time .Second )
1843+ 	})
1844+ 
18331845	t .Run ("enable trace and debug on request" , func (t  * testing.T ) {
18341846		c , logBuf  :=  dcldb ()
18351847		c .SetBaseURL (ts .URL )
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments