示例#1
0
        public void Setup()
        {
            if (SIL.PlatformUtilities.Platform.IsWindows)
            {
                const string tempPath = @"C:\Tmp";
                Environment.SetEnvironmentVariable("TMP", tempPath);
                Environment.SetEnvironmentVariable("TEMP", tempPath);

                Directory.CreateDirectory(tempPath);
            }

            _env = new TestEnvironment();
            _languageDepotFolder = new TemporaryFolder(TestContext.CurrentContext.Test.Name + Path.GetRandomFileName());
            _lDSettings          = new LfMergeSettingsDouble(_languageDepotFolder.Path);
            Directory.CreateDirectory(_lDSettings.WebWorkDirectory);
            LanguageDepotMock.ProjectFolderPath =
                Path.Combine(_lDSettings.WebWorkDirectory, TestContext.CurrentContext.Test.Name, TestLangProj);
            Directory.CreateDirectory(LanguageDepotMock.ProjectFolderPath);
            _lfProject = LanguageForgeProject.Create(TestLangProj);
            _mongoProjectRecordFactory = MainClass.Container.Resolve <LfMerge.Core.MongoConnector.MongoProjectRecordFactory>() as MongoProjectRecordFactoryDouble;
            // Even though the EnsureCloneActionWithoutMongo class has "WithoutMongo" in the name, the EnsureClone class which it inherits from
            // needs an IMongoConnection argument in the constructor, so we have to create a MongoConnectionDouble that we're not going to use here.
            var _mongoConnection = MainClass.Container.Resolve <IMongoConnection>();

            _EnsureCloneAction       = new EnsureCloneActionWithoutMongo(_env.Settings, _env.Logger, _mongoProjectRecordFactory, _mongoConnection);
            LanguageDepotMock.Server = new MercurialServer(LanguageDepotMock.ProjectFolderPath);
        }
示例#2
0
		protected LanguageForgeProject(string projectCode, LfMergeSettings settings = null)
		{
			_settings = settings ?? MainClass.Container.Resolve<LfMergeSettings>();
			_projectCode = projectCode.ToLowerInvariant();
			_state = ProcessingState.Deserialize(projectCode);
			IsInitialClone = false;
		}
示例#3
0
 public EnsureCloneActionDoubleMockErrorCondition(LfMergeSettings settings, ILogger logger,
                                                  MongoProjectRecordFactory projectRecordFactory, IMongoConnection connection,
                                                  string cloneResult) :
     base(settings, logger, projectRecordFactory, connection)
 {
     _cloneResult = cloneResult;
 }
        public void Setup()
        {
            _env = new TestEnvironment();
            _env.Settings.CommitWhenDone = true;
            _counts    = MainClass.Container.Resolve <EntryCounts>();
            _lfProject = LanguageForgeProject.Create(testProjectCode);
            TestEnvironment.CopyFwProjectTo(testProjectCode, _env.Settings.WebWorkDirectory);

            // Guids are named for the diffs for the modified test project
            _testEntryGuid        = Guid.Parse(testEntryGuidStr);
            _testCreatedEntryGuid = Guid.Parse(testCreatedEntryGuidStr);
            _testDeletedEntryGuid = Guid.Parse(testDeletedEntryGuidStr);

            _languageDepotFolder = new TemporaryFolder("SyncTestLD" + Path.GetRandomFileName());
            _lDSettings          = new LfMergeSettingsDouble(_languageDepotFolder.Path);
            Directory.CreateDirectory(_lDSettings.WebWorkDirectory);
            LanguageDepotMock.ProjectFolderPath = Path.Combine(_lDSettings.WebWorkDirectory, testProjectCode);

            _mongoConnection = MainClass.Container.Resolve <IMongoConnection>() as MongoConnectionDouble;
            if (_mongoConnection == null)
            {
                throw new AssertionException("Sync tests need a mock MongoConnection that stores data in order to work.");
            }
            _recordFactory = MainClass.Container.Resolve <MongoProjectRecordFactory>() as MongoProjectRecordFactoryDouble;
            if (_recordFactory == null)
            {
                throw new AssertionException("Sync tests need a mock MongoProjectRecordFactory in order to work.");
            }

            _transferFdoToMongo = new TransferFdoToMongoAction(_env.Settings, _env.Logger, _mongoConnection, _recordFactory);
        }
示例#5
0
 public EnsureCloneActionDouble(LfMergeSettings settings, ILogger logger,
                                MongoProjectRecordFactory projectRecordFactory, IMongoConnection connection,
                                bool projectExists = true, bool throwAuthorizationException = true) :
     base(settings, logger, projectRecordFactory, connection)
 {
     _projectExists = projectExists;
     _throwAuthorizationException = throwAuthorizationException;
 }
示例#6
0
        public Queue(LfMergeSettings settings, QueueNames name)
        {
            if (name == QueueNames.None)
            {
                throw new ArgumentException("Can't create a queue of type QueueNames.None", "name");
            }

            Settings = settings;
            Name     = name;
        }
