75 lines
1.8 KiB
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)
|
|
}
|
|
}
|
|
}
|