示例#1
0
        public void TryGetConfigurationById_WhenFileContainsInformation_ReturnsExpectedConfiguration()
        {
            //arrange
            var expectedConfiguration = new Configuration {
                ConfigurationId = "Layer1", ConfigurationValue = 1
            };
            var configurationList = new List <Configuration>
            {
                expectedConfiguration,
                new Configuration {
                    ConfigurationId = "Layer2", ConfigurationValue = "2"
                }
            };

            var configurationLayer = new ConfigurationLayer(configurationList);

            //act
            var foundConfiguration =
                configurationLayer.TryGetConfigurationById(expectedConfiguration.ConfigurationId,
                                                           out var configuration);

            //assert
            foundConfiguration.Should().BeTrue();
            configuration.Should().BeEquivalentTo(expectedConfiguration);
        }
示例#2
0
        public void Testout()
        {
            ConfigurationLayer cl = new ConfigurationLayer();

            ConfigurationItem item1 = new ConfigurationItem();

            cl.Items.AddConfigurationItem("plugin1", ConfigurationStatus.Running);

            Assert.That(item1.Status == ConfigurationStatus.Running);
            Assert.That(item1.ServiceOrPluginName == "plugin1");

            ConfigurationItem item2 = new ConfigurationItem();

            cl.Items.AddConfigurationItem("service1", ConfigurationStatus.Running);

            Assert.That(item1.Status == ConfigurationStatus.Running);
            Assert.That(item1.ServiceOrPluginName == "service1");

            ConfigurationManager cm = new ConfigurationManager();

            cm.AddLayer(cl);

            Objectgraph Og = new ObjectGraph(cm);

            Og.Resolve();

            Og.Release();
        }
示例#3
0
        /// <summary>
        ///     Loads the configuration layer.
        /// </summary>
        /// <returns>The configuration layer.</returns>
        private ConfigurationLayer LoadConfigurationLayer()
        {
            var configurationLayer = new ConfigurationLayer();

            configurationLayer.MachineFilePath = MachineConfigFilePath;
            configurationLayer.SharedFilePath  = SharedConfigFilePath;
            configurationLayer.UserFilePath    = UserConfigFilePath;

            if (File.Exists(configurationLayer.MachineFilePath))
            {
                configurationLayer.MachineConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.MachineFilePath));
            }

            if (File.Exists(configurationLayer.SharedFilePath))
            {
                configurationLayer.SharedConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.SharedFilePath));
            }

            if (File.Exists(configurationLayer.UserFilePath))
            {
                configurationLayer.UserConfig = ConfigurationXmlSerializer.Deserialize(File.OpenRead(configurationLayer.UserFilePath));
            }

            configurationLayer.ComputedConfig = ProductivityShell.Configuration.Configuration.ComputeConfig(configurationLayer.MachineConfig, configurationLayer.SharedConfig, configurationLayer.UserConfig);
            return(configurationLayer);
        }
示例#4
0
        internal ConfigurationItem( ConfigurationLayer configurationLayer, string serviceOrPluginFullName, ConfigurationStatus initialStatus, StartDependencyImpact initialImpact, string initialStatusReason = "")
        {
            Debug.Assert( !String.IsNullOrEmpty( serviceOrPluginFullName ) );
            Debug.Assert( configurationLayer != null );
            Debug.Assert( initialStatusReason != null );

            _owner = configurationLayer;
            _serviceOrPluginFullName = serviceOrPluginFullName;
            _status = initialStatus;
            _impact = initialImpact;
            _statusReason = initialStatusReason;
        }
示例#5
0
        public MainWindow()
        {
            string responsavel = ConfigurationLayer.GetConfig("Responsavel");

            if (string.IsNullOrEmpty(responsavel) || responsavel == "Dev")
            {
                new Login().ShowDialog();
            }

            InitializeComponent();

            SetupTimerSalvamentoAutomático();
            SetupTimerPorSegundo();

            ComboBoxProjetos.ItemsSource = Timesheet.Projetos;
        }