示例#7
0
 public FwProject(LfMergeSettings settings, string database)
 {
     _project = new ProjectIdentifier(settings.FdoDirectorySettings, database);
     _fdoUi   = new ConsoleFdoUi(_progress.SynchronizeInvoke);
     Cache    = TryGetFdoCache();
     if (Cache != null)
     {
         ServiceLocator = new FwServiceLocatorCache(Cache.ServiceLocator);
     }
 }
示例#8
0
 public static void CreateQueueDirectories(LfMergeSettings settings)
 {
     foreach (QueueNames queueName in Enum.GetValues(typeof(QueueNames)))
     {
         var queueDir = settings.GetQueueDirectory(queueName);
         if (queueDir != null)
         {
             Directory.CreateDirectory(queueDir);
         }
     }
 }
示例#9
0
 public void SetUpForFdoTests()
 {
     LanguageForgeFolder = new TemporaryFolder("FdoTestFixture");
     env = new TestEnvironment(
         resetLfProjectsDuringCleanup: false,
         languageForgeServerFolder: LanguageForgeFolder
         );
     Settings = new LfMergeSettingsDouble(LanguageForgeFolder.Path);
     TestEnvironment.CopyFwProjectTo(testProjectCode, Settings.FdoDirectorySettings.DefaultProjectsDirectory);
     lfProj = LanguageForgeProject.Create(testProjectCode);
 }
示例#10
0
 public void Setup()
 {
     MagicStrings.SetMinimalModelVersion(FdoCache.ModelVersion);
     _env = new TestEnvironment();
     _languageDepotFolder = new TemporaryFolder(TestContext.CurrentContext.Test.Name + Path.GetRandomFileName());
     _lDSettings          = new LfMergeSettingsDouble(_languageDepotFolder.Path);
     Directory.CreateDirectory(_lDSettings.WebWorkDirectory);
     LanguageDepotMock.ProjectFolderPath =
         Path.Combine(_lDSettings.WebWorkDirectory, TestLangProj);
     Directory.CreateDirectory(LanguageDepotMock.ProjectFolderPath);
     _lfProject               = LanguageForgeProject.Create(TestLangProj);
     _synchronizeAction       = new SynchronizeAction(_env.Settings, _env.Logger);
     _workDir                 = Directory.GetCurrentDirectory();
     LanguageDepotMock.Server = new MercurialServer(LanguageDepotMock.ProjectFolderPath);
 }
示例#11
0
        public FwProject(LfMergeSettings settings, string database)
        {
            // We don't want to use a global writing system store, so we insert a null singleton
            if (!SingletonsContainer.Contains <CoreGlobalWritingSystemRepository>())
            {
                SingletonsContainer.Add(typeof(CoreGlobalWritingSystemRepository).FullName, null);
            }

            _project = new ProjectIdentifier(settings.LcmDirectorySettings, database);
            _lcmUi   = new ConsoleLcmUi(_progress.SynchronizeInvoke);
            Cache    = TryGetLcmCache();
            if (Cache != null)
            {
                ServiceLocator = new FwServiceLocatorCache(Cache.ServiceLocator);
            }
        }
示例#12
0
        private static bool CheckSetup(LfMergeSettings settings)
        {
            var homeFolder = Environment.GetEnvironmentVariable("HOME") ?? "/var/www";

            string[] folderPaths = { Path.Combine(homeFolder, ".local"),
                                     Path.GetDirectoryName(settings.WebWorkDirectory) };
            foreach (string folderPath in folderPaths)
            {
                if (!Directory.Exists(folderPath))
                {
                    MainClass.Logger.Notice("Folder '{0}' doesn't exist", folderPath);
                    return(false);
                }
            }

            return(true);
        }
示例#13
0
        public void Dispose()
        {
            if (_mongoConnection != null)
            {
                _mongoConnection.Reset();
            }

            MainClass.Container.Dispose();
            MainClass.Container = null;
            if (_resetLfProjectsDuringCleanup)
            {
                LanguageForgeProjectAccessor.Reset();
            }
            _languageForgeServerFolder.Dispose();
            Settings = null;

            DirectoryFinder.UnitTestHelper.ResetStaticVars();
        }
示例#14
0
 public TestEnvironment(bool registerSettingsModelDouble          = true,
                        bool registerProcessingStateDouble        = true,
                        bool resetLfProjectsDuringCleanup         = true,
                        TemporaryFolder languageForgeServerFolder = null,
                        bool registerLfProxyMock = true)
 {
     _resetLfProjectsDuringCleanup = resetLfProjectsDuringCleanup;
     _languageForgeServerFolder    = languageForgeServerFolder ?? new TemporaryFolder(TestName + Path.GetRandomFileName());
     Environment.SetEnvironmentVariable("FW_CommonAppData", _languageForgeServerFolder.Path);
     MainClass.Container = RegisterTypes(registerSettingsModelDouble,
                                         registerProcessingStateDouble, _languageForgeServerFolder.Path,
                                         registerLfProxyMock).Build();
     Settings         = MainClass.Container.Resolve <LfMergeSettings>();
     MainClass.Logger = MainClass.Container.Resolve <ILogger>();
     Directory.CreateDirectory(Settings.FdoDirectorySettings.ProjectsDirectory);
     Directory.CreateDirectory(Settings.FdoDirectorySettings.TemplateDirectory);
     Directory.CreateDirectory(Settings.StateDirectory);
     _mongoConnection = MainClass.Container.Resolve <IMongoConnection>() as MongoConnectionDouble;
 }
