protected abstract (IContentStore store, IStartupShutdown server) CreateStore(
     Context context,
     IRemoteFileCopier fileCopier,
     DisposableDirectory testDirectory,
     int index,
     int iteration,
     uint grpcPort);
Exemple #2
0
        internal DistributedCacheServiceArguments CreateDistributedCacheServiceArguments(
            IRemoteFileCopier copier,
            IContentCommunicationManager copyRequester,
            DistributedContentSettings dcs,
            HostInfo host,
            string cacheName,
            string cacheRootPath,
            uint grpcPort,
            int maxSizeQuotaMB,
            string dataRootPath,
            CancellationToken ct,
            int?bufferSizeForGrpcCopies,
            int?gzipBarrierSizeForGrpcCopies,
            LoggingSettings loggingSettings,
            ITelemetryFieldsProvider telemetryFieldsProvider)
        {
            var distributedCacheServiceHost = new EnvironmentVariableHost();

            var localCasSettings = LocalCasSettings.Default(
                maxSizeQuotaMB: maxSizeQuotaMB,
                cacheRootPath: cacheRootPath,
                cacheName: cacheName,
                grpcPort: grpcPort,
                grpcPortFileName: _scenario);

            localCasSettings.PreferredCacheDrive = new AbsolutePath(cacheRootPath).GetPathRoot();
            localCasSettings.ServiceSettings     = new LocalCasServiceSettings(60, scenarioName: _scenario, grpcPort: grpcPort, grpcPortFileName: _scenario, bufferSizeForGrpcCopies: bufferSizeForGrpcCopies, gzipBarrierSizeForGrpcCopies: gzipBarrierSizeForGrpcCopies);

            var config = new DistributedCacheServiceConfiguration(localCasSettings, dcs, loggingSettings);

            return(new DistributedCacheServiceArguments(_logger, copier, copyRequester, distributedCacheServiceHost, host, ct, dataRootPath, config, null)
            {
                TelemetryFieldsProvider = telemetryFieldsProvider,
            });
        }
        public DistributedContentCopier(
            DistributedContentStoreSettings settings,
            IAbsFileSystem fileSystem,
            IRemoteFileCopier fileCopier,
            IContentCommunicationManager copyRequester,
            IClock clock,
            ILogger logger)
        {
            Contract.Requires(settings != null);
            Contract.Requires(settings.ParallelHashingFileSizeBoundary >= -1);

            _settings         = settings;
            _remoteFileCopier = fileCopier;
            _copyRequester    = copyRequester;
            FileSystem        = fileSystem;
            _clock            = clock;

            var context = new Context(logger);

            _copyScheduler = settings.CopyScheduler.Create(context);
            if (_copyRequester is StartupShutdownSlimBase slimBase)
            {
                slimBase.StartupAsync(context).Result.ThrowIfFailure();
            }

            _retryIntervals = settings.RetryIntervalForCopies;
            _maxRetryCount  = settings.MaxRetryCount;
        }
Exemple #4
0
        public DistributedContentCopier(
            DistributedContentStoreSettings settings,
            IAbsFileSystem fileSystem,
            IRemoteFileCopier <T> fileCopier,
            IFileExistenceChecker <T> fileExistenceChecker,
            IContentCommunicationManager copyRequester,
            IPathTransformer <T> pathTransformer,
            IClock clock)
        {
            Contract.Requires(settings != null);
            Contract.Requires(settings.ParallelHashingFileSizeBoundary >= -1);

            _settings                   = settings;
            _remoteFileCopier           = fileCopier;
            _remoteFileExistenceChecker = fileExistenceChecker;
            _copyRequester              = copyRequester;
            _pathTransformer            = pathTransformer;
            FileSystem                  = fileSystem;
            _clock = clock;

            _ioGate = new SemaphoreSlim(_settings.MaxConcurrentCopyOperations);
            _proactiveCopyIoGate       = new SemaphoreSlim(_settings.MaxConcurrentProactiveCopyOperations);
            _retryIntervals            = settings.RetryIntervalForCopies;
            _maxRetryCount             = settings.MaxRetryCount;
            _timeoutForProactiveCopies = settings.TimeoutForProactiveCopies;
        }
 protected abstract TestServerProvider CreateStore(
     Context context,
     IRemoteFileCopier fileCopier,
     DisposableDirectory testDirectory,
     int index,
     int iteration,
     uint grpcPort);
 public TestDistributedContentCopier(
     AbsolutePath workingDirectory,
     DistributedContentStoreSettings settings,
     IAbsFileSystem fileSystem,
     IRemoteFileCopier fileCopier,
     IContentCommunicationManager copyRequester)
     : base(settings, fileSystem, fileCopier, copyRequester, TestSystemClock.Instance, TestGlobal.Logger)
 {
     Settings      = settings;
     WorkingFolder = workingDirectory;
 }