示例#6
0
        public void ConfigurationLayerWithManagerTests()
        {
            ConfigurationManager manager = new ConfigurationManager();
            ConfigurationLayer   layer   = new ConfigurationLayer("system");

            ConfigurationResult result = manager.Layers.Add(layer);

            Assert.That(result == true);
            Assert.That(layer.ConfigurationManager, Is.EqualTo(manager));
            Assert.That(layer.LayerName, Is.EqualTo("system"));
            Assert.DoesNotThrow(() => layer.LayerName = "");
            Assert.That(layer.LayerName, Is.EqualTo(""));

            result = layer.Items.Add("schmurtz1", ConfigurationStatus.Optional);
            Assert.That(result == true);

            ConfigurationManager manager2 = new ConfigurationManager();

            result = manager2.Layers.Add(layer);
            Assert.That(result == false);

            result = manager.Layers.Remove(layer);
            Assert.That(result == true);
            Assert.That(layer.ConfigurationManager, Is.EqualTo(null));

            result = manager.Layers.Add(layer);
            Assert.That(result == true);

            manager.ConfigurationChanging += (s, e) => e.Cancel("schmurtz!");
            result = layer.Items.Add("schmurtz1", ConfigurationStatus.Runnable);
            Assert.That(result == false);
            Assert.That(result.IsSuccessful, Is.False);
            Assert.That(result.FailureCauses[0], Is.EqualTo("schmurtz!"));
            Assert.That(layer.Items["schmurtz1"].Status, Is.EqualTo(ConfigurationStatus.Optional));

            result = layer.Items.Add("schmurtz2", ConfigurationStatus.Optional);
            Assert.That(result == false);
            Assert.That(result.IsSuccessful, Is.False);
            Assert.That(result.FailureCauses[0], Is.EqualTo("schmurtz!"));
            Assert.That(layer.Items["schmurtz"], Is.EqualTo(null));

            result = manager.Layers.Remove(layer);
            Assert.That(result == false);
            Assert.That(layer.ConfigurationManager, Is.EqualTo(manager));
        }
        public void ConfigurationLayerWithManagerTests()
        {
            ConfigurationManager manager = new ConfigurationManager();
            ConfigurationLayer layer = new ConfigurationLayer( "system" );

            ConfigurationResult result = manager.Layers.Add( layer );
            Assert.That( result == true );
            Assert.That( layer.ConfigurationManager, Is.EqualTo( manager ) );
            Assert.That( layer.LayerName, Is.EqualTo( "system" ) );
            Assert.DoesNotThrow( () => layer.LayerName = "" );
            Assert.That( layer.LayerName, Is.EqualTo( "" ) );

            result = layer.Items.Add( "schmurtz1", ConfigurationStatus.Optional );
            Assert.That( result == true );

            ConfigurationManager manager2 = new ConfigurationManager();
            result = manager2.Layers.Add( layer );
            Assert.That( result == false );

            result = manager.Layers.Remove( layer );
            Assert.That( result == true );
            Assert.That( layer.ConfigurationManager, Is.EqualTo( null ) );

            result = manager.Layers.Add( layer );
            Assert.That( result == true );

            manager.ConfigurationChanging += ( s, e ) => e.Cancel( "schmurtz!" );
            result = layer.Items.Add( "schmurtz1", ConfigurationStatus.Runnable );
            Assert.That( result == false );
            Assert.That( result.IsSuccessful, Is.False );
            Assert.That( result.FailureCauses[0], Is.EqualTo( "schmurtz!" ) );
            Assert.That( layer.Items["schmurtz1"].Status, Is.EqualTo( ConfigurationStatus.Optional ) );

            result = layer.Items.Add( "schmurtz2", ConfigurationStatus.Optional );
            Assert.That( result == false );
            Assert.That( result.IsSuccessful, Is.False );
            Assert.That( result.FailureCauses[0], Is.EqualTo( "schmurtz!" ) );
            Assert.That( layer.Items["schmurtz"], Is.EqualTo( null ) );

            result = manager.Layers.Remove( layer );
            Assert.That( result == false );
            Assert.That( layer.ConfigurationManager, Is.EqualTo( manager ) );
        }
示例#8
0
        public static void BaixarAtualização(string proxAtualização)
        {
            var request = (FtpWebRequest)WebRequest.Create($@"ftp://{ConfigurationLayer.GetConfig("FtpServer")}/{proxAtualização}");

            request.Credentials = new NetworkCredential(ConfigurationLayer.GetConfig("FtpUser"), ConfigurationLayer.GetConfig("FtpPass"));
            request.Method      = WebRequestMethods.Ftp.DownloadFile;

            try {
                using (var response = (FtpWebResponse)request.GetResponse()) {
                    using (var stream = response.GetResponseStream()) {
                        using (var file = new FileStream($@"C:\Users\{Environment.UserName}\Downloads\{proxAtualização}", FileMode.Create)) {
                            stream.CopyTo(file);
                        }
                    }
                }
            } catch (WebException e) {
                throw new Exception(e.Message);
            }
        }
示例#9
0
        public static bool TemNovaAtualização(string proxAtualização)
        {
            var request = (FtpWebRequest)WebRequest.Create($@"ftp://{ConfigurationLayer.GetConfig("FtpServer")}/{proxAtualização}");

            request.Credentials = new NetworkCredential(ConfigurationLayer.GetConfig("FtpUser"), ConfigurationLayer.GetConfig("FtpPass"));
            request.Method      = WebRequestMethods.Ftp.GetFileSize;
            FtpWebResponse response = null;

            try {
                response = (FtpWebResponse)request.GetResponse();
                return(true);
            }
            catch (WebException e) {
                response = (FtpWebResponse)e.Response;
                if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                {
                    return(false);
                }
            }
            finally { response.Close(); }
            return(false);
        }
示例#10
0
        /// <summary>
        ///     Saves the configuration layer.
        /// </summary>
        /// <param name="configurationLayer">The configuration layer.</param>
        /// <param name="override">if set to <c>true</c> [@override].</param>
        public void SaveConfigurationLayer(ConfigurationLayer configurationLayer, bool @override)
        {
            if (configurationLayer == null)
            {
                throw new ArgumentNullException(nameof(configurationLayer));
            }

            var configMap = new[]
            {
                new { FilePath = MachineConfigFilePath, Configuration = configurationLayer.MachineConfig },
                new { FilePath = SharedConfigFilePath, Configuration = configurationLayer.SharedConfig },
                new { FilePath = UserConfigFilePath, Configuration = configurationLayer.UserConfig }
            };

            foreach (var config in configMap)
            {
                if (string.IsNullOrWhiteSpace(config.FilePath) || config.Configuration == null)
                {
                    continue;
                }

                if (!@override && File.Exists(config.FilePath))
                {
                    continue;
                }

                var directoryName = Path.GetDirectoryName(config.FilePath);
                if (string.IsNullOrWhiteSpace(directoryName))
                {
                    continue;
                }

                Directory.CreateDirectory(directoryName);
                using (var fileStream = File.OpenWrite(config.FilePath))
                {
                    ConfigurationXmlSerializer.Serialize(fileStream, config.Configuration);
                }
            }
        }
