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

Function TestManager_MultipleDependencies

agent/unit/manager_test.go:518–670  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

516}
517
518func TestManager_MultipleDependencies(t *testing.T) {
519 t.Parallel()
520
521 t.Run("UnitWithMultipleDependencies", func(t *testing.T) {
522 t.Parallel()
523
524 manager := unit.NewManager()
525
526 // Register all units
527 units := []unit.ID{unitA, unitB, unitC, unitD}
528 for _, unit := range units {
529 err := manager.Register(unit)
530 require.NoError(t, err)
531 }
532
533 // A depends on B being unit.StatusStarted AND C being "started"
534 err := manager.AddDependency(unitA, unitB, unit.StatusStarted)
535 require.NoError(t, err)
536 err = manager.AddDependency(unitA, unitC, unit.StatusStarted)
537 require.NoError(t, err)
538
539 // A should not be ready (depends on both B and C)
540 isReady, err := manager.IsReady(unitA)
541 require.NoError(t, err)
542 assert.False(t, isReady)
543
544 // Update B to unit.StatusStarted - A should still not be ready (needs C too)
545 err = manager.UpdateStatus(unitB, unit.StatusStarted)
546 require.NoError(t, err)
547
548 isReady, err = manager.IsReady(unitA)
549 require.NoError(t, err)
550 assert.False(t, isReady)
551
552 // Update C to "started" - A should now be ready
553 err = manager.UpdateStatus(unitC, unit.StatusStarted)
554 require.NoError(t, err)
555
556 isReady, err = manager.IsReady(unitA)
557 require.NoError(t, err)
558 assert.True(t, isReady)
559 })
560
561 t.Run("ComplexDependencyChain", func(t *testing.T) {
562 t.Parallel()
563
564 manager := unit.NewManager()
565
566 // Register all units
567 units := []unit.ID{unitA, unitB, unitC, unitD}
568 for _, unit := range units {
569 err := manager.Register(unit)
570 require.NoError(t, err)
571 }
572
573 // Create complex dependency graph:
574 // A depends on B being unit.StatusStarted AND C being "started"
575 err := manager.AddDependency(unitA, unitB, unit.StatusStarted)

Callers

nothing calls this directly

Calls 6

RegisterMethod · 0.95
AddDependencyMethod · 0.95
IsReadyMethod · 0.95
UpdateStatusMethod · 0.95
NewManagerFunction · 0.92
RunMethod · 0.65

Tested by

no test coverage detected