コード例 #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="servers"></param>
        /// <param name="messageReceivers"></param>
        /// <remarks>internal nur, damit wir in den Tests rankommen</remarks>
        internal void CheckIfUpdateIsNecessaryAndEnqueueCommands(Settings settings, IEnumerable<IUpdatePackage> servers, IEnumerable<INotificationReceiver> messageReceivers)
        {
            if (_checkTimer.IsCheckForUpdatesNecessary(settings.Global.CheckIntervalMinutes))
            {
                var commands = _commandBuilder.GetCommands(settings.Global.WorkFolder, servers, messageReceivers);

                foreach (var command in commands)
                {
                    // Damit wir keine doppelte Arbeit machen, packen wir Commands nur dann rein, wenn noch kein Command für das gleiche
                    // Update-Paket vorhanden ist.
                    // Das klappt hier nur so einfach, weil wir ja genau genommen immer nur das CheckIfNewer-Command bekommen, und alles weitere 
                    // erst nach und nach in die Warteschlange kommt. 
                    if (!UpdatePackageInCommandAlreadyQueued(command, CommandsProducerConsumer.Queue))
                    {
                        _logger.Debug("Queueing first command for {PackageName}", command.PackageName);
                        CommandsProducerConsumer.Queue.TryAdd(command);
                    }
                }
            }
        }
コード例 #2
0
        async Task IAutoUpdaterCommandCreator.NeverendingCreationLoop(Settings settings)
        {
            var servers = _configurationConverter.ConvertServers(settings.Servers);
            var messageReceivers = _configurationConverter.ConvertMessageReceivers(settings.Global.ResultMessageReceivers, settings.Global.EMailSettings, settings.Global.EMailPickupDirectory, settings.Global.EMailSenderName);

            await Task.Run(async () =>
            {
                TimeSpan waitTime;

                while (true)
                {
                    try
                    {
                        CheckIfUpdateIsNecessaryAndEnqueueCommands(settings, servers, messageReceivers);
                    }
                    catch (Exception ex)
                    {
                        _logger.Error("NeverendingCreationLoop: " + ex.Message + " @ " + ex.StackTrace);
                    }
                    waitTime = CalculateWaitTimeToNextMinute(_nowGetter);
                    await Task.Delay(waitTime);
                }
            });
        }