示例#11
0
        public void TryGetConfigurationById_WhenFileDoesNotContainInformation_ReturnsNull()
        {
            //arrange
            var configurationList = new List <Configuration>
            {
                new Configuration {
                    ConfigurationId = "Layer1", ConfigurationValue = 1
                },
                new Configuration {
                    ConfigurationId = "Layer2", ConfigurationValue = "2"
                }
            };

            var configurationLayer = new ConfigurationLayer(configurationList);

            //act
            var foundConfiguration =
                configurationLayer.TryGetConfigurationById("NonExistingId", out var configuration);

            //assert
            foundConfiguration.Should().BeFalse();
            configuration.Should().BeNull();
        }
示例#12
0
        public void ManagerCreationTests()
        {
            ConfigurationManager cm  = new ConfigurationManager();
            int managerChangingCount = 0;
            int managerChangedCount  = 0;

            Assert.That(cm.FinalConfigurationLayer == null, "Initial FinalConfiguration is null.");

            cm.Changing += delegate(object sender, ConfigurationManagerChangingEventArgs e)
            {
                Assert.That(e.Cancel == false, "Configuration manager does not cancel by default.");
                Assert.That(e.FinalConfiguration != null, "Proposed FinalConfiguration exists.");

                managerChangingCount++;
            };

            cm.Changed += delegate(object sender, ConfigurationManagerChangedEventArgs e)
            {
                Assert.That(e.FinalConfiguration != null, "FinalConfiguration exists.");

                managerChangedCount++;
            };

            bool result;
            ConfigurationLayer layer = new ConfigurationLayer("BaseConfig");

            layer.Items.Add("Yodii.ManagerService", ConfigurationStatus.Runnable);
            layer.Items.Add(Guid.NewGuid().ToString(), ConfigurationStatus.Disable);

            result = cm.Layers.Add(layer);   // Fires Changing => Changed once.
            Assert.That(result, Is.True);

            Assert.That(managerChangingCount == 1);
            Assert.That(managerChangedCount == 1);

            Assert.That(cm.FinalConfigurationLayer != null, "Non-cancelled FinalConfiguration exists.");
        }
示例#13
0
        public void LayerCreationTest()
        {
            ConfigurationLayer layer = new ConfigurationLayer("TestConfig");

            Assert.That(layer.Items.Count == 0);
            Assert.That(layer.ConfigurationName == "TestConfig");

            string pluginIdentifier;
            bool   result;

            // Add a random plugin GUID
            pluginIdentifier = Guid.NewGuid().ToString();
            result           = layer.Items.Add(pluginIdentifier, ConfigurationStatus.Disable);
            Assert.That(result, Is.True);
            Assert.That(layer.Items.Count == 1);
            Assert.That(layer.Items[pluginIdentifier], Is.InstanceOf <ConfigurationItem>());

            // Add another random plugin GUID
            pluginIdentifier = Guid.NewGuid().ToString();
            result           = layer.Items.Add(pluginIdentifier, ConfigurationStatus.Runnable);
            Assert.That(result, Is.True);
            Assert.That(layer.Items.Count == 2);
            Assert.That(layer.Items[pluginIdentifier], Is.InstanceOf <ConfigurationItem>());

            // Remove last plugin GUID
            result = layer.Items.Remove(pluginIdentifier);
            Assert.That(result, Is.True);
            Assert.That(layer.Items.Count == 1);

            // Add some service
            pluginIdentifier = "Yodii.ManagerService";
            result           = layer.Items.Add(pluginIdentifier, ConfigurationStatus.Runnable);
            Assert.That(result, Is.True);
            Assert.That(layer.Items.Count == 2);
            Assert.That(layer.Items[pluginIdentifier], Is.InstanceOf <ConfigurationItem>());
        }
