static void Main(string[] args) { SparkConf sparkConf = new SparkConf(); SparkContext sc = new SparkContext(sparkConf); SqlContext sqlContext = new SqlContext(sc); var scriptEngine = new RoslynScriptEngine(sc, sqlContext); var repl = new Repl(scriptEngine, new ConsoleIoHandler()); repl.Init(); repl.Run(); scriptEngine.Close(); }
public void Test() { var sc = new SparkContext("", ""); var sqlContext = new SqlContext(sc); var scriptEngine = new RoslynScriptEngine(sc, sqlContext); var ioHandler = new TestIoHandler(); var repl = new Repl(scriptEngine, ioHandler); repl.Init(); var thread = new Thread(() => { repl.Run();}) { IsBackground = false }; thread.Start(); Thread.Sleep(1000); Assert.IsTrue(ioHandler.output.Any()); Assert.AreEqual("> ", ioHandler.output.Last()); ioHandler.output.Clear(); // empty input ioHandler.input.Add(" "); // incomplete code block ioHandler.input.Add("if (true) {"); ioHandler.input.Add("return 1024; }"); // execution exception ioHandler.input.Add("new Exception(\"Test\")"); // compile exception ioHandler.input.Add("var a=;"); // load non-exist library ioHandler.input.Add(":load \"non-exist.dll\""); // load library var sampleDLL = scriptEngine.CompilationDumpPath(0); ioHandler.input.Add(":load \"" + sampleDLL + "\""); // invalid :load directive ioHandler.input.Add(":load x"); // invalid directive ioHandler.input.Add(":invalid directive"); // :help directive ioHandler.input.Add(":help"); // quit REPL ioHandler.input.Add(":quit"); thread.Join(); scriptEngine.Close(); Console.WriteLine(string.Join("\r\n", ioHandler.output)); var seq = 0; Assert.AreEqual("> ", ioHandler.output[seq++]); Assert.AreEqual(". ", ioHandler.output[seq++]); Assert.AreEqual("1024", ioHandler.output[seq++]); Assert.AreEqual("> ", ioHandler.output[seq++]); // execution exception Assert.IsTrue(ioHandler.output[seq++].Contains("System.Exception: Test")); Assert.AreEqual("> ", ioHandler.output[seq++]); // compile exception Assert.IsTrue(ioHandler.output[seq++].Contains("Exception")); Assert.AreEqual("> ", ioHandler.output[seq++]); // load non-exist library Assert.IsTrue(ioHandler.output[seq++].Contains("Failed to load assebmly")); Assert.AreEqual("> ", ioHandler.output[seq++]); // load library Assert.IsTrue(ioHandler.output[seq++].Contains("Loaded assebmly")); Assert.AreEqual("> ", ioHandler.output[seq++]); // invalid :load directive Assert.IsTrue(ioHandler.output[seq++].Contains("Invalid :load directive")); Assert.AreEqual("> ", ioHandler.output[seq++]); // invalid directive Assert.IsTrue(ioHandler.output[seq++].Contains("Invalid directive")); Assert.AreEqual("> ", ioHandler.output[seq++]); // help directive Assert.IsTrue(ioHandler.output[seq++].Contains("Commands")); Assert.AreEqual("> ", ioHandler.output[seq++]); }