The machine state server is a centralized management application for device testing.
See the Design Doc.
The main code is structure as:
go/machine/ source/ processor/ store/
Where:
types
contains the Go types used across the rest of the modules.source
module contains source.Source
, a way to get update events from machines.store
module contains store.Store
, a way to persist and retrieve each machines state.processor
module contains processor.Processor
, a way to update a machine state from an incoming event.The main loop of machine state server looks like:
for event := range eventCh { store.Update(ctx, event.Host.Name, func(previous machine.Description) machine.Description { return processor.Process(ctx, previous, event) }) }