示例#14
0
        internal IYodiiEngineResult OnConfigurationLayerRemoving( ConfigurationLayer layer )
        {
            Dictionary<string, FinalConfigurationItem> final = new Dictionary<string, FinalConfigurationItem>();

            ConfigurationFailureResult internalResult = FillFromConfiguration( null, final, c => c.Layer != layer );
            Debug.Assert( internalResult.Success, "Removing a configuration layer can not lead to an impossibility." );

            return OnConfigurationChanging( final, finalConf => new ConfigurationChangingEventArgs( finalConf, FinalConfigurationChange.LayerRemoved, layer ) );
        }
        public void ConfigurationLayerWithoutManagerTests()
        {
            int countCollectionChangedEvent = 0;
            int countPropertyChangedEvent = 0;
            ConfigurationLayer layer = new ConfigurationLayer();
            layer.Items.CollectionChanged += ( s, e ) => countCollectionChangedEvent++;

            //initialization tests
            Assert.That( layer.Items.Count, Is.EqualTo( 0 ) );
            Assert.Throws<IndexOutOfRangeException>( () => { ConfigurationItem lambdaItem = layer.Items[42]; } );
            Assert.That( layer.Items["schmurtz"], Is.Null );
            Assert.That( layer.Items.Contains( "schmurtz" ), Is.False );

            //actions without items
            ConfigurationResult result = layer.Items.Remove( "schmurtz" );
            Assert.That( result == false ); //use a implicit cast
            Assert.That( result.IsSuccessful, Is.False );
            Assert.That( result.FailureCauses.Count, Is.EqualTo( 1 ) );
            Assert.That( result.FailureCauses.Contains("Item not found"), Is.True );

            Assert.That( countCollectionChangedEvent, Is.EqualTo( 0 ) );

            //exception in add fonction
            Assert.Throws<ArgumentException>( () => layer.Items.Add( null, ConfigurationStatus.Optional ) );
            Assert.Throws<ArgumentException>( () => layer.Items.Add( "", ConfigurationStatus.Optional ) );

            //add function tests
            result = layer.Items.Add( "schmurtz", ConfigurationStatus.Optional );
            Assert.That( result == true );
            Assert.That( result.IsSuccessful, Is.True );
            Assert.That( result.FailureCauses, Is.Not.Null );
            Assert.That( result.FailureCauses.Count, Is.EqualTo( 0 ) );
            Assert.That( countCollectionChangedEvent, Is.EqualTo( 1 ) );
            Assert.That( layer.Items.Count, Is.EqualTo( 1 ) );
            Assert.That( layer.Items["schmurtz"], Is.Not.Null );
            Assert.DoesNotThrow( () => { ConfigurationItem lambdaItem = layer.Items[0]; } );
            Assert.That( layer.Items["schmurtz"].Layer, Is.EqualTo( layer ) );
            Assert.That( layer.Items["schmurtz"].Layer.Items["schmurtz"], Is.Not.Null );
            Assert.That( layer.Items["schmurtz"].ServiceOrPluginId, Is.EqualTo( "schmurtz" ) );
            Assert.That( layer.Items["schmurtz"].Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            Assert.That( layer.Items["schmurtz"].StatusReason, Is.EqualTo( "" ) );

            //basic tests with item reference
            ConfigurationItem item = layer.Items["schmurtz"];
            item.PropertyChanged += ( s, e ) => countPropertyChangedEvent++;
            item.StatusReason = null;
            Assert.That( item.StatusReason, Is.EqualTo( "" ) );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 1 ) );
            Assert.DoesNotThrow( () => item.StatusReason = "schmurtz" );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 2 ) );
            Assert.DoesNotThrow( () => item.StatusReason = "" );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 3 ) );

            //setstatus tests
            Assert.That( item.SetStatus( ConfigurationStatus.Disable ).IsSuccessful, Is.True );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Disable ) );
            Assert.That( item.SetStatus( ConfigurationStatus.Optional ).IsSuccessful, Is.True );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            Assert.That( item.SetStatus( ConfigurationStatus.Runnable ).IsSuccessful, Is.True );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Runnable ) );
            Assert.That( item.SetStatus( ConfigurationStatus.Running ).IsSuccessful, Is.True );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Running ) );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 7 ) );

            Assert.DoesNotThrow( () => item.SetStatus( ConfigurationStatus.Optional, null ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            Assert.That( item.StatusReason, Is.EqualTo( "" ) );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 9 ) );

            //add function tests when the item already exist
            result = layer.Items.Add( "schmurtz", ConfigurationStatus.Disable );
            Assert.That( result == true );
            Assert.That( layer.Items.Count, Is.EqualTo( 1 ) );
            Assert.That( layer.Items["schmurtz"].Status, Is.EqualTo( ConfigurationStatus.Disable ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Disable ) );
            result = layer.Items.Add( "schmurtz", ConfigurationStatus.Optional );
            Assert.That( result == true );
            Assert.That( layer.Items.Count, Is.EqualTo( 1 ) );
            Assert.That( layer.Items["schmurtz"].Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            result = layer.Items.Add( "schmurtz", ConfigurationStatus.Runnable );
            Assert.That( result == true );
            Assert.That( layer.Items.Count, Is.EqualTo( 1 ) );
            Assert.That( layer.Items["schmurtz"].Status, Is.EqualTo( ConfigurationStatus.Runnable ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Runnable ) );
            result = layer.Items.Add( "schmurtz", ConfigurationStatus.Running );
            Assert.That( result == true );
            Assert.That( layer.Items.Count, Is.EqualTo( 1 ) );
            Assert.That( layer.Items["schmurtz"].Status, Is.EqualTo( ConfigurationStatus.Running ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Running ) );
            Assert.That( countPropertyChangedEvent, Is.EqualTo( 13 ) );

            //OnRemoved tests
            layer.Items.Remove( "schmurtz" );
            Assert.That( result == true );
            Assert.That( result.IsSuccessful, Is.True);
            Assert.That( result.FailureCauses, Is.Not.Null );
            Assert.That( result.FailureCauses.Count, Is.EqualTo( 0 ) );
            Assert.That( countCollectionChangedEvent, Is.EqualTo( 2 ) );
            Assert.That( layer.Items["schmurtz"], Is.Null );
            Assert.Throws < IndexOutOfRangeException>( () => { ConfigurationItem lambdaItem = layer.Items[0]; } );

            //tests with item reference when item is removed
            Assert.That( item.Layer, Is.EqualTo( null ) );
            Assert.That( item.ServiceOrPluginId, Is.EqualTo( "schmurtz" ) );
            Assert.That( item.Status, Is.EqualTo( ConfigurationStatus.Optional ) );
            Assert.That( item.StatusReason, Is.EqualTo( null ) );
            Assert.Throws<InvalidOperationException>( () => item.StatusReason = "schmurtz" );
            Assert.Throws<InvalidOperationException>( () => item.SetStatus( ConfigurationStatus.Runnable ) );

            //tests with multiple add
            result = layer.Items.Add( "schmurtz2", ConfigurationStatus.Optional, "schmurtz?" );
            Assert.That( result == true );
            result = layer.Items.Add( "schmurtz1", ConfigurationStatus.Disable, "schmurtz?" );
            Assert.That( result == true );
            Assert.That( layer.Items.Count, Is.EqualTo( 2 ) );

            //sort tests
            ConfigurationItem schmurtz1 = layer.Items["schmurtz1"];
            ConfigurationItem schmurtz2 = layer.Items["schmurtz2"];
            Assert.That( schmurtz1, Is.EqualTo( layer.Items[0] ) );
            Assert.That( schmurtz2, Is.EqualTo( layer.Items[1] ) );
            Assert.That( schmurtz1.StatusReason, Is.EqualTo( "schmurtz?" ) );
            Assert.That( schmurtz2.StatusReason, Is.EqualTo( "schmurtz?" ) );

            result = layer.Items.Add( "schmurtz0", ConfigurationStatus.Running );
            ConfigurationItem schmurtz0 = layer.Items["schmurtz0"];
            Assert.That( schmurtz0, Is.EqualTo( layer.Items[0] ) );
            Assert.That( schmurtz1, Is.EqualTo( layer.Items[1] ) );
            Assert.That( schmurtz2, Is.EqualTo( layer.Items[2] ) );
        }
