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"]);
 }
예제 #3
0
        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));
    }
예제 #6
0
        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);
        }
예제 #7
0
    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;
    }