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)
})
}