Пример #1
0
        public void StartTest(int block, int count)
        {
            var srcDir = string.Format("{0}\\WebServerTest", TestUtil.ProjectDirectory());

            //こちらの自作cat.exeでは、200Mbyteまでしか対応できていない
            var execProcess = new ExecProcess(string.Format("{0}\\cat.exe",srcDir), "", srcDir,null);

            var buf = new byte[block];
            for (var b = 0; b < block; b++) {
                buf[b] = (byte)b;
            }
            var inputStream = new WebStream(block*count);
            for (var i = 0; i < count; i++) {
                inputStream.Add(buf);
            }
            WebStream outputStream;
            execProcess.Start(inputStream,out outputStream);

            for (var i = 0; i < count; i++) {
                var len = outputStream.Read(buf, 0, buf.Length);
                Assert.AreEqual(len, block);
                if(i==0){
                    Assert.AreEqual(buf[0], 0);
                    Assert.AreEqual(buf[1], 1);
                    Assert.AreEqual(buf[2], 2);

                }
            }

            outputStream.Dispose();
            inputStream.Dispose();
        }
Пример #2
0
        public bool Exec(Target target, string param, Env env, WebStream inputStream, out WebStream outputStream, int cgiTimeout)
        {
            var cmd = target.CgiCmd;

            if (cmd == null)
            {
                outputStream = new WebStream(-1);
                outputStream.Add(Encoding.ASCII.GetBytes("cmd==null"));
                return(false);
            }
            if (cmd.ToUpper().IndexOf("COMSPEC") == 0)
            {
                cmd = Environment.GetEnvironmentVariable("ComSpec");
                // /cがウインドウクローズのために必要
                param = "/c " + param;
            }
            else if (cmd.ToUpper().IndexOf("CMD.EXE") != -1)
            {
                cmd = target.FullPath;
            }
            else
            {
                param = string.Format("{0} {1}", Path.GetFileName(target.FullPath), param);
            }

            var execProcess = new ExecProcess(cmd, param, Path.GetDirectoryName(target.FullPath), env);

            return(execProcess.Start(inputStream, out outputStream));
        }
Пример #3
0
        public bool Exec(Target target, string param, Env env, WebStream inputStream, out WebStream outputStream, int cgiTimeout)
        {
            var cmd = target.CgiCmd;
            if(cmd==null){
                outputStream = new WebStream(-1);
                outputStream.Add(Encoding.ASCII.GetBytes("cmd==null"));
                return false;
            }
            if (cmd.ToUpper().IndexOf("COMSPEC") == 0) {
                cmd = Environment.GetEnvironmentVariable("ComSpec");
                // /cがウインドウクローズのために必要
                param = "/c " + param;
            } else if (cmd.ToUpper().IndexOf("CMD.EXE") != -1) {
                cmd = target.FullPath;
            } else {
                param = string.Format("{0} {1}", Path.GetFileName(target.FullPath), param);
            }

            var execProcess = new ExecProcess(cmd, param, Path.GetDirectoryName(target.FullPath),env);
            return execProcess.Start(inputStream,out outputStream);
        }