Exemple #7
0
 protected override async Task <CopyFileResult> CopyFileAsync(
     OperationContext context,
     IRemoteFileCopier copier,
     ContentLocation sourcePath,
     AbsolutePath destinationPath,
     long expectedContentSize,
     bool overwrite,
     CopyOptions options,
     CancellationToken cancellationToken)
 {
     // TODO: why the destination str
     using var destinationStream = FileSystem.OpenForWrite(destinationPath, sourcePath.Size, FileMode.Create, FileShare.None, FileOptions.None, 1024);
     return(await copier.CopyToAsync(context, sourcePath, destinationStream, options));
 }
 public TestDistributedContentCopier(
     AbsolutePath workingDirectory,
     DistributedContentStoreSettings settings,
     IAbsFileSystem fileSystem,
     IRemoteFileCopier <AbsolutePath> fileCopier,
     IFileExistenceChecker <AbsolutePath> fileExistenceChecker,
     IContentCommunicationManager copyRequester,
     IPathTransformer <AbsolutePath> pathTransformer)
     : base(settings, fileSystem, fileCopier, fileExistenceChecker, copyRequester, pathTransformer, TestSystemClock.Instance)
 {
     Settings        = settings;
     WorkingFolder   = workingDirectory;
     PathTransformer = pathTransformer as NoOpPathTransformer;
 }
        public DistributedContentCopier(
            DistributedContentStoreSettings settings,
            IAbsFileSystem fileSystem,
            IRemoteFileCopier fileCopier,
            IContentCommunicationManager copyRequester,
            IClock clock,
            ILogger logger)
        {
            Contract.Requires(settings.ParallelHashingFileSizeBoundary >= -1);

            _settings            = settings;
            _remoteFileCopier    = fileCopier;
            CommunicationManager = copyRequester;
            FileSystem           = fileSystem;
            _clock = clock;

            Context        = new Context(logger);
            _copyScheduler = settings.CopyScheduler.Create(Context);

            _retryIntervals = settings.RetryIntervalForCopies;
            _maxRetryCount  = settings.MaxRetryCount;
        }
 public TestContext(
     DistributedContentTests <TStore, TSession> testInstance,
     Context context,
     IRemoteFileCopier fileCopier,
     IList <DisposableDirectory> directories,
     IReadOnlyList <TestServerProvider> serverProviders,
     int iteration,
     int[] ports,
     bool traceStoreStatistics = false)
 {
     _testInstance         = testInstance;
     _traceStoreStatistics = traceStoreStatistics;
     Context         = context;
     StoreContexts   = serverProviders.Select((s, index) => new OperationContext(CreateContext(index, iteration))).ToArray();
     TestFileCopier  = fileCopier as TestFileCopier;
     FileCopier      = fileCopier;
     Directories     = directories;
     ServerProviders = serverProviders;
     Stores          = serverProviders.SelectList(s => s.Store);
     Servers         = serverProviders.Select(s => s.Server).ToList();
     Iteration       = iteration;
     Ports           = ports;
 }
        public DistributedContentCopier(
            DistributedContentStoreSettings settings,
            IAbsFileSystem fileSystem,
            IRemoteFileCopier fileCopier,
            IContentCommunicationManager copyRequester,
            IClock clock,
            ILogger logger)
        {
            Contract.Requires(settings != null);
            Contract.Requires(settings.ParallelHashingFileSizeBoundary >= -1);

            _settings         = settings;
            _remoteFileCopier = fileCopier;
            _copyRequester    = copyRequester;
            FileSystem        = fileSystem;
            _clock            = clock;

            _ioGate = new OrderedSemaphore(_settings.MaxConcurrentCopyOperations, _settings.OrderForCopies, new Context(logger));
            _proactiveCopyIoGate             = new OrderedSemaphore(_settings.MaxConcurrentProactiveCopyOperations, _settings.OrderForProactiveCopies, new Context(logger));
            _retryIntervals                  = settings.RetryIntervalForCopies;
            _maxRetryCount                   = settings.MaxRetryCount;
            _ioGateTimeoutForProactiveCopies = settings.ProactiveCopyIOGateTimeout;
        }
 public TestContext(
     Context context,
     IRemoteFileCopier fileCopier,
     IList <DisposableDirectory> directories,
     IList <(IContentStore store, IStartupShutdown server)> stores,
 public static Task <CopyFileResult> CopyToAsync <T>(this IRemoteFileCopier <T> remoteFileCopier, OperationContext context, T sourcePath, Stream destinationStream, long expectedContentSize)
     where T : PathBase
 {
     return(remoteFileCopier.CopyToAsync(context, sourcePath, destinationStream, expectedContentSize, options: default));
 }