Skip to content

Commit 03f1805

Browse files
authored
🔧 #238 Implements human readable durations in config (#253)
1 parent 8986edb commit 03f1805

File tree

12 files changed

+73
-22
lines changed

12 files changed

+73
-22
lines changed

pkg/providers/anthropic/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"net/http"
66
"net/url"
7+
"time"
78

89
"github.com/EinStack/glide/pkg/telemetry"
910

@@ -46,7 +47,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
4647
chatRequestTemplate: NewChatRequestFromConfig(providerConfig),
4748
errMapper: NewErrorMapper(tel),
4849
httpClient: &http.Client{
49-
Timeout: *clientConfig.Timeout,
50+
Timeout: time.Duration(*clientConfig.Timeout),
5051
Transport: &http.Transport{
5152
MaxIdleConns: *clientConfig.MaxIdleConns,
5253
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/azureopenai/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"fmt"
66
"net/http"
7+
"time"
78

89
"github.com/EinStack/glide/pkg/providers/openai"
910

@@ -50,7 +51,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
5051
finishReasonMapper: openai.NewFinishReasonMapper(tel),
5152
errMapper: NewErrorMapper(tel),
5253
httpClient: &http.Client{
53-
Timeout: *clientConfig.Timeout,
54+
Timeout: time.Duration(*clientConfig.Timeout),
5455
Transport: &http.Transport{
5556
MaxIdleConns: *clientConfig.MaxIdleConns,
5657
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/bedrock/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"net/http"
77
"net/url"
8+
"time"
89

910
"github.com/EinStack/glide/pkg/telemetry"
1011

@@ -56,7 +57,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
5657
config: providerConfig,
5758
chatRequestTemplate: NewChatRequestFromConfig(providerConfig),
5859
httpClient: &http.Client{
59-
Timeout: *clientConfig.Timeout,
60+
Timeout: time.Duration(*clientConfig.Timeout),
6061
Transport: &http.Transport{
6162
MaxIdleConns: *clientConfig.MaxIdleConns,
6263
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/clients/config.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package clients
22

3-
import "time"
3+
import (
4+
"time"
5+
6+
"github.com/EinStack/glide/pkg/config/fields"
7+
)
48

59
type ClientConfig struct {
6-
Timeout *time.Duration `yaml:"timeout,omitempty" json:"timeout" swaggertype:"primitive,string"`
7-
MaxIdleConns *int `yaml:"max_idle_connections,omitempty" json:"max_idle_connections" swaggertype:"primitive,integer"`
8-
MaxIdleConnsPerHost *int `yaml:"max_idle_connections_per_host,omitempty" json:"max_idle_connections_per_host" swaggertype:"primitive,integer"`
10+
Timeout *fields.Duration `yaml:"timeout,omitempty" json:"timeout" swaggertype:"primitive,string"`
11+
MaxIdleConns *int `yaml:"max_idle_connections,omitempty" json:"max_idle_connections" swaggertype:"primitive,integer"`
12+
MaxIdleConnsPerHost *int `yaml:"max_idle_connections_per_host,omitempty" json:"max_idle_connections_per_host" swaggertype:"primitive,integer"`
913
}
1014

1115
func DefaultClientConfig() *ClientConfig {
@@ -14,7 +18,7 @@ func DefaultClientConfig() *ClientConfig {
1418
maxIdleConnsPerHost := 2
1519

1620
return &ClientConfig{
17-
Timeout: &defaultTimeout,
21+
Timeout: (*fields.Duration)(&defaultTimeout),
1822
MaxIdleConns: &maxIdleConns,
1923
MaxIdleConnsPerHost: &maxIdleConnsPerHost,
2024
}

pkg/providers/clients/config_test.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package clients
22

33
import (
4+
"encoding/json"
45
"testing"
56
"time"
67

78
"github.com/stretchr/testify/require"
9+
10+
"github.com/EinStack/glide/pkg/config/fields"
811
)
912

1013
func TestClientConfig_DefaultConfig(t *testing.T) {
@@ -13,6 +16,21 @@ func TestClientConfig_DefaultConfig(t *testing.T) {
1316
require.NotEmpty(t, config.Timeout)
1417
}
1518

19+
func TestClientConfig_JSONMarshal(t *testing.T) {
20+
defaultConfig := DefaultClientConfig()
21+
22+
expectedJSON := `{
23+
"timeout": "10s",
24+
"max_idle_connections": 100,
25+
"max_idle_connections_per_host": 2
26+
}`
27+
28+
marshaledJSON, err := json.MarshalIndent(defaultConfig, "", "\t")
29+
30+
require.NoError(t, err)
31+
require.JSONEq(t, expectedJSON, string(marshaledJSON))
32+
}
33+
1634
func TestDefaultClientConfig(t *testing.T) {
1735
config := DefaultClientConfig()
1836

@@ -22,7 +40,7 @@ func TestDefaultClientConfig(t *testing.T) {
2240
require.NotNil(t, config.MaxIdleConnsPerHost, "MaxIdleConnsPerHost must not be nil")
2341

2442
// Check default timeout
25-
expectedTimeout := 10 * time.Second
43+
expectedTimeout := fields.Duration(10 * time.Second)
2644
require.Equal(t, expectedTimeout, *config.Timeout)
2745

2846
// Check MaxIdleConns

pkg/providers/cohere/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"net/http"
66
"net/url"
7+
"time"
78

89
"github.com/EinStack/glide/pkg/telemetry"
910

@@ -44,7 +45,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
4445
config: providerConfig,
4546
chatRequestTemplate: NewChatRequestFromConfig(providerConfig),
4647
httpClient: &http.Client{
47-
Timeout: *clientConfig.Timeout,
48+
Timeout: time.Duration(*clientConfig.Timeout),
4849
Transport: &http.Transport{
4950
MaxIdleConns: *clientConfig.MaxIdleConns,
5051
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/octoml/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"net/http"
66
"net/url"
7+
"time"
78

89
"github.com/EinStack/glide/pkg/telemetry"
910

@@ -44,7 +45,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
4445
chatRequestTemplate: NewChatRequestFromConfig(providerConfig),
4546
errMapper: NewErrorMapper(tel),
4647
httpClient: &http.Client{
47-
Timeout: *clientConfig.Timeout,
48+
Timeout: time.Duration(*clientConfig.Timeout),
4849
Transport: &http.Transport{
4950
MaxIdleConns: *clientConfig.MaxIdleConns,
5051
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/ollama/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"net/http"
66
"net/url"
7+
"time"
78

89
"github.com/EinStack/glide/pkg/telemetry"
910

@@ -42,7 +43,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
4243
config: providerConfig,
4344
chatRequestTemplate: NewChatRequestFromConfig(providerConfig),
4445
httpClient: &http.Client{
45-
Timeout: *clientConfig.Timeout,
46+
Timeout: time.Duration(*clientConfig.Timeout),
4647
Transport: &http.Transport{
4748
MaxIdleConns: *clientConfig.MaxIdleConns,
4849
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/providers/openai/client.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"net/http"
66
"net/url"
7+
"time"
78

89
"go.uber.org/zap"
910

@@ -53,7 +54,7 @@ func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *
5354
finishReasonMapper: NewFinishReasonMapper(tel),
5455
errMapper: NewErrorMapper(tel),
5556
httpClient: &http.Client{
56-
Timeout: *clientConfig.Timeout,
57+
Timeout: time.Duration(*clientConfig.Timeout),
5758
Transport: &http.Transport{
5859
MaxIdleConns: *clientConfig.MaxIdleConns,
5960
MaxIdleConnsPerHost: *clientConfig.MaxIdleConnsPerHost,

pkg/routers/config.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package routers
22

33
import (
44
"fmt"
5+
"time"
56

67
"github.com/EinStack/glide/pkg/telemetry"
78

@@ -164,12 +165,13 @@ func (c *LangRouterConfig) BuildModels(tel *telemetry.Telemetry) ([]*providers.L
164165

165166
func (c *LangRouterConfig) BuildRetry() *retry.ExpRetry {
166167
retryConfig := c.Retry
168+
maxDelay := time.Duration(*retryConfig.MaxDelay)
167169

168170
return retry.NewExpRetry(
169171
retryConfig.MaxRetries,
170172
retryConfig.BaseMultiplier,
171-
retryConfig.MinDelay,
172-
retryConfig.MaxDelay,
173+
time.Duration(retryConfig.MinDelay),
174+
&maxDelay,
173175
)
174176
}
175177

0 commit comments

Comments
 (0)