Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/storage/chunk/client/congestion/congestion_test.go

69 lines
1.7 KiB

package congestion
import (
"testing"
"github.com/go-kit/log"
"github.com/stretchr/testify/require"
)
func TestZeroValueConstruction(t *testing.T) {
cfg := Config{}
ctrl := NewController(cfg, log.NewNopLogger(), NewMetrics(t.Name(), cfg))
require.IsType(t, &NoopController{}, ctrl)
require.IsType(t, &NoopRetrier{}, ctrl.getRetrier())
require.IsType(t, &NoopHedger{}, ctrl.getHedger())
}
func TestAIMDConstruction(t *testing.T) {
cfg := Config{
Controller: ControllerConfig{
Strategy: "aimd",
},
}
ctrl := NewController(cfg, log.NewNopLogger(), NewMetrics(t.Name(), cfg))
require.IsType(t, &AIMDController{}, ctrl)
require.IsType(t, &NoopRetrier{}, ctrl.getRetrier())
require.IsType(t, &NoopHedger{}, ctrl.getHedger())
}
func TestRetrierConstruction(t *testing.T) {
cfg := Config{
Retry: RetrierConfig{
Strategy: "limited",
},
}
ctrl := NewController(cfg, log.NewNopLogger(), NewMetrics(t.Name(), cfg))
require.IsType(t, &NoopController{}, ctrl)
require.IsType(t, &LimitedRetrier{}, ctrl.getRetrier())
require.IsType(t, &NoopHedger{}, ctrl.getHedger())
}
func TestCombinedConstruction(t *testing.T) {
cfg := Config{
Controller: ControllerConfig{
Strategy: "aimd",
},
Retry: RetrierConfig{
Strategy: "limited",
},
}
ctrl := NewController(cfg, log.NewNopLogger(), NewMetrics(t.Name(), cfg))
require.IsType(t, &AIMDController{}, ctrl)
require.IsType(t, &LimitedRetrier{}, ctrl.getRetrier())
require.IsType(t, &NoopHedger{}, ctrl.getHedger())
}
func TestHedgerConstruction(t *testing.T) {
//cfg := Config{
// Hedge: HedgerConfig{
// Strategy: "dont-hedge-retries",
// },
//}
// TODO(dannyk): implement hedging
t.Skip("hedging not yet implemented")
}