Example #1
0
            public void Reconfigures_Groups_When_Options_Change(string group, int priority, int slots, QueueStrategy strategy)
            {
                var options = new Options()
                {
                    Groups = new Options.GroupsOptions()
                    {
                        UserDefined = new Dictionary <string, Options.GroupsOptions.UserDefinedOptions>()
                        {
                            {
                                group,
                                new Options.GroupsOptions.UserDefinedOptions()
                                {
                                    Upload = new Options.GroupsOptions.UploadOptions()
                                    {
                                        Priority = priority,
                                        Slots    = slots,
                                        Strategy = strategy.ToString(),
                                    }
                                }
                            },
                        }
                    }
                };

                // do not pass options; init with defaults
                var(queue, mocks) = GetFixture();

                var groups = queue.GetProperty <Dictionary <string, UploadGroup> >("Groups");

                // user defined group does not exist
                Assert.False(groups.ContainsKey(group));

                // reconfigure
                mocks.OptionsMonitor.RaiseOnChange(options);

                // get the new copy
                groups = queue.GetProperty <Dictionary <string, UploadGroup> >("Groups");

                Assert.True(groups.ContainsKey(group));

                var p = groups[group];

                Assert.Equal(group, p.Name);
                Assert.Equal(priority, p.Priority);
                Assert.Equal(slots, p.Slots);
                Assert.Equal(0, p.UsedSlots);
                Assert.Equal(strategy, p.Strategy);
            }
Example #2
0
        public void Instantiates_With_Expected_Leecher_Group_Options(int priority, int slots, QueueStrategy strategy)
        {
            var(queue, _) = GetFixture(new Options()
            {
                Groups = new Options.GroupsOptions()
                {
                    Leechers = new Options.GroupsOptions.LeecherOptions()
                    {
                        Thresholds = new Options.GroupsOptions.ThresholdOptions(),
                        Upload     = new Options.GroupsOptions.UploadOptions()
                        {
                            Priority = priority,
                            Slots    = slots,
                            Strategy = strategy.ToString(),
                        }
                    }
                }
            });

            var groups = queue.GetProperty <Dictionary <string, UploadGroup> >("Groups");

            var p = groups[Application.LeecherGroup];

            Assert.Equal(Application.LeecherGroup, p.Name);
            Assert.Equal(priority, p.Priority);
            Assert.Equal(slots, p.Slots);
            Assert.Equal(0, p.UsedSlots);
            Assert.Equal(strategy, p.Strategy);
        }
Example #3
0
        public void Instantiates_With_Expected_User_Defined_Group_Options(string group1, int priority1, int slots1, QueueStrategy strategy1, string group2, int priority2, int slots2, QueueStrategy strategy2)
        {
            var(queue, _) = GetFixture(new Options()
            {
                Groups = new Options.GroupsOptions()
                {
                    UserDefined = new Dictionary <string, Options.GroupsOptions.UserDefinedOptions>()
                    {
                        {
                            group1,
                            new Options.GroupsOptions.UserDefinedOptions()
                            {
                                Upload = new Options.GroupsOptions.UploadOptions()
                                {
                                    Priority = priority1,
                                    Slots    = slots1,
                                    Strategy = strategy1.ToString(),
                                }
                            }
                        },
                        {
                            group2,
                            new Options.GroupsOptions.UserDefinedOptions()
                            {
                                Upload = new Options.GroupsOptions.UploadOptions()
                                {
                                    Priority = priority2,
                                    Slots    = slots2,
                                    Strategy = strategy2.ToString(),
                                }
                            }
                        }
                    }
                }
            });

            var groups = queue.GetProperty <Dictionary <string, UploadGroup> >("Groups");

            var p = groups[group1];

            Assert.Equal(group1, p.Name);
            Assert.Equal(priority1, p.Priority);
            Assert.Equal(slots1, p.Slots);
            Assert.Equal(0, p.UsedSlots);
            Assert.Equal(strategy1, p.Strategy);

            p = groups[group2];

            Assert.Equal(group2, p.Name);
            Assert.Equal(priority2, p.Priority);
            Assert.Equal(slots2, p.Slots);
            Assert.Equal(0, p.UsedSlots);
            Assert.Equal(strategy2, p.Strategy);
        }