Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("please select an implementation:");
            Console.WriteLine("1) Round Robin");
            Console.WriteLine("2) Write Scheduler");

            int selection = 0;

            Console.Write("Select option an: ");
            if (int.TryParse(Console.ReadLine(), out selection))
            {
                if (selection == 1)
                {
                    Console.WriteLine("Starting round robin scheduler\n");
                    RoundRobinScheduler rr = new RoundRobinScheduler();
                    rr.doRoundRobin();
                }
                else if (selection == 2)
                {
                    Console.WriteLine("Starting write scheduler\n");
                    Schedulers.WriteScheduler ws = new Schedulers.WriteScheduler();
                    ws.RunWriteScheduler();
                }
                else
                {
                    Console.WriteLine("Invalid input");
                }
            }
            else
            {
                Console.WriteLine("Invalid input");
            }

            Console.ReadLine();
        }
Ejemplo n.º 2
0
 public void RemoveNonExistantClient()
 {
     var s = new RoundRobinScheduler<int> ();
     s.Add (0);
     Assert.IsFalse (s.Empty);
     Assert.Throws<InvalidOperationException> (() => s.Remove (1));
 }
Ejemplo n.º 3
0
 public void RemoveDuring()
 {
     var s = new RoundRobinScheduler<int> ();
     s.Add (0);
     s.Add (1);
     s.Add (2);
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (1, s.Next ());
     Assert.AreEqual (2, s.Next ());
     Assert.AreEqual (0, s.Next ());
     s.Remove (1);
     Assert.IsFalse (s.Empty);
     Assert.AreEqual (2, s.Next ());
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (2, s.Next ());
     s.Remove (0);
     Assert.IsFalse (s.Empty);
     Assert.AreEqual (2, s.Next ());
     Assert.AreEqual (2, s.Next ());
     Assert.AreEqual (2, s.Next ());
     s.Remove (2);
     Assert.IsTrue (s.Empty);
     Assert.Throws<InvalidOperationException> (() => s.Next ());
     Assert.Throws<InvalidOperationException> (() => s.Remove (0));
 }
Ejemplo n.º 4
0
 public void Empty()
 {
     var s = new RoundRobinScheduler<int> ();
     Assert.IsTrue (s.Empty);
     Assert.Throws<InvalidOperationException> (() => s.Next ());
     Assert.Throws<InvalidOperationException> (() => s.Remove (0));
 }
Ejemplo n.º 5
0
        public void RemoveDuring()
        {
            var s = new RoundRobinScheduler <int> ();

            s.Add(0);
            s.Add(1);
            s.Add(2);
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(1, s.Next());
            Assert.AreEqual(2, s.Next());
            Assert.AreEqual(0, s.Next());
            s.Remove(1);
            Assert.IsFalse(s.Empty);
            Assert.AreEqual(2, s.Next());
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(2, s.Next());
            s.Remove(0);
            Assert.IsFalse(s.Empty);
            Assert.AreEqual(2, s.Next());
            Assert.AreEqual(2, s.Next());
            Assert.AreEqual(2, s.Next());
            s.Remove(2);
            Assert.IsTrue(s.Empty);
            Assert.Throws <InvalidOperationException> (() => s.Next());
            Assert.Throws <InvalidOperationException> (() => s.Remove(0));
        }
Ejemplo n.º 6
0
        public void Empty()
        {
            var s = new RoundRobinScheduler <int> ();

            Assert.IsTrue(s.Empty);
            Assert.Throws <InvalidOperationException> (() => s.Next());
            Assert.Throws <InvalidOperationException> (() => s.Remove(0));
        }
Ejemplo n.º 7
0
        public void AddExistingClient()
        {
            var s = new RoundRobinScheduler <int> ();

            s.Add(0);
            Assert.IsFalse(s.Empty);
            Assert.Throws <InvalidOperationException> (() => s.Add(0));
        }
Ejemplo n.º 8
0
        public void GenerateSchedule_WhenTeamsOrLeagueNull_ThrowsInvalidOperationException()
        {
            //ARRANGE
            RoundRobinScheduler rrs = new RoundRobinScheduler();

            //ACT
            rrs.GenerateSchedule();

            //ASSERT handled by ExpectedException
        }
