mirror of
https://github.com/owncloud/ocis
synced 2026-04-25 17:25:21 +02:00
* chore(deps): bump @testing-library/jest-dom in /services/idp
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.4 to 6.9.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.4...v6.9.1)
---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
dependency-version: 6.9.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1
Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/FiloSottile/edwards25519/compare/v1.1.0...v1.1.1)
---
updated-dependencies:
- dependency-name: filippo.io/edwards25519
dependency-version: 1.1.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Merge branch 'master' into dependabot/go_modules/github.com/russellhaering/goxmldsig-1.6.0
* build(deps): bump alpine from 3.23.3 to 3.23.4
Bumps alpine from 3.23.3 to 3.23.4.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.23.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* build(deps): bump arm64v8/alpine from 3.23.3 to 3.23.4 in /ocis/docker
Bumps arm64v8/alpine from 3.23.3 to 3.23.4.
---
updated-dependencies:
- dependency-name: arm64v8/alpine
dependency-version: 3.23.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* build(deps): bump actions/cache from 5.0.4 to 5.0.5
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](668228422a...27d5ce7f10)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: 5.0.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* build(deps): bump github.com/go-acme/lego/v4 from 4.25.2 to 4.34.0
Bumps [github.com/go-acme/lego/v4](https://github.com/go-acme/lego) from 4.25.2 to 4.34.0.
- [Release notes](https://github.com/go-acme/lego/releases)
- [Changelog](https://github.com/go-acme/lego/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-acme/lego/compare/v4.25.2...v4.34.0)
---
updated-dependencies:
- dependency-name: github.com/go-acme/lego/v4
dependency-version: 4.34.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* build(deps): bump github.com/go-git/go-git/v5 from 5.17.1 to 5.18.0
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.17.1 to 5.18.0.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.17.1...v5.18.0)
---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
dependency-version: 5.18.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore: regenerate pnpm-lock.yaml
* fix(ci): replace nc-based fakeoffice with Python HTTP server
BusyBox nc -k restarts between connections leaving a gap where the
collaboration service gets ECONNRESET at startup, so healthz never
binds and the 300s wait times out. Python HTTPServer is gap-free.
---------
Signed-off-by: dependabot[bot] <support@github.com>
145 lines
4.2 KiB
Go
145 lines
4.2 KiB
Go
// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved.
|
|
// resty source code and usage is governed by a MIT style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package resty
|
|
|
|
import (
|
|
"context"
|
|
"crypto/tls"
|
|
"net"
|
|
"net/http/httptrace"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
|
// TraceInfo struct
|
|
//_______________________________________________________________________
|
|
|
|
// TraceInfo struct is used to provide request trace info such as DNS lookup
|
|
// duration, Connection obtain duration, Server processing duration, etc.
|
|
type TraceInfo struct {
|
|
// DNSLookup is the duration that transport took to perform
|
|
// DNS lookup.
|
|
DNSLookup time.Duration
|
|
|
|
// ConnTime is the duration it took to obtain a successful connection.
|
|
ConnTime time.Duration
|
|
|
|
// TCPConnTime is the duration it took to obtain the TCP connection.
|
|
TCPConnTime time.Duration
|
|
|
|
// TLSHandshake is the duration of the TLS handshake.
|
|
TLSHandshake time.Duration
|
|
|
|
// ServerTime is the server's duration for responding to the first byte.
|
|
ServerTime time.Duration
|
|
|
|
// ResponseTime is the duration since the first response byte from the server to
|
|
// request completion.
|
|
ResponseTime time.Duration
|
|
|
|
// TotalTime is the duration of the total time request taken end-to-end.
|
|
TotalTime time.Duration
|
|
|
|
// IsConnReused is whether this connection has been previously
|
|
// used for another HTTP request.
|
|
IsConnReused bool
|
|
|
|
// IsConnWasIdle is whether this connection was obtained from an
|
|
// idle pool.
|
|
IsConnWasIdle bool
|
|
|
|
// ConnIdleTime is the duration how long the connection that was previously
|
|
// idle, if IsConnWasIdle is true.
|
|
ConnIdleTime time.Duration
|
|
|
|
// RequestAttempt is to represent the request attempt made during a Resty
|
|
// request execution flow, including retry count.
|
|
RequestAttempt int
|
|
|
|
// RemoteAddr returns the remote network address.
|
|
RemoteAddr net.Addr
|
|
}
|
|
|
|
//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
|
// ClientTrace struct and its methods
|
|
//_______________________________________________________________________
|
|
|
|
// clientTrace struct maps the [httptrace.ClientTrace] hooks into Fields
|
|
// with the same naming for easy understanding. Plus additional insights
|
|
// [Request].
|
|
type clientTrace struct {
|
|
lock sync.RWMutex
|
|
getConn time.Time
|
|
dnsStart time.Time
|
|
dnsDone time.Time
|
|
connectDone time.Time
|
|
tlsHandshakeStart time.Time
|
|
tlsHandshakeDone time.Time
|
|
gotConn time.Time
|
|
gotFirstResponseByte time.Time
|
|
endTime time.Time
|
|
gotConnInfo httptrace.GotConnInfo
|
|
}
|
|
|
|
func (t *clientTrace) createContext(ctx context.Context) context.Context {
|
|
return httptrace.WithClientTrace(
|
|
ctx,
|
|
&httptrace.ClientTrace{
|
|
DNSStart: func(_ httptrace.DNSStartInfo) {
|
|
t.lock.Lock()
|
|
t.dnsStart = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
DNSDone: func(_ httptrace.DNSDoneInfo) {
|
|
t.lock.Lock()
|
|
t.dnsDone = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
ConnectStart: func(_, _ string) {
|
|
t.lock.Lock()
|
|
if t.dnsDone.IsZero() {
|
|
t.dnsDone = time.Now()
|
|
}
|
|
if t.dnsStart.IsZero() {
|
|
t.dnsStart = t.dnsDone
|
|
}
|
|
t.lock.Unlock()
|
|
},
|
|
ConnectDone: func(net, addr string, err error) {
|
|
t.lock.Lock()
|
|
t.connectDone = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
GetConn: func(_ string) {
|
|
t.lock.Lock()
|
|
t.getConn = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
GotConn: func(ci httptrace.GotConnInfo) {
|
|
t.lock.Lock()
|
|
t.gotConn = time.Now()
|
|
t.gotConnInfo = ci
|
|
t.lock.Unlock()
|
|
},
|
|
GotFirstResponseByte: func() {
|
|
t.lock.Lock()
|
|
t.gotFirstResponseByte = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
TLSHandshakeStart: func() {
|
|
t.lock.Lock()
|
|
t.tlsHandshakeStart = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
TLSHandshakeDone: func(_ tls.ConnectionState, _ error) {
|
|
t.lock.Lock()
|
|
t.tlsHandshakeDone = time.Now()
|
|
t.lock.Unlock()
|
|
},
|
|
},
|
|
)
|
|
}
|