Наследование: IRoleConfig
        public IList<ITaskSet> GetTaskList(string path)
        {
            newConfig = false;
            configRepository.Load();
            if (configRepository.Validate())
            {
                newConfig = true;
                var roleConfig = new RoleConfig(this.configRepository.GetHosts(), Environment.MachineName);
                var templates = new Templates(configRepository.GetTemplates());
                var setList = templates.GetTaskSetList(roleConfig.GetRoleList());
                var taskList = configMapper.Map(setList, configRepository.GetClientList());
                return taskList;
            }

            return null;
        }
        public void Should_get_all_roles_for_default_and_not_host()
        {
            var sqlToGraphiteConfigHosts = new List<SqlToGraphiteConfigHostsHost>();
            var hosta = new SqlToGraphiteConfigHostsHost { name = "default", role = new SqlToGraphiteConfigHostsHostRole[2] };
            var hostb = new SqlToGraphiteConfigHostsHost { name = "notThis", role = new SqlToGraphiteConfigHostsHostRole[1] };
            hosta.role[0] = new SqlToGraphiteConfigHostsHostRole { name = "a1" };
            hosta.role[1] = new SqlToGraphiteConfigHostsHostRole { name = "a2" };
            hostb.role[0] = new SqlToGraphiteConfigHostsHostRole { name = "b1" };

            sqlToGraphiteConfigHosts.Add(hosta);
            sqlToGraphiteConfigHosts.Add(hostb);
            var roleConfig = new RoleConfig(sqlToGraphiteConfigHosts, Environment.MachineName);
            var roleList = roleConfig.GetRoleList();

            Assert.That(roleList.Count, Is.EqualTo(2));
            Assert.That(roleList[0], Is.EqualTo("a1"));
            Assert.That(roleList[1], Is.EqualTo("a2"));
        }
        public void Should_get_all_roles_for_default_and_not_host()
        {
            var sqlToGraphiteConfigHosts = new List<Host>();
            var hosta = new Host { Name = "default", Roles = new List<Role>() };
            var hostb = new Host { Name = "notThis", Roles = new List<Role>() };
            hosta.Roles.Add(new Role { Name = "a1" });
            hosta.Roles.Add(new Role { Name = "a2" });
            hostb.Roles.Add(new Role { Name = "b1" });

            sqlToGraphiteConfigHosts.Add(hosta);
            sqlToGraphiteConfigHosts.Add(hostb);
            var roleConfig = new RoleConfig(sqlToGraphiteConfigHosts, environment);
            var roleList = roleConfig.GetRoleListToRunOnThisMachine();

            Assert.That(roleList.Count, Is.EqualTo(2));
            Assert.That(roleList[0], Is.EqualTo("a1"));
            Assert.That(roleList[1], Is.EqualTo("a2"));
        }
        public void Should_get_all_roles_for_default_and_regex_of_the_machines_hostname_regex_match()
        {
            var machineName = "lonbti-bus01v";
            var hname = ".*bus.*";
            var sqlToGraphiteConfigHosts = new List<SqlToGraphiteConfigHostsHost>();
            var hosta = new SqlToGraphiteConfigHostsHost { name = "default", role = new SqlToGraphiteConfigHostsHostRole[2] };
            var hostb = new SqlToGraphiteConfigHostsHost { name = "notThis", role = new SqlToGraphiteConfigHostsHostRole[1] };
            var hostc = new SqlToGraphiteConfigHostsHost { name = hname, role = new SqlToGraphiteConfigHostsHostRole[1] };
            hosta.role[0] = new SqlToGraphiteConfigHostsHostRole { name = "a1" };
            hosta.role[1] = new SqlToGraphiteConfigHostsHostRole { name = "a2" };
            hostb.role[0] = new SqlToGraphiteConfigHostsHostRole { name = "b1" };
            hostc.role[0] = new SqlToGraphiteConfigHostsHostRole { name = "c1" };

            sqlToGraphiteConfigHosts.Add(hosta);
            sqlToGraphiteConfigHosts.Add(hostb);
            sqlToGraphiteConfigHosts.Add(hostc);
            var roleConfig = new RoleConfig(sqlToGraphiteConfigHosts, machineName);
            var roleList = roleConfig.GetRoleList();

            Assert.That(roleList.Count, Is.EqualTo(3));
            Assert.That(roleList[0], Is.EqualTo("a1"));
            Assert.That(roleList[1], Is.EqualTo("a2"));
            Assert.That(roleList[2], Is.EqualTo("c1"));
        }
        public void Should_get_all_roles_for_default_and_regex_of_the_machines_hostname_direct_match()
        {
            var machineName = "abc";
            var hname = "abc";
            var sqlToGraphiteConfigHosts = new List<Host>();
            var hosta = new Host { Name = "default", Roles = new List<Role>() };
            var hostb = new Host { Name = "notThis", Roles = new List<Role>() };
            var hostc = new Host { Name = hname, Roles = new List<Role>() };

            hosta.Roles.Add(new Role { Name = "a1" });
            hosta.Roles.Add(new Role { Name = "a2" });
            hostb.Roles.Add(new Role { Name = "b1" });
            hostc.Roles.Add(new Role { Name = "c1" });

            sqlToGraphiteConfigHosts.Add(hosta);
            sqlToGraphiteConfigHosts.Add(hostb);
            sqlToGraphiteConfigHosts.Add(hostc);

            environment = MockRepository.GenerateMock<IEnvironment>();
            environment.Expect(x => x.GetMachineName()).Return(machineName);
            var roleConfig = new RoleConfig(sqlToGraphiteConfigHosts, environment);
            var roleList = roleConfig.GetRoleListToRunOnThisMachine();

            Assert.That(roleList.Count, Is.EqualTo(3));
            Assert.That(roleList[0], Is.EqualTo("a1"));
            Assert.That(roleList[1], Is.EqualTo("a2"));
            Assert.That(roleList[2], Is.EqualTo("c1"));
        }