Esempio n. 1
0
        public void Constructor_MissingFile_ThrowsFileNotFoundException()
        {
            // Arrange
            var missingFile = new FileInfo("./FileThatDoesntExist");

            // Act
            var act = new Action(() => _ = new RemoteAgentProcess(missingFile));

            // Assert
            Assert.ThrowsException <FileNotFoundException>(act);
        }
Esempio n. 2
0
        public void Constructor_WithExecutableFile_ThrowsWhenNotExecutable()
        {
            // Arrange
            const string FILE_NAME = "./File.bad";

            File.Create(FILE_NAME).Dispose();
            var wrongExtension = new FileInfo(FILE_NAME);

            // Act
            var act = new Action(() => _ = new RemoteAgentProcess(wrongExtension));

            // Assert
            Assert.ThrowsException <FormatException>(act);
            File.Delete(FILE_NAME);
        }
Esempio n. 3
0
        public async Task StartAgent_WithExecutableFile_StartsProcess()
        {
            // Arrange
            var exeFile = new FileInfo(AGENT_EXE_NAME);
            var cancel  = new CancellationTokenSource();

            // Act
            using (var remoteProcess = new RemoteAgentProcess(exeFile)) {
                cancel.CancelAfter(TimeSpan.FromSeconds(6));
                await remoteProcess.StartAgentProcess(cancel.Token);

                // Assert
                Assert.IsTrue(remoteProcess.AgentIsRunning);
                await remoteProcess.WaitForExit();
            }
        }
Esempio n. 4
0
        public async Task CancelToken_ForRunningAgent_ClosesProcess()
        {
            // Arrange
            var cancel = new CancellationTokenSource();

            cancel.CancelAfter(TimeSpan.FromSeconds(8));

            // Act
            using (var remoteProcess = new RemoteAgentProcess(new FileInfo(AGENT_EXE_NAME))) {
                await remoteProcess.StartAgentProcess(cancel.Token);

                await remoteProcess.WaitForExit();

                // Assert
                Assert.IsFalse(remoteProcess.AgentIsRunning);
            }
        }
Esempio n. 5
0
        public void Constructor_WithFileNotExecutable_ThrowsNoExceptions()
        {
            // Arrange
            string NAMED_EXE_FILE = "./Executable.exe";

            File.Create(NAMED_EXE_FILE).Dispose();
            var       correctExtension = new FileInfo(NAMED_EXE_FILE);
            Exception exception        = null;

            // Act
            try {
                var _ = new RemoteAgentProcess(correctExtension);
            }
            catch (Exception ex) {
                exception = ex;
            }

            // Assert
            Assert.IsNull(exception);
            File.Delete(NAMED_EXE_FILE);
        }
Esempio n. 6
0
        public async Task StartAgent_WithExecutableFile_ThrowsNoException()
        {
            // Arrange
            Exception exception = null;
            var       cancel    = new CancellationTokenSource();

            cancel.CancelAfter(TimeSpan.FromSeconds(EXE_START_TIME));

            try {
                // Act
                using (var remoteProcess = new RemoteAgentProcess(new FileInfo(AGENT_EXE_NAME))) {
                    await remoteProcess.StartAgentProcess(cancel.Token);

                    await remoteProcess.WaitForExit();
                }
            }
            catch (Exception ex) {
                exception = ex;
            }

            // Assert
            Assert.IsNull(exception);
            cancel.Dispose();
        }
        public async Task Connect_RemoteAgentRunning_ConnectsToAgent()
        {
            // Arrange
            const string AGENT_EXE_NAME          = "./Agent/RemoteHost.exe";
            const int    CONNECT_TIMEOUT_SECONDS = 20;
            var          agentExecFile           = new FileInfo(AGENT_EXE_NAME);

            var cancel = new CancellationTokenSource();

            using (var remoteProcess = new RemoteAgentProcess(agentExecFile)) {
                await remoteProcess.StartAgentProcess(cancel.Token);

                // Act
                var connectTimeout = TimeSpan.FromSeconds(CONNECT_TIMEOUT_SECONDS);
                var client         = new RemoteUnityDriverClient(connectTimeout);
                var connected      = await client.Connect();

                // Assert
                cancel.Cancel();
                await remoteProcess.WaitForExit();

                Assert.IsTrue(connected, "Failed to connect.");
            }
        }