This commit is contained in:
@@ -100,8 +100,8 @@ func legalTransition(from, to domain.SystemState) bool {
|
||||
}
|
||||
allowed := map[domain.SystemState][]domain.SystemState{
|
||||
domain.StateInit: {domain.StateSyncInstruments, domain.StateWaitExitWindow, domain.StatePlaceExitOrders, domain.StateMonitorExitOrders, domain.StateGenerateSignals, domain.StatePlaceEntryOrders, domain.StateHoldOvernight, domain.StateReconcile, domain.StateSleep},
|
||||
domain.StateSyncInstruments: {domain.StateSyncMarketData},
|
||||
domain.StateSyncMarketData: {domain.StateGenerateSignals},
|
||||
domain.StateSyncInstruments: {domain.StateSyncMarketData, domain.StateInit},
|
||||
domain.StateSyncMarketData: {domain.StateGenerateSignals, domain.StateInit},
|
||||
domain.StateGenerateSignals: {domain.StateWaitEntryWindow, domain.StatePlaceEntryOrders, domain.StateHoldOvernight, domain.StateSleep},
|
||||
domain.StateWaitEntryWindow: {domain.StatePlaceEntryOrders, domain.StateSleep},
|
||||
domain.StatePlaceEntryOrders: {domain.StateMonitorEntryOrders, domain.StateHoldOvernight, domain.StateWaitExitWindow, domain.StatePlaceExitOrders, domain.StateMonitorExitOrders, domain.StateReconcile},
|
||||
|
||||
@@ -77,6 +77,18 @@ func TestCalendarRecoveryAllowsRestartInsideExitWindow(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncStatesCanRecoverToInit(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
repo := testutil.NewMemoryRepository()
|
||||
system := New(repo, domain.ModePaper)
|
||||
if err := system.Transition(ctx, domain.StateSyncInstruments, domain.StateInit); err != nil {
|
||||
t.Fatalf("SYNC_INSTRUMENTS -> INIT should be legal recovery: %v", err)
|
||||
}
|
||||
if err := system.Transition(ctx, domain.StateSyncMarketData, domain.StateInit); err != nil {
|
||||
t.Fatalf("SYNC_MARKET_DATA -> INIT should be legal recovery: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRecoverFromMonitorEntryHaltsOnCriticalReconciliationDiff(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
repo := testutil.NewMemoryRepository()
|
||||
|
||||
Reference in New Issue
Block a user