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 aSource { machineID := idFromEvent(event) currentDescription := aStore.Get(machineID) newDescription = aProcessor.Process(event, currentDescription) aStore.Put(machineID, newDescription) }