コード例 #3
0
        public void JsonFileConfigurationTest_Get_BasicConfiguration()
        {
            var content = @"{
                          'global': {
                            'eMailSettings': {
                                'address': 'smtp.mailserver.com',
                              'username': '******',
                              'password': '******',
                                'useDefaultCredentials': 'false',
                            },
                            'eMailPickupDirectory': 'C:\\Mails\\Pickup\\',
                            'eMailSenderName': '*****@*****.**',
                            'workFolder': 'C:\\Temp\\IwAutoUpdater\\',
                            'checkIntervalMinutes': 15,
                            'resultMessageReceivers': [
                              {
                                'type': 'EMail',
                                'receiver': '*****@*****.**'
                              }
                            ]
                          },
                          'servers': [
                            {
                              'type': 'localFile',
                              'path': '//otherSystem/buildDir/Server1_Packaged.zip',
                              'downloadOnly': 'false',
                              'skipDatabaseUpdate': 'false',
                              'installerCommand': 'install-stuff.bat',
                              'installerCommandArguments':  'fromA toB',
                              'databaseUpdaterCommand': 'update-db.exe',
                              'databaseUpdaterCommandArguments': '--cs=""<<connectionString>>""',
                              'connectionString': 'Server=myServerAddress;Database=myDataBase;Integrated Security=true;',
                                'checkUrlsAfterInstallation': [
                                        'http://www.firsturl.de', 'https://*****:*****@wow.com",
                    ResultMessageReceivers = new MessageReceiver[]
                    {
                        new MessageReceiver()
                        {
                            Receiver = "*****@*****.**",
                            Type = Base.MessageReceiverType.EMail
                        }
                    },
                    WorkFolder = "C:\\Temp\\IwAutoUpdater\\"
                },
                Servers = new ServerSettings[]
                {
                    new ServerSettings()
                    {
                        DownloadOnly = false,
                        Path = @"//otherSystem/buildDir/Server1_Packaged.zip",
                        SkipDatabaseUpdate = false,
                        Type = Base.GetDataMethod.LocalFile,
                        InstallerCommand = "install-stuff.bat",
                        InstallerCommandArguments = "fromA toB",
                        DatabaseUpdaterCommand = "update-db.exe",
                        DatabaseUpdaterCommandArguments = @"--cs=""<<connectionString>>""",
                        ConnectionString = "Server=myServerAddress;Database=myDataBase;Integrated Security=true;",
                        CheckUrlsAfterInstallation = new[] { "http://www.firsturl.de", "https://*****:*****@".\Webmenue\versioninfo.xml"
                    }
                }
            };

            Assert.IsNotNull(actual);

            Assert.AreEqual(expected.Global.CheckIntervalMinutes, actual.Global.CheckIntervalMinutes);

            Assert.AreEqual(expected.Global.EMailSettings.Password, actual.Global.EMailSettings.Password);
            Assert.AreEqual(expected.Global.EMailSettings.Address, actual.Global.EMailSettings.Address);
            Assert.AreEqual(expected.Global.EMailSettings.Username, actual.Global.EMailSettings.Username);
            Assert.AreEqual(expected.Global.EMailSettings.UseDefaultCredentials, actual.Global.EMailSettings.UseDefaultCredentials);
            Assert.AreEqual(expected.Global.EMailPickupDirectory, actual.Global.EMailPickupDirectory);
            Assert.AreEqual(expected.Global.EMailSenderName, actual.Global.EMailSenderName);

            Assert.AreEqual(expected.Global.ResultMessageReceivers.ElementAt(0).Receiver, actual.Global.ResultMessageReceivers.ElementAt(0).Receiver);
            Assert.AreEqual(expected.Global.ResultMessageReceivers.ElementAt(0).Type, actual.Global.ResultMessageReceivers.ElementAt(0).Type);

            Assert.AreEqual(expected.Global.WorkFolder, actual.Global.WorkFolder);

            Assert.AreEqual(expected.Servers.ElementAt(0).Path, actual.Servers.ElementAt(0).Path);
            Assert.AreEqual(expected.Servers.ElementAt(0).Type, actual.Servers.ElementAt(0).Type);
            Assert.AreEqual(expected.Servers.ElementAt(0).DownloadOnly, actual.Servers.ElementAt(0).DownloadOnly);
            Assert.AreEqual(expected.Servers.ElementAt(0).SkipDatabaseUpdate, actual.Servers.ElementAt(0).SkipDatabaseUpdate);

            Assert.AreEqual(expected.Servers.ElementAt(0).InstallerCommand, actual.Servers.ElementAt(0).InstallerCommand);
            Assert.AreEqual(expected.Servers.ElementAt(0).InstallerCommandArguments, actual.Servers.ElementAt(0).InstallerCommandArguments);

            Assert.AreEqual(expected.Servers.ElementAt(0).DatabaseUpdaterCommand, actual.Servers.ElementAt(0).DatabaseUpdaterCommand);
            Assert.AreEqual(expected.Servers.ElementAt(0).DatabaseUpdaterCommandArguments, actual.Servers.ElementAt(0).DatabaseUpdaterCommandArguments);
            Assert.AreEqual(expected.Servers.ElementAt(0).ConnectionString, actual.Servers.ElementAt(0).ConnectionString);

            Assert.IsTrue(expected.Servers.ElementAt(0).CheckUrlsAfterInstallation.SequenceEqual(actual.Servers.ElementAt(0).CheckUrlsAfterInstallation));
            Assert.AreEqual(expected.Servers.ElementAt(0).CheckUrlProxySettings, actual.Servers.ElementAt(0).CheckUrlProxySettings);

            Assert.AreEqual(expected.Servers.ElementAt(0).ReadVersionInfoFrom, actual.Servers.ElementAt(0).ReadVersionInfoFrom);
        }
コード例 #4
0
        public void TestInitialize()
        {
            TestCleanup();

            _settings = new Settings();
            _settings.Global = new GlobalSettings()
            {
                CheckIntervalMinutes = 5
            };

            _nowGetterMock = new NowGetterMock();
            _checkTimerMock = new CheckTimerMock();
            _configurationConverterMock = new ConfigurationConverterMock();
            _commandBuilderMock = new CommandBuilderMock();
            _loggerMock = new LoggerMock();

            _autoUpdaterCommandCreator = new AutoUpdaterCommandCreator(_checkTimerMock, _configurationConverterMock, _commandBuilderMock, _nowGetterMock, _loggerMock);
        }