MCPcopy Index your code
hub / github.com/coder/coder / TestGraph

Function TestGraph

agent/unit/graph_test.go:96–229  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

94}
95
96func TestGraph(t *testing.T) {
97 t.Parallel()
98
99 testFuncs := map[string]func(t *testing.T) *unit.Graph[testGraphEdge, *testGraphVertex]{
100 "ForwardAndReverseEdges": func(t *testing.T) *unit.Graph[testGraphEdge, *testGraphVertex] {
101 graph := &unit.Graph[testGraphEdge, *testGraphVertex]{}
102 unit1 := &testGraphVertex{Name: "unit1"}
103 unit2 := &testGraphVertex{Name: "unit2"}
104 unit3 := &testGraphVertex{Name: "unit3"}
105 err := graph.AddEdge(unit1, unit2, testEdgeCompleted)
106 require.NoError(t, err)
107 err = graph.AddEdge(unit1, unit3, testEdgeStarted)
108 require.NoError(t, err)
109
110 // Check for forward edge
111 vertices := graph.GetForwardAdjacentVertices(unit1)
112 require.Len(t, vertices, 2)
113 // Unit 1 depends on the completion of Unit2
114 require.Contains(t, vertices, testEdge{
115 From: unit1,
116 To: unit2,
117 Edge: testEdgeCompleted,
118 })
119 // Unit 1 depends on the start of Unit3
120 require.Contains(t, vertices, testEdge{
121 From: unit1,
122 To: unit3,
123 Edge: testEdgeStarted,
124 })
125
126 // Check for reverse edges
127 unit2ReverseEdges := graph.GetReverseAdjacentVertices(unit2)
128 require.Len(t, unit2ReverseEdges, 1)
129 // Unit 2 must be completed before Unit 1 can start
130 require.Contains(t, unit2ReverseEdges, testEdge{
131 From: unit1,
132 To: unit2,
133 Edge: testEdgeCompleted,
134 })
135
136 unit3ReverseEdges := graph.GetReverseAdjacentVertices(unit3)
137 require.Len(t, unit3ReverseEdges, 1)
138 // Unit 3 must be started before Unit 1 can complete
139 require.Contains(t, unit3ReverseEdges, testEdge{
140 From: unit1,
141 To: unit3,
142 Edge: testEdgeStarted,
143 })
144
145 return graph
146 },
147 "SelfReference": func(t *testing.T) *testGraph {
148 graph := &testGraph{}
149 unit1 := &testGraphVertex{Name: "unit1"}
150 err := graph.AddEdge(unit1, unit1, testEdgeCompleted)
151 require.ErrorIs(t, err, unit.ErrCycleDetected)
152
153 return graph

Callers

nothing calls this directly

Calls 7

assertDOTGraphFunction · 0.85
AddEdgeMethod · 0.80
RunMethod · 0.65
LenMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected