@@ -2,6 +2,7 @@ package test
22
33import (
44 "fmt"
5+ "sync"
56 "time"
67
78 "github.com/ethpandaops/assertoor/pkg/coordinator/db"
@@ -15,9 +16,11 @@ import (
1516type dbTest struct {
1617 database * db.Database
1718
18- runID int
19- testRun * db.TestRun
20- taskIndex []* db.TaskStateIndex
19+ runID int
20+ testRun * db.TestRun
21+
22+ taskIndexMtx sync.Mutex
23+ taskIndex []* db.TaskStateIndex
2124}
2225
2326func LoadTestFromDB (database * db.Database , runID int ) (types.Test , error ) {
@@ -27,19 +30,21 @@ func LoadTestFromDB(database *db.Database, runID int) (types.Test, error) {
2730 return nil , err
2831 }
2932
30- taskIndex , err := database .GetTaskStateIndex (runID )
31- if err != nil {
32- return nil , err
33- }
34-
3533 return & dbTest {
36- database : database ,
37- runID : runID ,
38- testRun : testRun ,
39- taskIndex : taskIndex ,
34+ database : database ,
35+ runID : runID ,
36+ testRun : testRun ,
4037 }, nil
4138}
4239
40+ func WrapDBTestRun (database * db.Database , test * db.TestRun ) types.Test {
41+ return & dbTest {
42+ database : database ,
43+ runID : test .RunID ,
44+ testRun : test ,
45+ }
46+ }
47+
4348func (dbt * dbTest ) RunID () uint64 {
4449 return uint64 (dbt .runID )
4550}
@@ -75,10 +80,29 @@ func (dbt *dbTest) GetTaskScheduler() types.TaskScheduler {
7580func (dbt * dbTest ) AbortTest (_ bool ) {}
7681
7782func (dbt * dbTest ) GetTaskCount () int {
83+ dbt .loadTaskIndex ()
7884 return len (dbt .taskIndex )
7985}
8086
87+ func (dbt * dbTest ) loadTaskIndex () {
88+ dbt .taskIndexMtx .Lock ()
89+ defer dbt .taskIndexMtx .Unlock ()
90+
91+ if dbt .taskIndex != nil {
92+ return
93+ }
94+
95+ taskIndex , err := dbt .database .GetTaskStateIndex (dbt .runID )
96+ if err != nil {
97+ return
98+ }
99+
100+ dbt .taskIndex = taskIndex
101+ }
102+
81103func (dbt * dbTest ) GetAllTasks () []types.TaskIndex {
104+ dbt .loadTaskIndex ()
105+
82106 taskIDs := make ([]types.TaskIndex , 0 )
83107
84108 for _ , task := range dbt .taskIndex {
@@ -93,6 +117,8 @@ func (dbt *dbTest) GetAllTasks() []types.TaskIndex {
93117}
94118
95119func (dbt * dbTest ) GetRootTasks () []types.TaskIndex {
120+ dbt .loadTaskIndex ()
121+
96122 taskIDs := make ([]types.TaskIndex , 0 )
97123
98124 for _ , task := range dbt .taskIndex {
@@ -111,6 +137,8 @@ func (dbt *dbTest) GetRootTasks() []types.TaskIndex {
111137}
112138
113139func (dbt * dbTest ) GetAllCleanupTasks () []types.TaskIndex {
140+ dbt .loadTaskIndex ()
141+
114142 taskIDs := make ([]types.TaskIndex , 0 )
115143
116144 for _ , task := range dbt .taskIndex {
@@ -125,6 +153,8 @@ func (dbt *dbTest) GetAllCleanupTasks() []types.TaskIndex {
125153}
126154
127155func (dbt * dbTest ) GetRootCleanupTasks () []types.TaskIndex {
156+ dbt .loadTaskIndex ()
157+
128158 taskIDs := make ([]types.TaskIndex , 0 )
129159
130160 for _ , task := range dbt .taskIndex {
0 commit comments