示例#16
0
        public void ConfigurationLayerWithoutManagerTests()
        {
            int countCollectionChangedEvent = 0;
            int countPropertyChangedEvent   = 0;
            ConfigurationLayer layer        = new ConfigurationLayer();

            layer.Items.CollectionChanged += (s, e) => countCollectionChangedEvent++;

            //initialization tests
            Assert.That(layer.Items.Count, Is.EqualTo(0));
            Assert.Throws <IndexOutOfRangeException>(() => { ConfigurationItem lambdaItem = layer.Items[42]; });
            Assert.That(layer.Items["schmurtz"], Is.Null);
            Assert.That(layer.Items.Contains("schmurtz"), Is.False);

            //actions without items
            ConfigurationResult result = layer.Items.Remove("schmurtz");

            Assert.That(result == false);   //use a implicit cast
            Assert.That(result.IsSuccessful, Is.False);
            Assert.That(result.FailureCauses.Count, Is.EqualTo(1));
            Assert.That(result.FailureCauses.Contains("Item not found"), Is.True);

            Assert.That(countCollectionChangedEvent, Is.EqualTo(0));

            //exception in add fonction
            Assert.Throws <ArgumentException>(() => layer.Items.Add(null, ConfigurationStatus.Optional));
            Assert.Throws <ArgumentException>(() => layer.Items.Add("", ConfigurationStatus.Optional));

            //add function tests
            result = layer.Items.Add("schmurtz", ConfigurationStatus.Optional);
            Assert.That(result == true);
            Assert.That(result.IsSuccessful, Is.True);
            Assert.That(result.FailureCauses, Is.Not.Null);
            Assert.That(result.FailureCauses.Count, Is.EqualTo(0));
            Assert.That(countCollectionChangedEvent, Is.EqualTo(1));
            Assert.That(layer.Items.Count, Is.EqualTo(1));
            Assert.That(layer.Items["schmurtz"], Is.Not.Null);
            Assert.DoesNotThrow(() => { ConfigurationItem lambdaItem = layer.Items[0]; });
            Assert.That(layer.Items["schmurtz"].Layer, Is.EqualTo(layer));
            Assert.That(layer.Items["schmurtz"].Layer.Items["schmurtz"], Is.Not.Null);
            Assert.That(layer.Items["schmurtz"].ServiceOrPluginId, Is.EqualTo("schmurtz"));
            Assert.That(layer.Items["schmurtz"].Status, Is.EqualTo(ConfigurationStatus.Optional));
            Assert.That(layer.Items["schmurtz"].StatusReason, Is.EqualTo(""));

            //basic tests with item reference
            ConfigurationItem item = layer.Items["schmurtz"];

            item.PropertyChanged += (s, e) => countPropertyChangedEvent++;
            item.StatusReason     = null;
            Assert.That(item.StatusReason, Is.EqualTo(""));
            Assert.That(countPropertyChangedEvent, Is.EqualTo(1));
            Assert.DoesNotThrow(() => item.StatusReason = "schmurtz");
            Assert.That(countPropertyChangedEvent, Is.EqualTo(2));
            Assert.DoesNotThrow(() => item.StatusReason = "");
            Assert.That(countPropertyChangedEvent, Is.EqualTo(3));

            //setstatus tests
            Assert.That(item.SetStatus(ConfigurationStatus.Disable).IsSuccessful, Is.True);
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Disable));
            Assert.That(item.SetStatus(ConfigurationStatus.Optional).IsSuccessful, Is.True);
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Optional));
            Assert.That(item.SetStatus(ConfigurationStatus.Runnable).IsSuccessful, Is.True);
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Runnable));
            Assert.That(item.SetStatus(ConfigurationStatus.Running).IsSuccessful, Is.True);
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Running));
            Assert.That(countPropertyChangedEvent, Is.EqualTo(7));

            Assert.DoesNotThrow(() => item.SetStatus(ConfigurationStatus.Optional, null));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Optional));
            Assert.That(item.StatusReason, Is.EqualTo(""));
            Assert.That(countPropertyChangedEvent, Is.EqualTo(9));

            //add function tests when the item already exist
            result = layer.Items.Add("schmurtz", ConfigurationStatus.Disable);
            Assert.That(result == true);
            Assert.That(layer.Items.Count, Is.EqualTo(1));
            Assert.That(layer.Items["schmurtz"].Status, Is.EqualTo(ConfigurationStatus.Disable));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Disable));
            result = layer.Items.Add("schmurtz", ConfigurationStatus.Optional);
            Assert.That(result == true);
            Assert.That(layer.Items.Count, Is.EqualTo(1));
            Assert.That(layer.Items["schmurtz"].Status, Is.EqualTo(ConfigurationStatus.Optional));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Optional));
            result = layer.Items.Add("schmurtz", ConfigurationStatus.Runnable);
            Assert.That(result == true);
            Assert.That(layer.Items.Count, Is.EqualTo(1));
            Assert.That(layer.Items["schmurtz"].Status, Is.EqualTo(ConfigurationStatus.Runnable));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Runnable));
            result = layer.Items.Add("schmurtz", ConfigurationStatus.Running);
            Assert.That(result == true);
            Assert.That(layer.Items.Count, Is.EqualTo(1));
            Assert.That(layer.Items["schmurtz"].Status, Is.EqualTo(ConfigurationStatus.Running));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Running));
            Assert.That(countPropertyChangedEvent, Is.EqualTo(13));

            //OnRemoved tests
            layer.Items.Remove("schmurtz");
            Assert.That(result == true);
            Assert.That(result.IsSuccessful, Is.True);
            Assert.That(result.FailureCauses, Is.Not.Null);
            Assert.That(result.FailureCauses.Count, Is.EqualTo(0));
            Assert.That(countCollectionChangedEvent, Is.EqualTo(2));
            Assert.That(layer.Items["schmurtz"], Is.Null);
            Assert.Throws <IndexOutOfRangeException>(() => { ConfigurationItem lambdaItem = layer.Items[0]; });

            //tests with item reference when item is removed
            Assert.That(item.Layer, Is.EqualTo(null));
            Assert.That(item.ServiceOrPluginId, Is.EqualTo("schmurtz"));
            Assert.That(item.Status, Is.EqualTo(ConfigurationStatus.Optional));
            Assert.That(item.StatusReason, Is.EqualTo(null));
            Assert.Throws <InvalidOperationException>(() => item.StatusReason = "schmurtz");
            Assert.Throws <InvalidOperationException>(() => item.SetStatus(ConfigurationStatus.Runnable));

            //tests with multiple add
            result = layer.Items.Add("schmurtz2", ConfigurationStatus.Optional, "schmurtz?");
            Assert.That(result == true);
            result = layer.Items.Add("schmurtz1", ConfigurationStatus.Disable, "schmurtz?");
            Assert.That(result == true);
            Assert.That(layer.Items.Count, Is.EqualTo(2));

            //sort tests
            ConfigurationItem schmurtz1 = layer.Items["schmurtz1"];
            ConfigurationItem schmurtz2 = layer.Items["schmurtz2"];

            Assert.That(schmurtz1, Is.EqualTo(layer.Items[0]));
            Assert.That(schmurtz2, Is.EqualTo(layer.Items[1]));
            Assert.That(schmurtz1.StatusReason, Is.EqualTo("schmurtz?"));
            Assert.That(schmurtz2.StatusReason, Is.EqualTo("schmurtz?"));

            result = layer.Items.Add("schmurtz0", ConfigurationStatus.Running);
            ConfigurationItem schmurtz0 = layer.Items["schmurtz0"];

            Assert.That(schmurtz0, Is.EqualTo(layer.Items[0]));
            Assert.That(schmurtz1, Is.EqualTo(layer.Items[1]));
            Assert.That(schmurtz2, Is.EqualTo(layer.Items[2]));
        }
