示例#1
0
        public void ToString_Shows_Values(
            bool quietOption,
            bool recurseOption,
            bool scanOption,
            IgnoreFlags ignoreFlags,
            GroupStrategy groupStrategy,
            TargetFilenameStrategy targetFilenameStrategy)
        {
            if (quietOption)
            {
                return;
            }

            // arrange
            var src = Guid.NewGuid().ToString();
            var tgt = Guid.NewGuid().ToString();

            var newName = targetFilenameStrategy == TargetFilenameStrategy.New
                ? "NewImage" : null;

            // arrange and act
            var options = new Options(
                recurseOption,
                false,
                scanOption,
                ignoreFlags,
                groupStrategy,
                targetFilenameStrategy,
                newName,
                src,
                tgt);

            // act
            var text = options.ToString();

            var lines = text.Split(
                new []
            {
                '\r',
                '\n'
            });
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Options"/> class.
        /// </summary>
        /// <param name="directoryOnly">The recurse subdirectories option.</param>
        /// <param name="quietMode">The quiet mode option.</param>
        /// <param name="scanOnly">The scan only option.</param>
        /// <param name="ignoreFlags">The ignore flags option.</param>
        /// <param name="groupStrategy">The grouping strategy option.</param>
        /// <param name="targetFilenameStrategy">The filename renaming strategy option.</param>
        /// <param name="newFilename">Name of the new file.</param>
        /// <param name="sourceDirectory">The source (Stellina USB drive) directory.</param>
        /// <param name="targetDirectory">The target directory.</param>
        public Options(
            bool directoryOnly,
            bool quietMode,
            bool scanOnly,
            IgnoreFlags ignoreFlags,
            GroupStrategy groupStrategy,
            TargetFilenameStrategy targetFilenameStrategy,
            string newFilename,
            string sourceDirectory,
            string targetDirectory)
        {
            if (!string.IsNullOrWhiteSpace(newFilename) &&
                targetFilenameStrategy != TargetFilenameStrategy.New)
            {
                throw new InvalidOperationException("New filename option is only valid when target filename strategy is set to 'New'.");
            }

            if (targetFilenameStrategy == TargetFilenameStrategy.New &&
                string.IsNullOrWhiteSpace(newFilename))
            {
                throw new InvalidOperationException("You must specify a new filename using the '-n' or '--new-filename' option when target filename strategy is set to 'New'.");
            }

            if (((int)ignoreFlags & (int)IgnoreFlags.Nothing) > 0 &&
                ignoreFlags != IgnoreFlags.Nothing)
            {
                throw new InvalidOperationException("Cannot use other ignores with 'Nothing'.");
            }

            DirectoryOnly          = directoryOnly;
            QuietMode              = quietMode;
            ScanOnly               = scanOnly;
            Ignore                 = ignoreFlags;
            GroupStrategy          = groupStrategy;
            TargetFilenameStrategy = targetFilenameStrategy;
            NewFilename            = newFilename;
            SourceDirectory        = sourceDirectory;
            TargetDirectory        = targetDirectory;
        }
示例#3
0
        public void Constructor_Sets_Values(
            bool quietMode,
            bool recurseOption,
            bool scanOption,
            IgnoreFlags ignoreFlags,
            GroupStrategy groupStrategy,
            TargetFilenameStrategy targetFilenameStrategy)
        {
            var src = Guid.NewGuid().ToString();
            var tgt = Guid.NewGuid().ToString();

            var newName = targetFilenameStrategy == TargetFilenameStrategy.New
                ? "NewImage" : null;

            // arrange and act
            var options = new Options(
                recurseOption,
                quietMode,
                scanOption,
                ignoreFlags,
                groupStrategy,
                targetFilenameStrategy,
                newName,
                src,
                tgt);

            // assert
            Assert.Equal(recurseOption, options.DirectoryOnly);
            Assert.Equal(quietMode, options.QuietMode);
            Assert.Equal(scanOption, options.ScanOnly);
            Assert.Equal(ignoreFlags, options.Ignore);
            Assert.Equal(groupStrategy, options.GroupStrategy);
            Assert.Equal(targetFilenameStrategy, options.TargetFilenameStrategy);
            Assert.Equal(newName, options.NewFilename);
            Assert.Equal(src, options.SourceDirectory);
            Assert.Equal(tgt, options.TargetDirectory);
        }
示例#4
0
        public async Task <Tuple <List <List <Transaction> >, Dictionary <Transaction, Exception> > > ProcessWithCoreCount(GroupStrategy strategy, int totalCores, int chainId, List <Transaction> transactions)
        {
            if (strategy == GroupStrategy.NaiveGroup)
            {
                return(await ProcessNaive(chainId, transactions));
            }
            else
            {
                if (transactions.Count == 0)
                {
                    return(new Tuple <List <List <Transaction> >, Dictionary <Transaction, Exception> >(new List <List <Transaction> >(), new Dictionary <Transaction, Exception>()));
                }

                if (totalCores <= 0)
                {
                    throw new InvalidParameterException("Total core count " + totalCores + " is invalid");
                }

                var groupResults = await ProcessNaive(chainId, transactions);

                List <List <Transaction> > mergedGroups;

                if (strategy == GroupStrategy.Limited_MaxAddMins)
                {
                    mergedGroups = ProcessWithCoreCount_MaxAddMins(totalCores, groupResults.Item1);
                }
                else if (strategy == GroupStrategy.Limited_MinsAddUp)
                {
                    mergedGroups = ProcessWithCoreCount_MinsAddUp(totalCores, groupResults.Item1);
                }
                else
                {
                    mergedGroups = groupResults.Item1;
                    Logger.LogError("Grouper: unsupported strategy: " + strategy);
                }

                Logger.LogInformation(string.Format(
                                          "Grouper on chainId [{0}] merge {1} groups into {2} groups with sizes [{3}]", chainId,
                                          groupResults.Item1.Count, mergedGroups.Count, string.Join(", ", mergedGroups.Select(a => a.Count))));


                return(new Tuple <List <List <Transaction> >, Dictionary <Transaction, Exception> >(mergedGroups, groupResults.Item2));
            }
        }