Beispiel #1
0
        public void Start_Should_Return_The_Return_Value_Of_ProcessStarter_Start()
        {
            // ARRANGE
            const string location       = @"c:\mongo\bin\mongod.exe";
            var          options        = new MongodExeOptions(27017, @"c:\temp\radom-path");
            var          exeLocatorMock = new Mock <IMongoExeLocator>();

            exeLocatorMock.Setup(l => l.Locate()).Returns(() => location);
            var processMock = new Mock <IProcess>();

            processMock.SetupAllProperties();
            var processStarterMock = new Mock <IProcessStarter>();

            processStarterMock.Setup(starter => starter.Start(It.IsAny <ProcessStartInfo>()))
            .Returns <ProcessStartInfo>(info => processMock.Object);

            var exeFacade = new MongodExeFacade(exeLocatorMock.Object, processStarterMock.Object);

            // ACT
            IProcess process = exeFacade.Start(options);

            // ASSERT
            processStarterMock.Verify(starter => starter.Start(It.IsAny <ProcessStartInfo>()), Times.Once());
            Assert.True(ReferenceEquals(process, processMock.Object));
        }
Beispiel #2
0
        public void Start_Should_Call_ProcessStarter_With_Correct_Parameters()
        {
            // ARRANGE
            const string location       = @"c:\mongo\bin\mongod.exe";
            var          options        = new MongodExeOptions(27017, @"c:\temp\radom-path");
            var          exeLocatorMock = new Mock <IMongoExeLocator>();

            exeLocatorMock.Setup(l => l.Locate()).Returns(() => location);
            var processStarterMock = new Mock <IProcessStarter>();

            processStarterMock.Setup(starter => starter.Start(It.IsAny <ProcessStartInfo>()))
            .Returns <ProcessStartInfo>(info =>
            {
                var processMock = new Mock <IProcess>();
                processMock.Setup(p => p.StartInfo).Returns(info);

                return(processMock.Object);
            });

            var exeFacade = new MongodExeFacade(exeLocatorMock.Object, processStarterMock.Object);

            // ACT
            IProcess process = exeFacade.Start(options);

            // ASSERT
            processStarterMock.Verify(starter => starter.Start(It.IsAny <ProcessStartInfo>()), Times.Once());
            Assert.Equal(options.ToString(), process.StartInfo.Arguments);
            Assert.Equal(location, process.StartInfo.FileName);
        }
Beispiel #3
0
        public IProcess Start(MongodExeOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            string exeLocation      = _exeLocator.Locate();
            string exeArgs          = options.ToString();
            var    processStartInfo = new ProcessStartInfo(exeLocation, exeArgs)
            {
                CreateNoWindow         = true,
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                RedirectStandardError  = true
            };

            return(_processStarter.Start(processStartInfo));
        }
Beispiel #4
0
        internal static MongoTestServer Start(UInt16 port, IMongoExeLocator mongoExeLocator, IProcessStarter processStarter, IFileSystem fileSystem)
        {
            if (mongoExeLocator == null)
            {
                throw new ArgumentNullException(nameof(mongoExeLocator));
            }

            if (processStarter == null)
            {
                throw new ArgumentNullException(nameof(processStarter));
            }

            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

            var      exeFacade        = new MongodExeFacade(mongoExeLocator, processStarter);
            string   dbPath           = fileSystem.CreateTempFolder();
            var      mongodExeOptions = new MongodExeOptions(port, dbPath);
            IProcess process          = exeFacade.Start(mongodExeOptions);

            return(new MongoTestServer(port, process, fileSystem, dbPath));
        }