コード例 #1
0
ファイル: work_unit.go プロジェクト: diffeo/go-coordinate
// TestWorkUnitPrioritySet tests two different ways of setting work unit
// priority.
func TestWorkUnitPrioritySet(t *testing.T) {
	var (
		err  error
		unit coordinate.WorkUnit
	)
	sts := SimpleTestSetup{
		NamespaceName: "TestWorkUnitPrioritySet",
		WorkerName:    "worker",
		WorkSpecName:  "spec",
	}
	sts.SetUp(t)
	defer sts.TearDown(t)

	unit, err = sts.WorkSpec.AddWorkUnit("a", map[string]interface{}{}, coordinate.WorkUnitMeta{})
	if assert.NoError(t, err) {
		UnitHasPriority(t, unit, 0.0)
	}

	unit, err = sts.WorkSpec.AddWorkUnit("b", map[string]interface{}{}, coordinate.WorkUnitMeta{})
	if assert.NoError(t, err) {
		err = unit.SetPriority(10.0)
		if assert.NoError(t, err) {
			UnitHasPriority(t, unit, 10.0)
		}
	}

	unit, err = sts.WorkSpec.AddWorkUnit("c", map[string]interface{}{}, coordinate.WorkUnitMeta{})
	assert.NoError(t, err)
	err = sts.WorkSpec.SetWorkUnitPriorities(coordinate.WorkUnitQuery{
		Names: []string{"c"},
	}, 20.0)
	if assert.NoError(t, err) {
		UnitHasPriority(t, unit, 20.0)
	}

	unit, err = sts.WorkSpec.AddWorkUnit("d", map[string]interface{}{}, coordinate.WorkUnitMeta{})
	assert.NoError(t, err)
	err = sts.WorkSpec.AdjustWorkUnitPriorities(coordinate.WorkUnitQuery{
		Names: []string{"d"},
	}, 20.0)
	if assert.NoError(t, err) {
		UnitHasPriority(t, unit, 20.0)
	}
	err = sts.WorkSpec.AdjustWorkUnitPriorities(coordinate.WorkUnitQuery{
		Names: []string{"d"},
	}, 10.0)
	if assert.NoError(t, err) {
		UnitHasPriority(t, unit, 30.0)
	}

	unit, err = sts.WorkSpec.WorkUnit("b")
	if assert.NoError(t, err) {
		UnitHasPriority(t, unit, 10.0)
	}

	sts.CheckWorkUnitOrder(t, "d", "c", "b", "a")
}