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) }