package policy
import (
"testing"
buildapi "github.com/openshift/origin/pkg/build/api"
)
func TestParallelIsRunnableNewBuilds(t *testing.T) {
allNewBuilds := []buildapi.Build{
addBuild("build-1", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
addBuild("build-2", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
addBuild("build-3", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
}
client := newTestClient(allNewBuilds)
policy := ParallelPolicy{BuildLister: client, BuildUpdater: client}
for _, build := range allNewBuilds {
runnable, err := policy.IsRunnable(&build)
if err != nil {
t.Errorf("expected no error, got %v", err)
}
if !runnable {
t.Errorf("expected build %s runnable, is not", build.Name)
}
}
}
func TestParallelIsRunnableMixedBuilds(t *testing.T) {
mixedBuilds := []buildapi.Build{
addBuild("build-4", "sample-bc", buildapi.BuildPhaseRunning, buildapi.BuildRunPolicyParallel),
addBuild("build-6", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
addBuild("build-5", "sample-bc", buildapi.BuildPhasePending, buildapi.BuildRunPolicyParallel),
}
client := newTestClient(mixedBuilds)
policy := ParallelPolicy{BuildLister: client, BuildUpdater: client}
for _, build := range mixedBuilds {
runnable, err := policy.IsRunnable(&build)
if err != nil {
t.Errorf("expected no error, got %v", err)
}
if !runnable {
t.Errorf("expected build %s runnable, is not", build.Name)
}
}
}
func TestParallelIsRunnableWithSerialRunning(t *testing.T) {
mixedBuilds := []buildapi.Build{
addBuild("build-7", "sample-bc", buildapi.BuildPhaseRunning, buildapi.BuildRunPolicySerial),
addBuild("build-8", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
addBuild("build-9", "sample-bc", buildapi.BuildPhaseNew, buildapi.BuildRunPolicyParallel),
}
client := newTestClient(mixedBuilds)
policy := ParallelPolicy{BuildLister: client, BuildUpdater: client}
for _, build := range mixedBuilds {
runnable, err := policy.IsRunnable(&build)
if err != nil {
t.Errorf("expected no error, got %v", err)
}
if runnable {
t.Errorf("expected build %s as not runnable", build.Name)
}
}
}