Ejemplo n.º 9
0
        public void GenerateSchedule_ScheduleMustCoverAllPairs()
        {
            //ARRANGE
            int teamsNumber = 16;

            //prepare checklist
            //false - not played
            //already played matches will be marked as true
            bool[][] checkList = new bool[teamsNumber][];
            for (int i = 0; i < teamsNumber; i++)
            {
                checkList[i] = new bool[teamsNumber];
            }

            //create teams
            List <ITeam> teams = this.CreateBlankTeams(teamsNumber);

            //invoke scheduler
            RoundRobinScheduler rrs = this.InvokeScheduler(teams);

            //ACT
            rrs.GenerateSchedule();
            List <IMatch> matches = rrs.GetSchedule();

            //ASSERT
            //loop through each match and mark him as played (true)
            matches.ForEach(x => checkList[(int)x.HomeTeam.Id - 1][(int)x.AwayTeam.Id - 1] = true);

            //check if all of the matches has been played
            //however any team can not play itself
            for (int i = 0; i < teamsNumber; i++)
            {
                for (int j = 0; j < teamsNumber; j++)
                {
                    bool diagonal    = (i == j);
                    bool matchPlayed = checkList[i][j];

                    //team cannot play itself
                    if (diagonal && matchPlayed)
                    {
                        Assert.Fail();
                    }

                    //all of the matches must be played, if not, then fail
                    if (!diagonal && !matchPlayed)
                    {
                        Assert.Fail();
                    }
                }
            }
            //if not failed, then ok
        }
        public bool GenerateSchedule()
        {
            Leagues newLeagueEntity = new Leagues
            {
                Name = this.NewLeagueName
            };

            DateTime yearOfStart = new DateTime(this.NewLeagueYearOfStart, 1, 1);

            LeagueEntityToLibraryAdapter newLeagueAdapter = new LeagueEntityToLibraryAdapter();

            newLeagueAdapter.Adapt(newLeagueEntity);

            RoundRobinScheduler scheduler = new RoundRobinScheduler();

            scheduler.LoadLeague(newLeagueAdapter);

            List <ITeam> listOfTeamsAdapter = new List <ITeam>();

            foreach (Teams team in this.TeamsForNewLeague)
            {
                TeamEntityToLibraryAdapter teamAdapter = new TeamEntityToLibraryAdapter();
                teamAdapter.Adapt(team);
                listOfTeamsAdapter.Add(teamAdapter);
            }

            scheduler.LoadTeams(listOfTeamsAdapter);

            scheduler.YearOfStart = yearOfStart;

            scheduler.GenerateSchedule();

            List <IMatch> listOfMatchesFromAlgorithm = scheduler.GetSchedule();

            List <Matches> listOfMatchesEntities = new List <Matches>();

            foreach (IMatch match in listOfMatchesFromAlgorithm)
            {
                Matches m = new Matches()
                {
                    TimeOfPlay = match.TimeOfPlay,
                    HomeTeamId = match.HomeTeam.Id,
                    AwayTeamId = match.AwayTeam.Id,
                };

                Context.Matches.Add(m);
            }
            Context.Leagues.Add(newLeagueEntity);
            Context.SaveChanges();

            return(true);
        }
Ejemplo n.º 11
0
        public void LoadTeams_WhenTeamsQuantityLessThanTwo_ReturnsFalse()
        {
            //try to load one team into the scheduler
            //ARRANGE
            List <ITeam>        lt  = this.CreateBlankTeams(1);
            RoundRobinScheduler rrs = new RoundRobinScheduler();

            //ACT
            bool loaded = rrs.LoadTeams(lt);

            //ASSERT
            Assert.IsFalse(loaded);
        }
Ejemplo n.º 12
0
        public void LoadTeams_WhenTeamsNull_ReturnsFalse()
        {
            //try to load null as teams into the scheduler;
            //ARRANGE
            List <ITeam> teams = null;

            RoundRobinScheduler rrs = new RoundRobinScheduler();

            //ACT
            bool loaded = rrs.LoadTeams(teams);

            //ASSERT
            Assert.IsFalse(loaded);
        }
