@@ -4,8 +4,6 @@ package terraform_test
44
55import (
66 "context"
7- "encoding/json"
8- "fmt"
97 "os"
108 "path/filepath"
119 "strings"
@@ -111,23 +109,26 @@ func TestTimingsFromProvision(t *testing.T) {
111109 // NOTE: These timings have been encoded to JSON format to make the tests more readable.
112110 initTimings := terraform_internal .ParseTimingLines (t , []byte (`{"start":"2025-10-22T17:48:29Z","end":"2025-10-22T17:48:31Z","action":"load","resource":"modules","stage":"init","state":"COMPLETED"}
113111{"start":"2025-10-22T17:48:29Z","end":"2025-10-22T17:48:29Z","action":"load","resource":"backend","stage":"init","state":"COMPLETED"}
114- {"start":"2025-10-22T17:48:31Z","end":"2025-10-22T17:48:34Z","action":"load","resource":"provider plugins","stage":"init","state":"COMPLETED"}
115- {}` ))
112+ {"start":"2025-10-22T17:48:31Z","end":"2025-10-22T17:48:34Z","action":"load","resource":"provider plugins","stage":"init","state":"COMPLETED"}` ))
116113 planTimings := terraform_internal .ParseTimingLines (t , []byte (`{"start":"2024-08-15T08:26:39.194726Z", "end":"2024-08-15T08:26:39.195836Z", "action":"read", "source":"coder", "resource":"data.coder_parameter.memory_size", "stage":"plan", "state":"COMPLETED"}
117114{"start":"2024-08-15T08:26:39.194726Z", "end":"2024-08-15T08:26:39.195712Z", "action":"read", "source":"coder", "resource":"data.coder_provisioner.me", "stage":"plan", "state":"COMPLETED"}
118115{"start":"2024-08-15T08:26:39.194726Z", "end":"2024-08-15T08:26:39.195820Z", "action":"read", "source":"coder", "resource":"data.coder_workspace.me", "stage":"plan", "state":"COMPLETED"}` ))
119116 applyTimings := terraform_internal .ParseTimingLines (t , []byte (`{"start":"2024-08-15T08:26:39.616546Z", "end":"2024-08-15T08:26:39.618045Z", "action":"create", "source":"coder", "resource":"coder_agent.main", "stage":"apply", "state":"COMPLETED"}
120117{"start":"2024-08-15T08:26:39.626722Z", "end":"2024-08-15T08:26:39.669954Z", "action":"create", "source":"docker", "resource":"docker_image.main", "stage":"apply", "state":"COMPLETED"}
121118{"start":"2024-08-15T08:26:39.627335Z", "end":"2024-08-15T08:26:39.660616Z", "action":"create", "source":"docker", "resource":"docker_volume.home_volume", "stage":"apply", "state":"COMPLETED"}
122119{"start":"2024-08-15T08:26:39.682223Z", "end":"2024-08-15T08:26:40.186482Z", "action":"create", "source":"docker", "resource":"docker_container.workspace[0]", "stage":"apply", "state":"COMPLETED"}` ))
123- graphTimings := terraform_internal .ParseTimingLines (t , []byte (`{"start":"2000-01-01T01:01:01.123456Z", "end":"2000-01-01T01:01:01.123456Z", "action":"building terraform dependency graph", "source":"terraform", "resource":"state file", "stage":"graph", "state":"COMPLETED"}` ))
124- graphTiming := graphTimings [0 ]
120+ // Graphing is omitted as it is captured by the stage timing, which uses now()
125121
122+ totals := make (map [string ]int )
126123 for _ , ti := range timings {
127- msg , _ := json .Marshal (ti )
128- fmt .Println (string (msg ))
124+ totals [ti .Stage ]++
129125 }
130- require .Len (t , timings , len (initTimings )+ len (planTimings )+ len (applyTimings )+ len (graphTimings ))
126+ require .Equal (t , totals ["init" ], len (initTimings ), "init" )
127+ require .Equal (t , totals ["plan" ], len (planTimings ), "plan" )
128+ require .Equal (t , totals ["apply" ], len (applyTimings ), "apply" )
129+
130+ // Lastly total
131+ require .Len (t , timings , len (initTimings )+ len (planTimings )+ len (applyTimings ))
131132
132133 // init/graph timings are computed dynamically during provisioning whereas plan/apply come from the logs (fixtures) in
133134 // provisioner/terraform/testdata/timings-aggregation/fake-terraform.sh.
@@ -142,9 +143,6 @@ func TestTimingsFromProvision(t *testing.T) {
142143 case string (database .ProvisionerJobTimingStageInit ):
143144 require .True (t , terraform_internal .TimingsAreEqual (t , []* proto.Timing {initTimings [iCursor ]}, []* proto.Timing {tim }))
144145 iCursor ++
145- case string (database .ProvisionerJobTimingStageGraph ):
146- tim .Start , tim .End = graphTiming .Start , graphTiming .End
147- require .True (t , terraform_internal .TimingsAreEqual (t , []* proto.Timing {graphTiming }, []* proto.Timing {tim }))
148146 case string (database .ProvisionerJobTimingStagePlan ):
149147 require .True (t , terraform_internal .TimingsAreEqual (t , []* proto.Timing {planTimings [pCursor ]}, []* proto.Timing {tim }))
150148 pCursor ++
0 commit comments