public int Delete(Guid session) { int num = 0; int count = 0; num += Cancel(session); num += Terminate(session); using (TurbineModelContainer container = new TurbineModelContainer()) { Session obj = container.Sessions.First <Session>(s => s.Id == session); count = obj.Jobs.Count <Job>(); foreach (var job in obj.Jobs) { SinterProcess p = job.Process; container.DeleteObject(p); job.Messages.ToList().ForEach(m => container.DeleteObject(m)); } obj.Jobs.ToList().ForEach(j => container.DeleteObject(j)); container.DeleteObject(obj); container.SaveChanges(); } return(count); }
void SetInput(string data) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); entity.Input = data; container.SaveChanges(); } }
//Sets the dir in the function to MyDocs, but doesn't actually chdir void SetWorkingDirectory(string path) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); entity.WorkingDir = path; container.SaveChanges(); } }
public void SetStatus(int status) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); entity.Status = status; container.SaveChanges(); } }
public static IProcess Get(Guid id) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); return(new SinterProcessContract() { id = id }); } }
static int Main(string[] args) { var options = new Options(); if (!CommandLine.Parser.Default.ParseArguments(args, options)) { return(4); } if (options.Args.Count != 3) { Console.Write(options.GetUsage()); return(5); } String sinterconf = options.Args[0]; String infilename = options.Args[1]; String outfilename = options.Args[2]; String workingDir = Path.GetDirectoryName(sinterconf); String filenameBase = Path.GetFileNameWithoutExtension(sinterconf); String performanceFile = Path.Combine(workingDir, filenameBase + "._time.txt"); JArray inputsArray = parseCSVInputs(infilename); JArray outputsArray = new JArray(); List <sinter_AppError> runStatuses = null; List <List <object> > ts_byRunNumber = null; SinterProcess sp = new SinterProcess(); sp.runSeries(sinterconf, null, inputsArray, options.Relaunch, options.Timelimit, ref outputsArray, ref runStatuses, ref ts_byRunNumber); writeOutCsv(outfilename, outputsArray); CsvFileWriter csvWriter = new CsvFileWriter(performanceFile); string headerString = "Open Time, Sinter Sent Time, Send Time, Run Time, Receive Time, Sinter Recieve Time"; csvWriter.WriteLine(headerString); for (int ii = 0; ii < inputsArray.Count; ++ii) { csvWriter.WriteRow((List <object>)ts_byRunNumber[ii]); } csvWriter.Close(); Console.WriteLine("FINISHED. PRESS ENTER KEY TO EXIT PROGRAM."); Console.ReadLine(); return(0); }
public void UnitTest1() { String sinterconf = Properties.Settings.Default.UnitsTestSinter; String infilename = Properties.Settings.Default.UnitsTestInputs; String workingDir = Properties.Settings.Default.UnitsWorkingDir; StreamReader inStream = new StreamReader(infilename); StreamReader sinterConfigStream = new StreamReader(sinterconf); string inString = inStream.ReadToEnd(); string sinterConfigString = sinterConfigStream.ReadToEnd(); inStream.Close(); sinterConfigStream.Close(); JArray injson = (JArray)JToken.Parse(inString); JArray outjson = new JArray(); List <sinter_AppError> runStatuses = null; List <List <object> > ts_byRunNumber = null; SinterProcess sp = new SinterProcess(); sp.runSeries(sinterconf, null, injson, false, -1, ref outjson, ref runStatuses, ref ts_byRunNumber); Assert.IsTrue(runStatuses[0] == sinter_AppError.si_OKAY); //Verify the inputs Assert.IsTrue(212.0 == (double)outjson[0]["inputs"]["in.boil.celsius"]["value"]); Assert.IsTrue("degF" == (string)outjson[0]["inputs"]["in.boil.celsius"]["units"]); Assert.IsTrue(100.0 == (double)outjson[0]["inputs"]["in.boil.fahrenheit"]["value"]); Assert.IsTrue("degC" == (string)outjson[0]["inputs"]["in.boil.fahrenheit"]["units"]); Assert.IsTrue(-273.15 == (double)outjson[0]["inputs"]["in.misc.kelvin"]["value"][0]); Assert.IsTrue("degC" == (string)outjson[0]["inputs"]["in.misc.kelvin"]["units"]); //Verify the outputs Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(100.0, (double)outjson[0]["outputs"]["out.boil.celsius"]["value"], .00001)); Assert.IsTrue("degC" == (string)outjson[0]["outputs"]["out.boil.celsius"]["units"]); Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(212.0, (double)outjson[0]["outputs"]["out.boil.fahrenheit"]["value"], .00001)); Assert.IsTrue("degF" == (string)outjson[0]["outputs"]["out.boil.fahrenheit"]["units"]); Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(0, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][0], .00001)); Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(273.15, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][1], .00001)); Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(373.15, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][2], .00001)); Assert.IsTrue("K" == (string)outjson[0]["outputs"]["out.misc.kelvin"]["units"]); }
public void AddStderr(string data) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); byte[] stdout = entity.Stderr; if (stdout == null) { entity.Stderr = System.Text.Encoding.ASCII.GetBytes(data); } else { List <byte> list = new List <byte>(entity.Stderr); list.AddRange(System.Text.Encoding.ASCII.GetBytes(data)); entity.Stderr = list.ToArray <byte>(); } container.SaveChanges(); } }
public static IProcess New(int jobid) { Guid id = Guid.Empty; using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = new SinterProcess() { }; entity.Job = container.Jobs.Single <Job>(s => s.Id == jobid); container.SinterProcesses.AddObject(entity); id = entity.Id; container.SaveChanges(); } return(new SinterProcessContract() { id = id }); }
public void AddStreamError(Dictionary <string, List <string> > dictionary) { using (TurbineModelContainer container = new TurbineModelContainer()) { SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id); ProcessError error; foreach (KeyValuePair <String, List <String> > entry in dictionary) { foreach (String msg in entry.Value) { error = new ProcessError(); error.Type = "stream"; error.Name = entry.Key; error.Error = msg; entity.Errors.Add(error); } } container.SaveChanges(); } }
public static IProcess New(int jobid) { using (NHibernate.ISession session = SessionFactory.OpenSession()) { using (NHibernate.ITransaction trans = session.BeginTransaction()) { var job = session .CreateCriteria <Job>().Add(Restrictions.Eq("Id", jobid)) .UniqueResult <Job>(); var process = new SinterProcess() { job = job }; session.Save(process); trans.Commit(); return(new SinterProcessContract() { id = process.Id }); } } }
/// <summary> /// Main /// </summary> /// <param name="args"></param> /// <returns></returns> static int Main(string[] args) { var options = new Options(); if (!CommandLine.Parser.Default.ParseArguments(args, options)) { return(4); } if (options.Args.Count != 3) { Console.Write(options.GetUsage()); return(5); } String sinterconf = options.Args[0]; String infilename = options.Args[1]; String outfilename = options.Args[2]; String workingDir = Path.GetDirectoryName(sinterconf); String filenameBase = Path.GetFileNameWithoutExtension(sinterconf); String performanceFile = Path.Combine(workingDir, filenameBase + "._time.txt"); StreamReader inStream = new StreamReader(infilename); //So, at the end of this we should have 1 or more input sets in the JArray inputsArray //The console version reads in json, the actual version just pulls the dictionary from the database string injson = ""; JToken inputJToken = null; JArray inputsArray = null; //Will be set if the input file is a set of runs JArray outputsArray = new JArray(); try { injson = inStream.ReadToEnd(); inputJToken = JToken.Parse(injson); if (inputJToken is JArray) { inputsArray = (JArray)inputJToken; } else if (inputJToken is JObject) { //Console Sinter is expecting a JArray in the same format as the Gateway takes. [ { Input = {...} }, { { Inputs = {...} } ] inputsArray = new JArray(); JObject singleInputDict = (JObject)inputJToken; JObject outterDict = new JObject(); outterDict.Add("inputs", singleInputDict); inputsArray.Add(outterDict); } } catch (Exception ex) { Console.WriteLine("Exception while running simulation: " + ex.Message); } finally { inStream.Close(); } List <sinter_AppError> runStatuses = null; List <List <object> > ts_byRunNumber = null; // // NOTE: Implementation Detail WORKING DIRECTORY MUST CONTAIN SinterConfig File // SinterProcess sp = new SinterProcess(); sp.runSeries(sinterconf, null, inputsArray, options.Relaunch, options.Timelimit, ref outputsArray, ref runStatuses, ref ts_byRunNumber); JsonSerializerSettings jss = new JsonSerializerSettings(); jss.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; string jsonOutput = JsonConvert.SerializeObject(outputsArray, Formatting.Indented, jss); StreamWriter outStream = new StreamWriter(outfilename); outStream.WriteLine(jsonOutput); outStream.Close(); CsvFileWriter csvWriter = new CsvFileWriter(performanceFile); string headerString = "Open Time, Sinter Sent Time, Send Time, Run Time, Receive Time, Sinter Recieve Time"; csvWriter.WriteLine(headerString); for (int ii = 0; ii < inputsArray.Count; ++ii) { csvWriter.WriteRow((List <object>)ts_byRunNumber[ii]); } csvWriter.Close(); Console.WriteLine("FINISHED. PRESS ENTER KEY TO EXIT PROGRAM."); Console.ReadLine(); return(0); }
//[ClassInitialize()] public static void ClassInit(TestContext context) { using (TurbineModelContainer container = new TurbineModelContainer()) { foreach (User obj in container.Users) { container.Users.DeleteObject(obj); } foreach (Simulation obj in container.Simulations) { container.Simulations.DeleteObject(obj); } foreach (Job obj in container.Jobs) { container.Jobs.DeleteObject(obj); } foreach (AspenProcessError obj in container.AspenProcessErrors) { container.AspenProcessErrors.DeleteObject(obj); } foreach (SinterProcess obj in container.SinterProcesses) { container.SinterProcesses.DeleteObject(obj); } foreach (Consumer obj in container.Consumers) { container.Consumers.DeleteObject(obj); } foreach (Session obj in container.Sessions) { container.Sessions.DeleteObject(obj); } foreach (Message obj in container.Messages) { container.Messages.DeleteObject(obj); } container.SaveChanges(); byte[] bt = System.Text.Encoding.ASCII.GetBytes( File.ReadAllText(simulationBackupFile) ); byte[] cb = System.Text.Encoding.ASCII.GetBytes( File.ReadAllText(simulationConfigFile) ); simulationBackupMD5 = GetMd5Hash(bt); simulationConfigMD5 = GetMd5Hash(cb); var jsonDefaults = @"{""P_abs_top"":15.0,""abs_ht_wash"":5.0,""abs_ht_mid"":10.7,""abs_ic_dT"":-11.3,""P_sol_pump"":30.0,""lean_load"":0.178,""P_regen_top"":21.2,""cond_T_regen"":121.0,""ht_regen"":13.0,""slv_cool_01"":130.0,""lr_rich_T"":207.0,""input_s[0,0]"":134.4,""input_s[0,1]"":16.0,""input_s[0,2]"":959553.0,""input_s[0,3]"":0.071,""input_s[0,4]"":0.0,""input_s[0,5]"":0.0,""input_s[0,6]"":0.211,""input_s[0,7]"":0.0,""input_s[0,8]"":0.0,""input_s[0,9]"":0.0,""input_s[0,10]"":0.0,""input_s[0,11]"":0.0,""input_s[0,12]"":0.0,""input_s[0,13]"":0.0,""input_s[0,14]"":0.0,""input_s[0,15]"":0.718,""input_s[1,0]"":126.0,""input_s[1,1]"":30.0,""input_s[1,2]"":4319500.4116,""input_s[1,3]"":0.66207726067,""input_s[1,4]"":0.28374739743,""input_s[1,5]"":0.0,""input_s[1,6]"":0.0541753419,""input_s[1,7]"":0.0,""input_s[1,8]"":0.0,""input_s[1,9]"":0.0,""input_s[1,10]"":0.0,""input_s[1,11]"":0.0,""input_s[1,12]"":0.0,""input_s[1,13]"":0.0,""input_s[1,14]"":0.0,""input_s[1,15]"":0.0,""input_s[2,0]"":120.0,""input_s[2,1]"":30.0,""input_s[2,2]"":10000.0,""input_s[2,3]"":1.0,""input_s[2,4]"":0.0,""input_s[2,5]"":0.0,""input_s[2,6]"":0.0,""input_s[2,7]"":0.0,""input_s[2,8]"":0.0,""input_s[2,9]"":0.0,""input_s[2,10]"":0.0,""input_s[2,11]"":0.0,""input_s[2,12]"":0.0,""input_s[2,13]"":0.0,""input_s[2,14]"":0.0,""input_s[2,15]"":0.0,""eq_par[0,0]"":0.7996,""eq_par[0,1]"":-8094.81,""eq_par[0,2]"":0.0,""eq_par[0,3]"":-0.007484,""eq_par[1,0]"":98.566,""eq_par[1,1]"":1353.8,""eq_par[1,2]"":-14.3043,""eq_par[1,3]"":0.0,""eq_par[2,0]"":216.049,""eq_par[2,1]"":-12431.7,""eq_par[2,2]"":-35.4819,""eq_par[2,3]"":0.0,""eq_par[3,0]"":1.282562,""eq_par[3,1]"":-3456.179,""eq_par[3,2]"":0.0,""eq_par[3,3]"":0.0,""eq_par[4,0]"":132.899,""eq_par[4,1]"":-13445.9,""eq_par[4,2]"":-22.4773,""eq_par[4,3]"":0.0}"; System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); Byte[] defaultBytes = encoding.GetBytes(jsonDefaults); User u = null; Simulation s = null; Job job = null; SinterProcess p = null; Session session = null; //var consumer = new JobConsumer(); //consumer.guid = Guid.NewGuid(); //consumer.hostname = "test.host"; //container.Consumers.AddObject(consumer); //container.SaveChanges(); IConsumerRegistrationContract reg = new ConsumerRegistrationContract(); reg.Register(); IConsumerContext ctx = AppUtility.GetConsumerContext(); JobConsumer consumer = (JobConsumer)container.Consumers.First <Consumer>(r => r.guid == ctx.Id); for (int i = 1; i < 11; i++) { Debug.WriteLine("{0}", i); u = new User() { Name = "test" + i, Token = "qwerty" }; container.Users.AddObject(u); s = new Simulation() { Name = "testSim" + i, Backup = bt, Configuration = cb, Defaults = defaultBytes, User = u }; session = new Session(); var guid = Guid.NewGuid(); Debug.WriteLine("GUID: " + guid); session.guid = guid; session.Create = DateTime.UtcNow; session.User = u; container.Sessions.AddObject(session); p = new SinterProcess(); job = new Job() { State = "create", Create = DateTime.UtcNow, Simulation = s, User = u, Process = p, Session = session, JobConsumer = consumer }; var msg = new Message(); msg.Value = "test harness"; job.Messages.Add(msg); for (int j = 1; j < 4; j++) { p.Errors.Add(new AspenProcessError() { Name = String.Format("Block{0}{1}", i, j), Type = "block", Error = "TEST" + i }); } } container.SaveChanges(); } }