示例#1
0
 public void ClearAthletes()
 {
     try
     {
         mutex.EnterWriteLock();
         allAthletesIds.Clear();
         individualAthletes.Clear();
         foreach (string filename in dataFolder.GetFiles().Where(IsAthleteFileName).ToList())
         {
             dataFolder.Delete(filename);
         }
     }
     finally
     {
         mutex.ExitWriteLock();
     }
 }
示例#2
0
        public void MyClassInitialize()
        {
            lock (GetType())
            {
                if (_emptyDataFolder == null)
                {
                    const int itemsCount = 100000;
                    _daysPerFile = ((double)_dataItemsPerFile) * _itemsIntervalMinutes / 60.0 / 24.0;
                    // 200 * 20 minutes = 8000 minutes per file (5.55556 days)

                    DateTime firstTime = DateTime.Now.AddDays(-10);
                    _firstDataItemTime = firstTime;
                    //_expectedFileCount = (int)Math.Ceiling((double)itemsCount / (double)_dataItemsPerFile);

                    IFolder targetFolder     = (IFolder)FixtureRootRepoFolder;
                    string  targetFolderPath = targetFolder.FullPath;

                    targetFolder.Properties.DesiredItemsPerFile = _dataItemsPerFile;
                    using (IRepositoryWriter writer = targetFolder.GetWriter())
                    {
                        DateTime lastTime = DateTime.MinValue;
                        int      n;
                        for (n = 0; n < itemsCount; ++n)
                        {
                            Mock.TestDataItem item = Mock.TestDataItem.GetTestItem(n);
                            lastTime      = firstTime.AddMinutes(n * _itemsIntervalMinutes);
                            item.DateTime = lastTime;
                            writer.Write(item);
                        }

                        _lastDataItemTime = lastTime;

                        writer.Flush();
                        writer.Close();
                    }

                    for (
                        var dataFile = targetFolder.RootDataFolder.FindFirstDataFile(false);
                        dataFile != null;
                        dataFile = dataFile.GetNext(false), ++_expectedFileCount
                        )
                    {
                    }

                    Console.WriteLine("Expected file count enumerated via RepositoryFile: {0}", _expectedFileCount);

                    // data folder boundaries may split data files thus extra ones
                    Assert.GreaterOrEqual(_expectedFileCount, (int)Math.Ceiling((double)itemsCount / (double)_dataItemsPerFile), "Data file count unexpected");

                    // creating empty folder
                    IRepositoryFile file = targetFolder.RootDataFolder.Seek(firstTime.AddMinutes(itemsCount * _itemsIntervalMinutes / 3), false);
                    _emptyDataFolder = file.ContainingFolder;

                    for (
                        file = _emptyDataFolder.FindFirstDataFile(false);
                        file != null && file.ContainingFolder == _emptyDataFolder;
                        file = file.GetNext(false))
                    {
                        file.Delete();
                        --_expectedFileCount;
                    }

                    Assert.AreEqual(0, _emptyDataFolder.DataFileBrowser.FileCount);

                    Console.WriteLine("Expected file count after removing file by file: {0}", _expectedFileCount);

                    //
                    IDataFolder dfolderToDelete = _emptyDataFolder.ParentDataFolder.GetNextSiblingInTree(false).GetNextSiblingInTree(false);

                    Assert.AreEqual(1, dfolderToDelete.Level);

                    _deletedDataFolder = new RepoFileContainerDescriptor()
                    {
                        Start        = dfolderToDelete.Start,
                        End          = dfolderToDelete.End,
                        Level        = dfolderToDelete.Level,
                        RelativePath = dfolderToDelete.RelativePath
                    };

                    _expectedFileCount -= dfolderToDelete.GetSubfolders(DateTime.MinValue, false).Sum((f) => f.DataFileBrowser.FileCount);

                    Console.WriteLine("Expected file count after removing data folder {0}: {1}", dfolderToDelete.PathInRepository, _expectedFileCount);

                    Console.WriteLine("Removing folder {0}", dfolderToDelete.PathInRepository);

                    dfolderToDelete.Delete(false);

                    Assert.IsFalse(dfolderToDelete.Exists);
                }
            }             //lock
        }