public void IntegrationTest() { /*var cs_assembly = CSharpFunctionExtractor.ExtractAssembly( * @"F:\Main Folder\Аспирантура\Диссертация\Program\DF2\SimpleMethods.dll" * //@"F:\Main Folder\Аспирантура\Диссертация\Program\DF2\Core\Core\bin\Debug\netcoreapp1.1\Core.dll" * ); * * var e1 = cs_assembly.CSharpClass.First(); * var e2 = e1.CSharpFunction.First(x => x.FuncName.Equals("Sum")); * * * Sum = e2;*/ //var xx = SimpleMethods.Simple.Math.Sum; var computing_core = ComputingCore.InitComputingCore(); computing_core.AddAssembly(@"F:\Main Folder\Аспирантура\Диссертация\Program\DF2\SimpleMethods\bin\Debug\netcoreapp1.1\SimpleMethods.dll"); //computing_core.AddFuction(cs_assembly.CSharpClass.First().CSharpFunction); //computing_core.AddFuction(new Function[] { Sum, Mul, BuildedControlFunction, BuildedControlFunction2 }); /* * * var output_data_header = new DataCellHeader() * { * Owners = new List<Owner>(), * CallStack = new List<string>() { "User1", "Process1", "result" }, * HasValue = new Dictionary<Owner, bool>() * }; * * * //var control_function = Simple.MainHeader; * var input_data = CommandBuilder.BuildInputData(new object[] {1, 2, 3, 4, 5, 6, 7, 8}, new List<string>() {"User1", "Process1" }); * //computing_core.AddFuction(new List<Function>(){BuildedControlFunction}); * var command_headers = new List<CommandHeader>() * { * new CommandHeader() * { * //CallStack = new List<string>() { "User1", "Process1", "User1.BasicFunctions.ControlCallFunction" }, * CallStack = new List<string>() { "User1", "Process1" }, * FunctionHeader = CommandBuilder.BuildHeader("Main", $"SimpleMethods.Control.Simple".Split('.').ToList()),//(FunctionHeader)BuildedControlFunction.Header,//CommandBuilder.BuildHeader("Main", $"SimpleMethods.Control.Simple".Split('.').ToList()), //SimpleMethods.Control.Simple.MainHeader, * InputDataHeaders = input_data.Select(x=>(DataCellHeader)x.Header).ToList(), * OutputDataHeader = output_data_header, * TriggeredCommands = new List<InvokeHeader>() * } * }; * * * computing_core.AddDataCell(input_data); * computing_core.AddCommandHeaders(command_headers); * * * var r = computing_core.GetDataCell(new []{ output_data_header }).FirstOrDefault(); * */ var r = computing_core.Exec("SimpleMethods.Control.Simple.Main", 1, 2, 3, 4, 5, 6, 7, 8).Result; //r.Wait(); /*while (r == null || r.Data == null) * { * //r = computing_core.GetDataCell(new[] { output_data_header }).FirstOrDefault(); * }*/ //Thread.Sleep(1000); StackTraceLogger.Wait(); var log = StackTraceLogger.GetLog(); var scheme = StackTraceLogger.GetLogScheme(); if (r == null) { Console.WriteLine("null"); } else { Console.WriteLine(r.Data.ToString()); Assert.Fail(r.Data.ToString()); } }
private void Invoke() { while (true) { _eventReset.WaitOne(); lock (object_lock) { if (Interlocked.Read(ref _queueLength) > 0) { Interlocked.Decrement(ref _queueLength); } else { _eventReset.Reset(); continue; } } try { CommandQueue.TryDequeue(out Command command); //Console.WriteLine(string.Format("{2} Job.Invoke {0} начал выполнять функцию {1}", Id, string.Join("/", ((DataCellHeader)command.OutputData.Header).CallStack), DateTime.Now)); //Parallel.Invoke(() => { Parallel.Invoke(() => { Parallel.Invoke(() => { throw new Exception("!"); }); }); }); if (command.ConditionData.Any(x => x.HasValue == null || !x.HasValue.Value)) { throw new Exception("Хрень!"); } _executionManager.Execute(command.Function, command.InputData, command.OutputData, new CommandContext() { Header = new InvokeHeader() { CallStack = command.Header.CallStack } }); // Interlocked.Decrement(ref _queueLength); /*command.OutputData.Data * command.OutputData.HasValue = true;*/ //invoke StackTraceLogger.Write(command); /* * string str = ""; * * str += command.Header.CallstackToString() + " : "; * str += command.Function.GetHeader<FunctionHeader>().CallstackToString(".") + "("; * * str += string.Join(", ", command.InputData.Select(x => x.GetHeader<DataCellHeader>().CallstackToString())); * * str += ")"; * * str += " -> " + command.OutputData.Header.CallstackToString(); * Console.WriteLine(str);*/ //Console.WriteLine(string.Format("{2} Job.Invoke {0} выполнил функцию {1}", Id, string.Join("/", ((DataCellHeader)command.OutputData.Header).CallStack), DateTime.Now)); //Console.WriteLine(string.Format("{2} Job.Invoke {0} выполнил функцию {1}", Id, string.Join("/", ((DataCellHeader)command.OutputData.Header).CallStack), DateTime.Now)); Parallel.Invoke(() => { Callback(command); }); } catch (Exception e) { Console.WriteLine(e.Message); } // Console.WriteLine("Job.Invoke"); } }