示例#17
0
        private void ValidarResponsavel()
        {
            ConfigurationLayer.SetConfig("Responsavel", NomeTextBox.Text);

            Close();
        }
示例#18
0
        public void LayerAddPrecedenceTest()
        {
            ConfigurationLayer layer = new ConfigurationLayer("TestConfig");

            bool result;

            // Precedence test for Disabled
            string pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add(pluginId, ConfigurationStatus.Disable);
            Assert.That(result, Is.True);
            Assert.That(layer.Items[pluginId].Status == ConfigurationStatus.Disable);

            result = layer.Items.Add(pluginId, ConfigurationStatus.Disable);
            Assert.That(result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation.");
            Assert.That(layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count.");

            result = layer.Items.Add(pluginId, ConfigurationStatus.Optional);
            Assert.That(result, Is.False, "Layer override precedence: changing Disabled status is not valid.");
            result = layer.Items.Add(pluginId, ConfigurationStatus.Runnable);
            Assert.That(result, Is.False, "Layer override precedence: changing Disabled status is not valid.");
            result = layer.Items.Add(pluginId, ConfigurationStatus.Running);
            Assert.That(result, Is.False, "Layer override precedence: changing Disabled status is not valid.");

            result = layer.Items.Add(pluginId, ConfigurationStatus.Disable);
            Assert.That(result, Is.True);

            result = layer.Items.Remove(pluginId);
            Assert.That(result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent.");

            // Precedence test for Running
            pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add(pluginId, ConfigurationStatus.Running);
            Assert.That(result, Is.True);
            Assert.That(layer.Items[pluginId].Status == ConfigurationStatus.Running);

            result = layer.Items.Add(pluginId, ConfigurationStatus.Running);
            Assert.That(result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation.");
            Assert.That(layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count.");

            result = layer.Items.Add(pluginId, ConfigurationStatus.Optional);
            Assert.That(result, Is.False, "Layer override precedence: changing Running status is not valid.");
            result = layer.Items.Add(pluginId, ConfigurationStatus.Runnable);
            Assert.That(result, Is.False, "Layer override precedence: changing Running status is not valid.");
            result = layer.Items.Add(pluginId, ConfigurationStatus.Disable);
            Assert.That(result, Is.False, "Layer override precedence: changing Running status is not valid.");

            result = layer.Items.Remove(pluginId);
            Assert.That(result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent.");

            // Precedence test for Optional -> Runnable -> Running
            pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add(pluginId, ConfigurationStatus.Optional);
            Assert.That(result, Is.True);
            Assert.That(layer.Items[pluginId].Status == ConfigurationStatus.Optional);

            result = layer.Items.Add(pluginId, ConfigurationStatus.Optional);
            Assert.That(result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation.");
            Assert.That(layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count.");

            result = layer.Items.Add(pluginId, ConfigurationStatus.Runnable);
            Assert.That(result, Is.False, "Layer override precedence: Optional -> Runnable is a valid operation.");
            Assert.That(layer.Items[pluginId].Status == ConfigurationStatus.Runnable);

            result = layer.Items.Add(pluginId, ConfigurationStatus.Running);
            Assert.That(result, Is.False, "Layer override precedence: Runnable -> Running is a valid operation.");
            Assert.That(layer.Items[pluginId].Status == ConfigurationStatus.Running);

            Assert.That(layer.Items.Count == 1, "Adding the same plugin over and over does not actually increment the count.");

            result = layer.Items.Remove(pluginId);
            Assert.That(result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent.");
        }
示例#19
0
        public void ManagerCreationTests()
        {
            ConfigurationManager cm = new ConfigurationManager();
            int managerChangingCount = 0;
            int managerChangedCount = 0;

            Assert.That( cm.FinalConfigurationLayer == null, "Initial FinalConfiguration is null." );

            cm.Changing += delegate( object sender, ConfigurationManagerChangingEventArgs e )
            {
                Assert.That( e.Cancel == false, "Configuration manager does not cancel by default." );
                Assert.That( e.FinalConfiguration != null, "Proposed FinalConfiguration exists." );

                managerChangingCount++;
            };

            cm.Changed += delegate( object sender, ConfigurationManagerChangedEventArgs e )
            {
                Assert.That( e.FinalConfiguration != null, "FinalConfiguration exists." );

                managerChangedCount++;
            };

            bool result;
            ConfigurationLayer layer = new ConfigurationLayer( "BaseConfig" );

            layer.Items.Add( "Yodii.ManagerService", ConfigurationStatus.Runnable );
            layer.Items.Add( Guid.NewGuid().ToString(), ConfigurationStatus.Disable );

            result = cm.Layers.Add( layer ); // Fires Changing => Changed once.
            Assert.That( result, Is.True );

            Assert.That( managerChangingCount == 1 );
            Assert.That( managerChangedCount == 1 );

            Assert.That( cm.FinalConfigurationLayer != null, "Non-cancelled FinalConfiguration exists." );
        }
示例#20
0
 public IConfigurationLayer Create( string layerName = null )
 {
     var layer = new ConfigurationLayer( _parent, layerName );
     _layers.Add( layer );
     return layer;
 }
示例#21
0
        public void Testout()
        {
            ConfigurationLayer cl = new ConfigurationLayer();

            ConfigurationItem item1 = new ConfigurationItem();
            cl.Items.AddConfigurationItem("plugin1", ConfigurationStatus.Running);

            Assert.That( item1.Status == ConfigurationStatus.Running );
            Assert.That( item1.ServiceOrPluginName == "plugin1" );

            ConfigurationItem item2 = new ConfigurationItem();
            cl.Items.AddConfigurationItem( "service1", ConfigurationStatus.Running );

            Assert.That( item1.Status == ConfigurationStatus.Running );
            Assert.That( item1.ServiceOrPluginName == "service1" );

            ConfigurationManager cm = new ConfigurationManager();

            cm.AddLayer( cl );

            Objectgraph Og = new ObjectGraph( cm );

            Og.Resolve();

            Og.Release();
        }
示例#22
0
        public void LayerCreationTest()
        {
            ConfigurationLayer layer = new ConfigurationLayer( "TestConfig" );
            Assert.That( layer.Items.Count == 0 );
            Assert.That( layer.ConfigurationName == "TestConfig" );

            string pluginIdentifier;
            bool result;

            // Add a random plugin GUID
            pluginIdentifier = Guid.NewGuid().ToString();
            result = layer.Items.Add( pluginIdentifier, ConfigurationStatus.Disable );
            Assert.That( result, Is.True );
            Assert.That( layer.Items.Count == 1 );
            Assert.That( layer.Items[pluginIdentifier], Is.InstanceOf<ConfigurationItem>() );

            // Add another random plugin GUID
            pluginIdentifier = Guid.NewGuid().ToString();
            result = layer.Items.Add( pluginIdentifier, ConfigurationStatus.Runnable );
            Assert.That( result, Is.True );
            Assert.That( layer.Items.Count == 2 );
            Assert.That( layer.Items[pluginIdentifier], Is.InstanceOf<ConfigurationItem>() );

            // Remove last plugin GUID
            result = layer.Items.Remove( pluginIdentifier );
            Assert.That( result, Is.True );
            Assert.That( layer.Items.Count == 1 );

            // Add some service
            pluginIdentifier = "Yodii.ManagerService";
            result = layer.Items.Add( pluginIdentifier, ConfigurationStatus.Runnable );
            Assert.That( result, Is.True );
            Assert.That( layer.Items.Count == 2 );
            Assert.That( layer.Items[pluginIdentifier], Is.InstanceOf<ConfigurationItem>() );
        }
示例#23
0
        public void LayerAddPrecedenceTest()
        {
            ConfigurationLayer layer = new ConfigurationLayer( "TestConfig" );

            bool result;

            // Precedence test for Disabled
            string pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add( pluginId, ConfigurationStatus.Disable );
            Assert.That( result, Is.True );
            Assert.That( layer.Items[pluginId].Status == ConfigurationStatus.Disable );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Disable );
            Assert.That( result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation." );
            Assert.That( layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count." );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Optional );
            Assert.That( result, Is.False, "Layer override precedence: changing Disabled status is not valid." );
            result = layer.Items.Add( pluginId, ConfigurationStatus.Runnable );
            Assert.That( result, Is.False, "Layer override precedence: changing Disabled status is not valid." );
            result = layer.Items.Add( pluginId, ConfigurationStatus.Running );
            Assert.That( result, Is.False, "Layer override precedence: changing Disabled status is not valid." );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Disable );
            Assert.That( result, Is.True );

            result = layer.Items.Remove( pluginId );
            Assert.That( result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent." );

            // Precedence test for Running
            pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add( pluginId, ConfigurationStatus.Running );
            Assert.That( result, Is.True );
            Assert.That( layer.Items[pluginId].Status == ConfigurationStatus.Running );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Running );
            Assert.That( result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation." );
            Assert.That( layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count." );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Optional );
            Assert.That( result, Is.False, "Layer override precedence: changing Running status is not valid." );
            result = layer.Items.Add( pluginId, ConfigurationStatus.Runnable );
            Assert.That( result, Is.False, "Layer override precedence: changing Running status is not valid." );
            result = layer.Items.Add( pluginId, ConfigurationStatus.Disable );
            Assert.That( result, Is.False, "Layer override precedence: changing Running status is not valid." );

            result = layer.Items.Remove( pluginId );
            Assert.That( result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent." );

            // Precedence test for Optional -> Runnable -> Running
            pluginId = Guid.NewGuid().ToString();

            result = layer.Items.Add( pluginId, ConfigurationStatus.Optional );
            Assert.That( result, Is.True );
            Assert.That( layer.Items[pluginId].Status == ConfigurationStatus.Optional );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Optional );
            Assert.That( result, Is.True, "Adding the same plugin twice, in the same state, is a valid operation." );
            Assert.That( layer.Items.Count == 1, "Adding the same plugin twice, in the same state, does not actually add it and increment the count." );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Runnable );
            Assert.That( result, Is.False, "Layer override precedence: Optional -> Runnable is a valid operation." );
            Assert.That( layer.Items[pluginId].Status == ConfigurationStatus.Runnable );

            result = layer.Items.Add( pluginId, ConfigurationStatus.Running );
            Assert.That( result, Is.False, "Layer override precedence: Runnable -> Running is a valid operation." );
            Assert.That( layer.Items[pluginId].Status == ConfigurationStatus.Running );

            Assert.That( layer.Items.Count == 1, "Adding the same plugin over and over does not actually increment the count." );

            result = layer.Items.Remove( pluginId );
            Assert.That( result, Is.True, "Plugin can always be removed if it exists and layer isn't bound to a parent." );
        }