Ejemplo n.º 13
0
        public void LoadTeams_WhenTeamsCountNotEven_ReturnsFalse()
        {
            //try to load three (odd number) teams into the scheduler
            //ARRANGE
            List <ITeam> teams = this.CreateBlankTeams(3);

            RoundRobinScheduler rrs = new RoundRobinScheduler();

            //ACT
            bool loaded = rrs.LoadTeams(teams);

            //ASSERT
            Assert.IsFalse(loaded);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Invokes scheduler at year 2017.
        /// </summary>
        /// <param name="teams">Teams to be put into the scheduler.</param>
        /// <returns></returns>
        private RoundRobinScheduler InvokeScheduler(List <ITeam> teams)
        {
            RoundRobinScheduler rrs = new RoundRobinScheduler();

            League league = new League();

            rrs.LoadLeague(league);

            rrs.YearOfStart = new DateTime(2017, 3, 8);

            rrs.LoadTeams(teams);

            return(rrs);
        }
Ejemplo n.º 15
0
        public GameState()
        {
            var dto = DateTimeOffset.FromUnixTimeSeconds(int.MaxValue);

            CurrentTime = dto.DateTime;
            Messages    = new MessageBuffer(DisplayConsts.MessageDisplaySize.Y - 2);
            Player      = new Actor("Bob", (58, 58), new GameTile(CP437Glyph.AtSign, RogueColor.Lime), Direction.North, new PlayerBrain(), ActorRole.Inflirtator, new List <string>());
            Player.Inventory.Add(new Item(ItemDefinitions.Watch));

            Scheduler = new RoundRobinScheduler <Actor>();

            ChangeMap(MapData.Floor38);

            PlayerVisibilityGrid = new GameGrid <bool>(CurrentMap.Size);
        }
Ejemplo n.º 16
0
 Core ()
 {
     servers = new List<Server.Server> ();
     rpcClients = new Dictionary<Guid, IClient<Request, Response>> ();
     streamClients = new Dictionary<Guid, IClient<NoMessage, StreamMessage>> ();
     clientScheduler = new RoundRobinScheduler<IClient<Request, Response>> ();
     continuations = new List<RequestContinuation> ();
     streamRequests = new Dictionary<IClient<NoMessage,StreamMessage>,IList<StreamRequest>> ();
     streamResultCache = new Dictionary<uint, object> ();
     OneRPCPerUpdate = false;
     MaxTimePerUpdate = 5000;
     AdaptiveRateControl = true;
     BlockingRecv = true;
     RecvTimeout = 1000;
 }
Ejemplo n.º 17
0
        public void Single()
        {
            var s = new RoundRobinScheduler <int> ();

            for (int i = 0; i < 5; i++)
            {
                s.Add(0);
                Assert.IsFalse(s.Empty);
                Assert.AreEqual(0, s.Next());
                Assert.AreEqual(0, s.Next());
                Assert.AreEqual(0, s.Next());
                s.Remove(0);
                Assert.IsTrue(s.Empty);
            }
        }
Ejemplo n.º 18
0
 Core()
 {
     servers             = new List <Server.Server> ();
     rpcClients          = new Dictionary <Guid, IClient <Request, Response> > ();
     streamClients       = new Dictionary <Guid, IClient <NoMessage, StreamMessage> > ();
     clientScheduler     = new RoundRobinScheduler <IClient <Request, Response> > ();
     continuations       = new List <RequestContinuation> ();
     streamRequests      = new Dictionary <IClient <NoMessage, StreamMessage>, IList <StreamRequest> > ();
     streamResultCache   = new Dictionary <uint, object> ();
     OneRPCPerUpdate     = false;
     MaxTimePerUpdate    = 5000;
     AdaptiveRateControl = true;
     BlockingRecv        = true;
     RecvTimeout         = 1000;
 }
Ejemplo n.º 19
0
 public void AddDuring()
 {
     var s = new RoundRobinScheduler<int> ();
     s.Add (0);
     s.Add (1);
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (1, s.Next ());
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (1, s.Next ());
     s.Add (2);
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (1, s.Next ());
     Assert.AreEqual (2, s.Next ());
     Assert.AreEqual (0, s.Next ());
     Assert.AreEqual (1, s.Next ());
     Assert.AreEqual (2, s.Next ());
 }
Ejemplo n.º 20
0
        public void AddDuring()
        {
            var s = new RoundRobinScheduler <int> ();

            s.Add(0);
            s.Add(1);
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(1, s.Next());
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(1, s.Next());
            s.Add(2);
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(1, s.Next());
            Assert.AreEqual(2, s.Next());
            Assert.AreEqual(0, s.Next());
            Assert.AreEqual(1, s.Next());
            Assert.AreEqual(2, s.Next());
        }
Ejemplo n.º 21
0
 public MainForm()
 {
     InitializeComponent();
     jobCB.Enabled         = true;
     jobCountTB.Enabled    = false;
     executeButton.Enabled = true;
     suspendButton.Enabled = false;
     executeTimeTB.Enabled = false;
     DefaultJobs.Add(new Job(defaultExecuteTime));
     DefaultJobs.Add(new Job(defaultExecuteTime));
     Jobs.Add(DefaultJobs[0]);
     Jobs.Add(DefaultJobs[1]);
     jobCB.Items.Add("1");
     jobCB.Items.Add("2");
     jobCountTB.Text              = DefaultJobs.Count.ToString();
     quantumTB.Text               = defaultQuantum.ToString();
     scheduler                    = new RoundRobinScheduler(DefaultJobs, defaultQuantum);
     scheduler.CurrentJobChanged += () =>
     {
         currentJobTB.Invoke((Action) delegate
         {
             currentJobTB.Text = "Job #" + scheduler.CurrentJob.Id.ToString();
         });
     };
     scheduler.JobsEnded += () =>
     {
         executeButton.Invoke((Action) delegate
         {
             executeButton.Enabled = true;
         });
         suspendButton.Invoke((Action) delegate
         {
             suspendButton.Enabled = false;
         });
         statusTB.Invoke((Action) delegate
         {
             statusTB.Text = "JOBS ENDED";
         });
         quantumTB.Invoke((Action) delegate
         {
             quantumTB.Enabled = true;
         });
     };
 }
Ejemplo n.º 22
0
        public void SimpleCase()
        {
            var s = new RoundRobinScheduler <int> ();

            s.Add(0);
            s.Add(1);
            s.Add(2);
            Assert.IsFalse(s.Empty);
            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(0, s.Next());
                Assert.AreEqual(1, s.Next());
                Assert.AreEqual(2, s.Next());
            }
            s.Remove(0);
            s.Remove(1);
            s.Remove(2);
            Assert.IsTrue(s.Empty);
        }
