/// <summary> /// Defines the phase state transitions /// </summary> private static RebuildSiteModelPhase NextPhase(RebuildSiteModelPhase phase) { return(phase switch { RebuildSiteModelPhase.Unknown => RebuildSiteModelPhase.Deleting, RebuildSiteModelPhase.Deleting => RebuildSiteModelPhase.Scanning, RebuildSiteModelPhase.Scanning => RebuildSiteModelPhase.Submitting, RebuildSiteModelPhase.Submitting => RebuildSiteModelPhase.Monitoring, RebuildSiteModelPhase.Monitoring => RebuildSiteModelPhase.Completion, RebuildSiteModelPhase.Completion => RebuildSiteModelPhase.Complete, RebuildSiteModelPhase.Complete => RebuildSiteModelPhase.Unknown, _ => throw new TRexException($"Unknown rebuild site model phase {phase}") });
public async void BeginOperations_RestartInProgressProjects(RebuildSiteModelPhase phase) { var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel(); siteModel.SaveMetadataToPersistentStore(siteModel.PrimaryStorageProxy, true); // Add metadata for an existing Complete project and ensure no rebuilder is constructed for it var metadataCache = DIContext.Obtain <Func <RebuildSiteModelCacheType, IStorageProxyCacheCommit> >()(RebuildSiteModelCacheType.Metadata) as IStorageProxyCache <INonSpatialAffinityKey, IRebuildSiteModelMetaData>; metadataCache?.Put(new NonSpatialAffinityKey(siteModel.ID, SiteModelRebuilder.MetadataKeyName), new RebuildSiteModelMetaData { ProjectUID = siteModel.ID, Phase = phase }); var manager = new SiteModelRebuilderManager(); await manager.BeginOperations(); manager.GetRebuildersState().Count.Should().Be(1); }
/// <summary> /// Moves the metadata to the next phases in the process /// </summary> private void UpdatePhase(RebuildSiteModelPhase phase) { _metadata.Phase = phase; UpdateMetaData(); }