public void Exception() { EvaluationScript es = new EvaluationScript() { Script = "raise ValueError('this is an exception')", Timeout = 1.0, }; pp.SendAndEvaluateProgram(es); }
public void TimeoutReal() { string script; using (StreamReader sr = new StreamReader(@"Data\PythonProcessTimeout.txt")) { script = sr.ReadToEnd(); } EvaluationScript es = new EvaluationScript() { Script = script, Timeout = 1.0, }; var res = pp.SendAndEvaluateProgram(es); Assert.IsNotNull(res["exception"]); Assert.AreEqual("Timeout occurred.", res["exception"]); }
public Tuple <IEnumerable <bool>, IEnumerable <double>, double, string> EvaluateProgram(string program, string input, string output, IEnumerable <int> indices, double timeout = 1) { EvaluationScript es = CreateEvaluationScript(program, input, output, timeout); JObject json = SendAndEvaluateProgram(es); var helper = GetVariablesFromJson(json, indices.Count()); if (!String.IsNullOrEmpty(helper.Item4) && helper.Item4.Contains("SyntaxError")) { using (System.IO.StreamWriter file = new System.IO.StreamWriter("SyntaxError-Script-" + Path.GetRandomFileName() + ".txt")) { file.WriteLine(es.Script); } } return(helper); }
public void TimeoutSimple() { EvaluationScript es = new EvaluationScript() { Script = @"def fib(x): i = 1 j = 1 sum = 0 for _ in range(0, x): sum = i + j j = i i = sum fib(200000)", Timeout = 1.0, }; var res = pp.SendAndEvaluateProgram(es); Assert.IsNotNull(res["exception"]); Assert.AreEqual("Timeout occurred.", res["exception"]); }
public void NormalResult() { string script, resultJson; using (StreamReader sr = new StreamReader(@"Data\PythonProcessNormal.txt")) { script = sr.ReadToEnd(); } EvaluationScript es = new EvaluationScript() { Script = script, Timeout = 1.0, Variables = new List<string>() { "cases", "caseQuality", "quality" } }; var res = pp.SendAndEvaluateProgram(es); using (StreamReader sr = new StreamReader(@"Data\NormalResultJson.txt")) { resultJson = sr.ReadToEnd(); } var expected = JObject.Parse(resultJson); Assert.IsTrue(JObject.EqualityComparer.Equals(expected, res)); }
public JObject SendAndEvaluateProgram(EvaluationScript es) { ManualResetEventSlim wh = new ManualResetEventSlim(false); es.Id = Guid.NewGuid().ToString(); string send = JsonConvert.SerializeObject(es); var et = new EvalTask(send, wh); evalTaskBag.Add(et); evaluationThreadPool.EnqueueTask(et); wh.Wait(); EvalTask help; if (!evalTaskBag.TryTake(out help)) { Console.WriteLine("Could not remove item from bag!"); } return(et.Result); }
public JObject SendAndEvaluateProgram(EvaluationScript es) { ManualResetEventSlim wh = new ManualResetEventSlim(false); es.Id = Guid.NewGuid().ToString(); string send = JsonConvert.SerializeObject(es); var et = new EvalTask(send, wh); evalTaskBag.Add(et); evaluationThreadPool.EnqueueTask(et); wh.Wait(); EvalTask help; if (!evalTaskBag.TryTake(out help)) { Console.WriteLine("Could not remove item from bag!"); } return et.Result; }