diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..52d55de --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ + +.PHONY: run +run: + go run cmd/agent/main.go + +lint: + golangci-lint run \ No newline at end of file diff --git a/internal/agent/agent.go b/internal/agent/agent.go index 9ad8e83..7916f9b 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -323,12 +323,18 @@ func (a *computeBladeAgentImpl) Close() error { // runTopLedEngine runs the top LED engine func (a *computeBladeAgentImpl) runTopLedEngine(ctx context.Context) error { // FIXME the top LED is only used to indicate emergency situations - a.edgeLedEngine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{})) + err := a.edgeLedEngine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{})) + if err != nil { + return err + } return a.edgeLedEngine.Run(ctx) } // runEdgeLedEngine runs the edge LED engine func (a *computeBladeAgentImpl) runEdgeLedEngine(ctx context.Context) error { - a.edgeLedEngine.SetPattern(ledengine.NewStaticPattern(a.opts.IdleLedColor)) + err := a.edgeLedEngine.SetPattern(ledengine.NewStaticPattern(a.opts.IdleLedColor)) + if err != nil { + return err + } return a.edgeLedEngine.Run(ctx) } diff --git a/pkg/hal/hal_bcm283x_simulated.go b/pkg/hal/hal_bcm283x_simulated.go index 5e4fb7f..1ca354d 100644 --- a/pkg/hal/hal_bcm283x_simulated.go +++ b/pkg/hal/hal_bcm283x_simulated.go @@ -21,6 +21,9 @@ func NewCm4Hal(opts ComputeBladeHalOpts) (ComputeBladeHal, error) { logger := zap.L().Named("hal").Named("simulated-cm4") logger.Warn("Using simulated hal") + computeModule.WithLabelValues("simulated").Set(1) + fanUnit.WithLabelValues("simulated").Set(1) + return &SimulatedHal{ logger: logger, }, nil @@ -32,6 +35,8 @@ func (m *SimulatedHal) Close() error { func (m *SimulatedHal) SetFanSpeed(percent uint8) error { m.logger.Info("SetFanSpeed", zap.Uint8("percent", percent)) + fanSpeedTargetPercent.Set(float64(percent)) + fanSpeed.Set(2500 * (float64(percent) / 100)) return nil } @@ -40,12 +45,18 @@ func (m *SimulatedHal) GetFanRPM() (float64, error) { } func (m *SimulatedHal) SetStealthMode(enabled bool) error { + if enabled { + stealthModeEnabled.Set(1) + } else { + stealthModeEnabled.Set(0) + } m.logger.Info("SetStealthMode", zap.Bool("enabled", enabled)) return nil } func (m *SimulatedHal) GetPowerStatus() (PowerStatus, error) { m.logger.Info("GetPowerStatus") + powerStatus.WithLabelValues("simulated").Set(1) return PowerPoe802at, nil } @@ -55,11 +66,13 @@ func (m *SimulatedHal) WaitForEdgeButtonPress(ctx context.Context) error { case <-ctx.Done(): return ctx.Err() case <-time.After(5 * time.Second): + edgeButtonEventCount.Inc() return nil } } func (m *SimulatedHal) SetLed(idx uint, color LedColor) error { + ledColorChangeEventCount.Inc() m.logger.Info("SetLed", zap.Uint("idx", idx), zap.Any("color", color)) return nil } diff --git a/pkg/ledengine/ledengine_test.go b/pkg/ledengine/ledengine_test.go index 8e0f824..1185fc6 100644 --- a/pkg/ledengine/ledengine_test.go +++ b/pkg/ledengine/ledengine_test.go @@ -172,7 +172,8 @@ func Test_LedEngine_SetPattern_WhileRunning(t *testing.T) { go func() { defer wg.Done() t.Log("LedEngine.Run() started") - engine.Run(ctx) + err := engine.Run(ctx) + assert.ErrorIs(t, err, context.Canceled) t.Log("LedEngine.Run() exited") }() @@ -181,7 +182,8 @@ func Test_LedEngine_SetPattern_WhileRunning(t *testing.T) { // Set pattern t.Log("Setting pattern") - engine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{Red: 255})) + err := engine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{Red: 255})) + assert.NoError(t, err) t.Log("Canceling context") cancel() @@ -210,7 +212,8 @@ func Test_LedEngine_SetPattern_BeforeRun(t *testing.T) { engine := ledengine.NewLedEngine(opts) // We want to change the pattern BEFORE the engine is started t.Log("Setting pattern") - engine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{Red: 255})) + err := engine.SetPattern(ledengine.NewStaticPattern(hal.LedColor{Red: 255})) + assert.NoError(t, err) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) defer cancel() @@ -220,7 +223,8 @@ func Test_LedEngine_SetPattern_BeforeRun(t *testing.T) { go func() { defer wg.Done() t.Log("LedEngine.Run() started") - engine.Run(ctx) + err := engine.Run(ctx) + assert.ErrorIs(t, err, context.DeadlineExceeded) t.Log("LedEngine.Run() exited") }()