EnvManager: fix race condition in test
Refactor EnvManager so it takes TaskManager as an input.
This way clients can interject created tasks and install listeners.
Change-Id: Ief332060aea9e98587b43d04d68a4640717d18cd
diff --git a/core/installer/tasks/manager.go b/core/installer/tasks/manager.go
new file mode 100644
index 0000000..3dddccb
--- /dev/null
+++ b/core/installer/tasks/manager.go
@@ -0,0 +1,34 @@
+package tasks
+
+import (
+ "fmt"
+)
+
+type TaskManager interface {
+ Add(name string, task Task) error
+ Get(name string) (Task, error)
+}
+
+type TaskMap struct {
+ t map[string]Task
+}
+
+func NewTaskMap() *TaskMap {
+ return &TaskMap{make(map[string]Task)}
+}
+
+func (m *TaskMap) Add(name string, task Task) error {
+ if _, ok := m.t[name]; ok {
+ return fmt.Errorf("already exists")
+ }
+ m.t[name] = task
+ return nil
+}
+
+func (m *TaskMap) Get(name string) (Task, error) {
+ if t, ok := m.t[name]; ok {
+ return t, nil
+ } else {
+ return nil, fmt.Errorf("does not exist")
+ }
+}