示例#15
0
        public void Dispose()
        {
            _mongoConnection?.Reset();

            MainClass.Container?.Dispose();
            MainClass.Container = null;
            if (_resetLfProjectsDuringCleanup)
            {
                LanguageForgeProjectAccessor.Reset();
            }
            _languageForgeServerFolder?.Dispose();
            Settings = null;
            if (_releaseSingletons)
            {
                SingletonsContainer.Release();
            }

            Environment.SetEnvironmentVariable("FW_CommonAppData", null);
        }
示例#16
0
 public TestEnvironment(bool registerSettingsModelDouble          = true,
                        bool registerProcessingStateDouble        = true,
                        bool resetLfProjectsDuringCleanup         = true,
                        TemporaryFolder languageForgeServerFolder = null)
 {
     _resetLfProjectsDuringCleanup = resetLfProjectsDuringCleanup;
     _languageForgeServerFolder    = languageForgeServerFolder ?? new TemporaryFolder(TestName + Path.GetRandomFileName());
     Environment.SetEnvironmentVariable("FW_CommonAppData", _languageForgeServerFolder.Path);
     MainClass.Container = RegisterTypes(registerSettingsModelDouble,
                                         registerProcessingStateDouble, _languageForgeServerFolder.Path).Build();
     Settings         = MainClass.Container.Resolve <LfMergeSettings>();
     MainClass.Logger = MainClass.Container.Resolve <ILogger>();
     Directory.CreateDirectory(Settings.LcmDirectorySettings.ProjectsDirectory);
     Directory.CreateDirectory(Settings.LcmDirectorySettings.TemplateDirectory);
     Directory.CreateDirectory(Settings.StateDirectory);
     _mongoConnection = MainClass.Container.Resolve <IMongoConnection>() as MongoConnectionDouble;
     // only call SingletonsContainer.Release() at the end if we actually create the
     // singleton
     _releaseSingletons = !SingletonsContainer.Contains <CoreGlobalWritingSystemRepository>();
 }
示例#17
0
 public EnsureCloneAction(LfMergeSettings settings, ILogger logger, MongoProjectRecordFactory projectRecordFactory, IMongoConnection connection) : base(settings, logger)
 {
     _projectRecordFactory = projectRecordFactory;
     _connection           = connection;
 }
示例#18
0
 public NoneAction(LfMergeSettings settings, ILogger logger) : base(settings, logger)
 {
 }
示例#19
0
 public QueueDouble(LfMergeSettings settings, QueueNames name) : base(settings, name)
 {
 }
示例#20
0
 public CommitAction(LfMergeSettings settings, ILogger logger) : base(settings, logger)
 {
 }
示例#21
0
 public void SetSettings(LfMergeSettings settings)
 {
     Settings = settings;
 }
示例#22
0
 public ProcessingState(string projectCode, LfMergeSettings settings) : this()
 {
     ProjectCode = projectCode;
     SetSettings(settings);
 }
示例#23
0
 public Factory(LfMergeSettings settings)
 {
     Settings = settings;
 }
示例#24
0
 public TransferMongoToLcmAction(LfMergeSettings settings, ILogger logger, IMongoConnection conn, MongoProjectRecordFactory factory, EntryCounts entryCounts) : base(settings, logger)
 {
     EntryCounts           = entryCounts;
     _connection           = conn;
     _projectRecordFactory = factory;
 }
示例#25
0
 public EnsureCloneActionDoubleMockingInitialTransfer(LfMergeSettings settings, ILogger logger,
                                                      MongoProjectRecordFactory projectRecordFactory, IMongoConnection connection, bool projectExists = true) :
     base(settings, logger, projectRecordFactory, connection, projectExists)
 {
     InitialCloneWasRun = false;
 }
示例#26
0
 public TransferFdoToMongoAction(LfMergeSettings settings, ILogger logger, IMongoConnection conn, MongoProjectRecordFactory projectRecordFactory) : base(settings, logger)
 {
     _connection           = conn;
     _projectRecordFactory = projectRecordFactory;
 }
示例#27
0
 public ProcessingStateDouble(string projectCode, LfMergeSettings settings) : base(projectCode, settings)
 {
     SavedStates = new List <ProcessingState.SendReceiveStates>();
 }
示例#28
0
 public ProcessingStateFactoryDouble(LfMergeSettings settings)
 {
     Settings = settings;
 }
示例#29
0
 public SyslogProgress(ILogger logger, LfMergeSettings settings)
 {
     Logger      = logger;
     ShowVerbose = settings.VerboseProgress;
 }
示例#30
0
 protected Action(LfMergeSettings settings, ILogger logger)
 {
     Settings = settings;
     Logger   = logger;
     Progress = MainClass.Container.Resolve <IProgress>();
 }