private void SaveAndVerifyNotEmpty(ISiteModel model) { model.Machines.ForEach(x => model.MachinesTargetValues[x.InternalSiteModelMachineIndex]?.SaveMachineEventsToPersistentStore(model.PrimaryStorageProxy)); model.SaveToPersistentStoreForTAGFileIngest(model.PrimaryStorageProxy); model.PrimaryStorageProxy.Commit(); IsModelEmpty(model, false).Should().BeFalse(); }
public static void AddSingleSubGridWithPasses(ISiteModel siteModel, int cellX, int cellY, IEnumerable <CellPass>[,] passes) { // Construct the sub grid to hold the cell being tested var leaf = siteModel.Grid.ConstructPathToCell(cellX, cellY, SubGridPathConstructionType.CreateLeaf) as IServerLeafSubGrid; leaf.Should().NotBeNull(); leaf.AllocateLeafFullPassStacks(); leaf.CreateDefaultSegment(); leaf.AllocateFullPassStacks(leaf.Directory.SegmentDirectory.First()); leaf.AllocateLeafLatestPassGrid(); // Add the leaf to the site model existence map siteModel.ExistenceMap[leaf.OriginX >> SubGridTreeConsts.SubGridIndexBitsPerLevel, leaf.OriginY >> SubGridTreeConsts.SubGridIndexBitsPerLevel] = true; siteModel.Grid.CountLeafSubGridsInMemory().Should().Be(1); SubGridUtilities.SubGridDimensionalIterator((x, y) => { CellPass[] _passes = passes[x, y].ToArray(); byte subGridX = (byte)((cellX + x) & SubGridTreeConsts.SubGridLocalKeyMask); byte subGridY = (byte)((cellY + y) & SubGridTreeConsts.SubGridLocalKeyMask); foreach (var pass in _passes) { leaf.AddPass(subGridX, subGridY, pass); } // Assign global latest cell pass to the appropriate pass leaf.Directory.GlobalLatestCells[subGridX, subGridY] = _passes.Last(); // Ensure the pass data existence map records the existence of a non null value in the cell leaf.Directory.GlobalLatestCells.PassDataExistenceMap[subGridX, subGridY] = true; }); var siteModelExtent = siteModel.Grid.GetCellExtents(cellX, cellY); siteModelExtent.Include(siteModel.Grid.GetCellExtents(cellX + SubGridTreeConsts.SubGridTreeDimension, cellY + SubGridTreeConsts.SubGridTreeDimension)); siteModel.SiteModelExtent.Set(siteModelExtent.MinX, siteModelExtent.MinY, siteModelExtent.MaxX, siteModelExtent.MaxY); // Save the leaf information just created siteModel.Grid.SaveLeafSubGrid(leaf, siteModel.PrimaryStorageProxy, siteModel.PrimaryStorageProxy, new List <ISubGridSpatialAffinityKey>()); siteModel.SaveToPersistentStoreForTAGFileIngest(siteModel.PrimaryStorageProxy); }
public static void AddMultipleCellsWithPasses(ISiteModel siteModel, int cellX, int cellY, List <CellPass[]> passesList, int expectedCellCount = -1, int expectedPassCount = -1) { // Construct the sub grid to hold the cell being tested IServerLeafSubGrid leaf = siteModel.Grid.ConstructPathToCell(cellX, cellY, SubGridPathConstructionType.CreateLeaf) as IServerLeafSubGrid; leaf.Should().NotBeNull(); leaf.AllocateLeafFullPassStacks(); leaf.CreateDefaultSegment(); leaf.AllocateFullPassStacks(leaf.Directory.SegmentDirectory.First()); leaf.AllocateLeafLatestPassGrid(); // Add the leaf to the site model existence map siteModel.ExistenceMap[leaf.OriginX >> SubGridTreeConsts.SubGridIndexBitsPerLevel, leaf.OriginY >> SubGridTreeConsts.SubGridIndexBitsPerLevel] = true; long totalCells = 0; for (var i = 0; i < passesList.Count; i++) { //CellPass[] _passes = passes.ToArray(); byte subGridX = (byte)(cellX & SubGridTreeConsts.SubGridLocalKeyMask); byte subGridY = (byte)(cellY & SubGridTreeConsts.SubGridLocalKeyMask); foreach (var pass in passesList[i]) { leaf.AddPass(subGridX, subGridY, pass); } var cellPasses = leaf.Cells.PassesData[i].PassesData.ExtractCellPasses(subGridX, subGridY); if (expectedPassCount > -1) { ((int)cellPasses.PassCount).Should().Be(expectedPassCount); } // Assign global latest cell pass to the appropriate pass leaf.Directory.GlobalLatestCells[subGridX, subGridY] = cellPasses.Passes.Last(); // Ensure the pass data existence map records the existence of a non null value in the cell leaf.Directory.GlobalLatestCells.PassDataExistenceMap[subGridX, subGridY] = true; if (expectedCellCount > -1) { // Count the number of non-null elevation cells to verify a correct setup siteModel.Grid.Root.ScanSubGrids(siteModel.Grid.FullCellExtent(), x => { totalCells += leaf.Directory.GlobalLatestCells.PassDataExistenceMap.CountBits(); return(true); }); } siteModel.SiteModelExtent.Include(siteModel.Grid.GetCellExtents(cellX, cellY)); } totalCells.Should().Be(expectedCellCount); // Save the leaf information just created siteModel.Grid.SaveLeafSubGrid(leaf, siteModel.PrimaryStorageProxy, siteModel.PrimaryStorageProxy, new List <ISubGridSpatialAffinityKey>()); siteModel.SaveToPersistentStoreForTAGFileIngest(siteModel.PrimaryStorageProxy); }