Ejemplo n.º 1
0
            private void ReadLoop()
            {
                var line = process.ReadLine();

                while (line != null)
                {
                    status = line;
                    Logger.Trace("<o {0}", line);
                    line = process.ReadLine();
                }
            }
Ejemplo n.º 2
0
        public static void Web(Config config, Action action)
        {
            Directory.CreateDirectory(config.WebRoot);
            var zippath = PathTools.Combine(config.WebRoot, "Daemon.StaticWebServer.zip");

            if (File.Exists(zippath))
            {
                File.Delete(zippath);
            }
            Logger.Trace("Zipping to {0}", zippath);
            ZipTools.ZipFromFiles(zippath, ExecutableTools.Directory()
                                  , "Daemon.StaticWebServer.exe"
                                  , "SharpDaemon.dll"
                                  );
            var process = new DaemonProcess(new DaemonProcess.Args
            {
                Executable = ExecutableTools.Relative("Daemon.StaticWebServer.exe"),
                Arguments  = $"EndPoint={config.WebEP} Root=\"{config.WebRoot}\"",
            });

            Logger.Trace("Web process {0} {1} {2} {3}", process.Id, process.Name, process.Info.FileName, process.Info.Arguments);
            var reader = new Runner(new Runner.Args {
                ThreadName = "WEB"
            });

            reader.Run(() =>
            {
                var line = process.ReadLine();
                while (line != null)
                {
                    Logger.Trace("<w {0}", line);
                    line = process.ReadLine();
                }
            });
            using (reader)
            {
                using (process)
                {
                    action();
                }
            }
        }
Ejemplo n.º 3
0
        public static void Shell(string path, string args, Action <ITestShell> action)
        {
            using (var disposer = new Disposer())
            {
                var process = new DaemonProcess(new DaemonProcess.Args
                {
                    Executable = path,
                    Arguments  = args,
                });

                Logger.Trace("Shell process {0} {1}", process.Id, process.Name, process.Info.FileName);
                Logger.Trace("Shell path {0}", process.Info.FileName);
                Logger.Trace("Shell args {0}", process.Info.Arguments);

                var shell  = new TestShell();
                var reader = new Runner(new Runner.Args {
                    ThreadName = "SDTOUT"
                });
                var erroer = new Runner(new Runner.Args {
                    ThreadName = "STDERR"
                });
                var writer = new Runner(new Runner.Args {
                    ThreadName = "STDIN"
                });
                reader.Run(() =>
                {
                    var line = process.ReadLine();
                    while (line != null)
                    {
                        Logger.Trace("<o {0}", line);
                        shell.WriteLine("<o {0}", line);
                        line = process.ReadLine();
                    }
                    shell.WriteLine(Environ.NewLines);
                });
                erroer.Run(() =>
                {
                    var line = process.ReadError();
                    while (line != null)
                    {
                        Logger.Trace("<e {0}", line);
                        shell.WriteLine("<e {0}", line);
                        line = process.ReadError();
                    }
                });
                writer.Run(() =>
                {
                    var line = shell.ReadLine();
                    while (line != null)
                    {
                        Logger.Trace("i> {0}", line);
                        process.WriteLine(line);
                        line = shell.ReadLine();
                    }
                });
                disposer.Push(erroer);
                disposer.Push(reader);
                disposer.Push(process);
                disposer.Push(writer);
                disposer.Push(shell);

                action(shell);
            }
        }