Example #1
0
func checkChildWorkUnits(t *testing.T, j *jobserver.JobServer, parent, child, workSpecName string, expected map[string]map[string]interface{}) {
	missing := make(map[string]struct{})
	for name := range expected {
		missing[name] = struct{}{}
	}
	units, msg, err := j.GetChildWorkUnits(parent)
	if !assert.NoError(t, err) {
		return
	}
	assert.Empty(t, msg)
	assert.Len(t, units, 1)
	if assert.Contains(t, units, child) {
		for _, unit := range units[child] {
			assert.Equal(t, child, unit["worker_id"])
			assert.Equal(t, workSpecName, unit["work_spec_name"])
			if assert.IsType(t, []byte{}, unit["work_unit_key"]) {
				bName := unit["work_unit_key"].([]byte)
				name := string(bName)
				if assert.Contains(t, expected, name) {
					assert.Equal(t, expected[name], unit["work_unit_data"])
				}
				assert.Contains(t, missing, name, "duplicate child work unit")
				delete(missing, name)
			}
		}
	}
	assert.Empty(t, missing)
}