Ejemplo n.º 23
0
        public void LoadTeams_WhenTeamsHaveNoDistinctiveIds_ReturnsFalse()
        {
            //try to load collection of teams. In the collection two teams have the same id.
            //ARRANGE
            //get teams
            List <ITeam> teams = this.CreateBlankTeams(17);

            //add one with non distinctive id
            Team nonDistinctiveIdTeam = new Team
            {
                Id = teams.Count - 1
            };

            teams.Add(nonDistinctiveIdTeam);

            RoundRobinScheduler rrs = new RoundRobinScheduler();

            //ACT
            bool loaded = rrs.LoadTeams(teams);

            //ASSERT
            Assert.IsFalse(loaded);
        }
Ejemplo n.º 24
0
 public void SimpleCase()
 {
     var s = new RoundRobinScheduler<int> ();
     s.Add (0);
     s.Add (1);
     s.Add (2);
     Assert.IsFalse (s.Empty);
     for (int i = 0; i < 5; i++) {
         Assert.AreEqual (0, s.Next ());
         Assert.AreEqual (1, s.Next ());
         Assert.AreEqual (2, s.Next ());
     }
     s.Remove (0);
     s.Remove (1);
     s.Remove (2);
     Assert.IsTrue (s.Empty);
 }
Ejemplo n.º 25
0
        public void SetUp()
        {
            dbContext = DbContextUtility.CreateMockDb();

            testObj = new RoundRobinScheduler();
        }
Ejemplo n.º 26
0
 public void Single()
 {
     var s = new RoundRobinScheduler<int> ();
     for (int i = 0; i < 5; i++) {
         s.Add (0);
         Assert.IsFalse (s.Empty);
         Assert.AreEqual (0, s.Next ());
         Assert.AreEqual (0, s.Next ());
         Assert.AreEqual (0, s.Next ());
         s.Remove (0);
         Assert.IsTrue (s.Empty);
     }
 }