Пример #1
0
        public void TestErrorRun()
        {
            PythonFileDM file = new PythonFileDM();

            file.ID         = TestingTools.RandomInt;
            file.Name       = TestingTools.RandomString + ".py";
            file.SourceCode = "System.out.println(123)";

            Guid instanceUID = new Guid();

            var returnCount = 0;

            PyProjectManager.Register(instanceUID, (sender, e) => {
                if (returnCount == 0)
                {
                    Assert.AreEqual(e.Value, "");
                }
                else if (returnCount == 1)
                {
                    var result2 = String.Format("Traceback (most recent call last):\r\n  File \"C:\\PythonServer\\fiddle{0}\\{1}\", line 1, in <module>\r\n    System.out.println(123)\r\nNameError: name 'System' is not defined\r\n", instanceUID, file.Name);
                    Assert.AreEqual(e.Value, result2);
                }
                returnCount++;
            });
            PyProjectManager.Execute(instanceUID, file);
        }
Пример #2
0
        /// <summary>
        /// Execute a project.
        /// </summary>
        /// <param name="uid">Id for project.</param>
        /// <param name="fileDM">File domain model.</param>
        public static void Execute(Guid uid, PythonFileDM fileDM)
        {
            PyProject project = projects[uid];

            project.Create(SERVER_LOCATION, "fiddle" + uid);
            var location = PyTools.CreatePath(SERVER_LOCATION, "fiddle" + uid);
            var file     = new PyFile(fileDM.ID, location, fileDM.Name, fileDM.SourceCode);

            project.AddFile(file);
            project.StartUpFileID = file.ID;
            project.Run();
        }
Пример #3
0
        public void TestValidRun()
        {
            PythonFileDM file = new PythonFileDM();

            file.ID         = TestingTools.RandomInt;
            file.Name       = TestingTools.RandomString;
            file.SourceCode = "print 123";

            Guid instanceUID = new Guid();

            PyProjectManager.Register(instanceUID, (sender, e) => Assert.AreEqual(e.Value, "123\r\n"));
            PyProjectManager.Execute(new Guid(), file);
        }
Пример #4
0
        public void DoesMapToDM()
        {
            PythonFileDTO dto = new PythonFileDTO();

            dto.ID            = 3;
            dto.Name          = "MyTestDTO";
            dto.PatchClientID = 1;
            dto.PatchType     = "create";
            dto.SourceCode    = "1231213123";

            PythonFileDM dm = dto.Map();

            Assert.AreEqual(dto.ID, dm.ID);
            Assert.AreEqual(dto.Name, dm.Name);
            Assert.AreEqual(dto.SourceCode, dm.SourceCode);
            AbstractDataModel <PythonFileDM> adm = dm as AbstractDataModel <PythonFileDM>;

            Assert.AreEqual(dto.PatchClientID, adm.PatchClientID);
            Assert.AreEqual(dto.PatchType, adm.PatchType);
        }
Пример #5
0
        public HttpResponseMessage RunFiddle()
        {
            HttpContext currentContext = HttpContext.Current;

            if (currentContext.IsWebSocketRequest ||
                currentContext.IsWebSocketRequestUpgrading)
            {
                WebSocketHandler handler = new WebSocketHandler(currentContext);
                handler.OnOpen = uid =>
                {
                    PyProjectManager.Register(uid, (sender, e) => handler.Send(e.Value));
                };
                handler.OnReceive = (uid, msg) =>
                {
                    PythonFileDM file = JsonUtils.DeserializeObject <PythonFileDM>(msg);
                    PyProjectManager.Execute(uid, file);
                };
                handler.OnClose = uid => PyProjectManager.Remove(uid);
            }
            return(Request.CreateResponse(HttpStatusCode.SwitchingProtocols));
        }
Пример #6
0
 public IHttpActionResult CreateFile([FromBody] PythonFileDM file)
 {
     RC.PythonFileManager.Commit(CommitTypeEnum.ADD, file);
     return(ResponseUtils.CreateResponse(HttpStatusCode.OK, file));
 }
Пример #7
0
 public IHttpActionResult UpdateFile([FromBody] PythonFileDM file, [FromUri] int id)
 {
     RC.PythonFileManager.Commit(CommitTypeEnum.UPDATE, file, id: id);
     return(ResponseUtils.CreateResponse(HttpStatusCode.OK, file));
 }