influxdb/tsdb/engine/tsm1/scheduler_test.go

75 lines
1.8 KiB
Go

package tsm1
import "testing"
func TestScheduler_Runnable_Empty(t *testing.T) {
s := newScheduler(&compactionCounter{}, 1)
for i := 1; i < 5; i++ {
s.setDepth(i, 1)
level, runnable := s.next()
if exp, got := true, runnable; exp != got {
t.Fatalf("runnable(%d) mismatch: exp %v, got %v ", i, exp, got)
}
if exp, got := i, level; exp != got {
t.Fatalf("runnable(%d) mismatch: exp %v, got %v ", i, exp, got)
}
s.setDepth(i, 0)
}
}
func TestScheduler_Runnable_MaxConcurrency(t *testing.T) {
s := newScheduler(&compactionCounter{}, 1)
// level 1
s.activeCompactions = &compactionCounter{}
s.activeCompactions.l1 = 1
for i := 0; i <= 4; i++ {
_, runnable := s.next()
if exp, got := false, runnable; exp != got {
t.Fatalf("runnable mismatch: exp %v, got %v ", exp, got)
}
}
// level 2
s.activeCompactions = &compactionCounter{}
s.activeCompactions.l2 = 1
for i := 0; i <= 4; i++ {
_, runnable := s.next()
if exp, got := false, runnable; exp != got {
t.Fatalf("runnable mismatch: exp %v, got %v ", exp, got)
}
}
// level 3
s.activeCompactions = &compactionCounter{}
s.activeCompactions.l3 = 1
for i := 0; i <= 4; i++ {
_, runnable := s.next()
if exp, got := false, runnable; exp != got {
t.Fatalf("runnable mismatch: exp %v, got %v ", exp, got)
}
}
// optimize
s.activeCompactions = &compactionCounter{}
s.activeCompactions.optimize++
for i := 0; i <= 4; i++ {
_, runnable := s.next()
if exp, got := false, runnable; exp != got {
t.Fatalf("runnable mismatch: exp %v, got %v ", exp, got)
}
}
// full
s.activeCompactions = &compactionCounter{}
s.activeCompactions.full++
for i := 0; i <= 4; i++ {
_, runnable := s.next()
if exp, got := false, runnable; exp != got {
t.Fatalf("runnable mismatch: exp %v, got %v ", exp, got)
}
}
}