@@ -32,10 +32,31 @@ var (
32
32
errFutureRevRespRequested = errors .New ("request about a future rev with response" )
33
33
)
34
34
35
- func validateLinearizableOperationsAndVisualize (lg * zap.Logger , operations []porcupine.Operation , timeout time.Duration ) (result porcupine.CheckResult , visualize func (basepath string ) error ) {
35
+ type Results struct {
36
+ Info porcupine.LinearizationInfo
37
+ Model porcupine.Model
38
+ Linearizable porcupine.CheckResult
39
+ Lg * zap.Logger // TODO: Remove logger from struct and instead of making it an argument for Visualize
40
+ }
41
+
42
+ func (r Results ) Visualize (path string ) error {
43
+ r .Lg .Info ("Saving visualization" , zap .String ("path" , path ))
44
+ err := porcupine .VisualizePath (r .Model , r .Info , path )
45
+ if err != nil {
46
+ return fmt .Errorf ("failed to visualize, err: %w" , err )
47
+ }
48
+ return nil
49
+ }
50
+
51
+ func validateLinearizableOperationsAndVisualize (
52
+ lg * zap.Logger ,
53
+ operations []porcupine.Operation ,
54
+ timeout time.Duration ,
55
+ ) (results Results ) {
36
56
lg .Info ("Validating linearizable operations" , zap .Duration ("timeout" , timeout ))
37
57
start := time .Now ()
38
58
result , info := porcupine .CheckOperationsVerbose (model .NonDeterministicModel , operations , timeout )
59
+
39
60
switch result {
40
61
case porcupine .Illegal :
41
62
lg .Error ("Linearization failed" , zap .Duration ("duration" , time .Since (start )))
@@ -46,13 +67,11 @@ func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []por
46
67
default :
47
68
panic (fmt .Sprintf ("Unknown Linearization result %s" , result ))
48
69
}
49
- return result , func (path string ) error {
50
- lg .Info ("Saving visualization" , zap .String ("path" , path ))
51
- err := porcupine .VisualizePath (model .NonDeterministicModel , info , path )
52
- if err != nil {
53
- return fmt .Errorf ("failed to visualize, err: %w" , err )
54
- }
55
- return nil
70
+ return Results {
71
+ Info : info ,
72
+ Model : model .NonDeterministicModel ,
73
+ Linearizable : result ,
74
+ Lg : lg ,
56
75
}
57
76
}
58
77
0 commit comments