public void TestACM_BFBCap_Defaults() { IDictionary <string, object> output; IConsumerRun run = (IConsumerRun) new InMemorySinterConsumer(); Assert.IsFalse(run.IsEngineRunning); Assert.IsFalse(run.IsSimulationInitializing); Assert.IsFalse(run.IsSimulationOpened); ((InMemorySinterConsumer)run).job = new InMemoryJobACM_BFBCap(); try { Assert.IsTrue(run.Run()); Assert.IsTrue(run.IsSimulationOpened); IJobConsumerContract job = ((InMemorySinterConsumer)run).job; Assert.IsTrue(job.IsSuccess()); output = job.Process.Output; Assert.IsNotNull(output); foreach (KeyValuePair <string, object> kv in output) { Debug.WriteLine(String.Format("{0} : {1}", kv.Key, kv.Value)); } } finally { Debug.WriteLine("Attempt Cleanup"); run.CleanUp(); } Object d; output.TryGetValue("status", out d); JObject statusD = (JObject)d; JToken status = statusD.GetValue("value"); Assert.AreEqual <int>(status.Value <int>(), 0); }
public void TestACM_BFBCap_Inputs() { IDictionary <string, object> output; IConsumerRun run = (IConsumerRun) new InMemorySinterConsumer(); Assert.IsFalse(run.IsEngineRunning); Assert.IsFalse(run.IsSimulationInitializing); Assert.IsFalse(run.IsSimulationOpened); ((InMemorySinterConsumer)run).job = new InMemoryJobACM_BFBCap(); ((InMemorySinterConsumer)run).job.Process.Input["UQ_nv"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["rgndx"] = 0.0225; ((InMemorySinterConsumer)run).job.Process.Input["BFBadsT.Lb"] = 4.2; ((InMemorySinterConsumer)run).job.Process.Input["UQ_A3"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_A2"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_A1"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["GHXfg.A_exch"] = 5749.66; ((InMemorySinterConsumer)run).job.Process.Input["BFBrgnB.Lb"] = 4.2; ((InMemorySinterConsumer)run).job.Process.Input["UQ_E3"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_E2"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_E1"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_fg_flow"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["rgnDt"] = 12.0; ((InMemorySinterConsumer)run).job.Process.Input["CW_SHXlean.A_exch"] = 400.0; ((InMemorySinterConsumer)run).job.Process.Input["BFBadsM.Lb"] = 4.2; ((InMemorySinterConsumer)run).job.Process.Input["adsN"] = 15.0; ((InMemorySinterConsumer)run).job.Process.Input["rgnN"] = 15.0; ((InMemorySinterConsumer)run).job.Process.Input["adsdx"] = 0.0275; ((InMemorySinterConsumer)run).job.Process.Input["LR_SHXlean.A_exch"] = 7000.0; ((InMemorySinterConsumer)run).job.Process.Input["BFBrgnT.Lb"] = 4.2; ((InMemorySinterConsumer)run).job.Process.Input["adsDt"] = 15.0; ((InMemorySinterConsumer)run).job.Process.Input["rgnlhx"] = 0.08; ((InMemorySinterConsumer)run).job.Process.Input["adslhx"] = 0.4; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dS1"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dS2"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dS3"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["BFBadsB.Lb"] = 4.2; ((InMemorySinterConsumer)run).job.Process.Input["LR_SHXrich.A_exch"] = 5000.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dH1"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dH3"] = 1.0; ((InMemorySinterConsumer)run).job.Process.Input["UQ_dH2"] = 1.0; try { Assert.IsTrue(run.Run()); Assert.IsTrue(run.IsSimulationOpened); IJobConsumerContract job = ((InMemorySinterConsumer)run).job; Assert.IsTrue(job.IsSuccess()); output = job.Process.Output; Assert.IsNotNull(output); foreach (KeyValuePair <string, object> kv in output) { Debug.WriteLine(String.Format("{0} : {1}", kv.Key, kv.Value)); } } finally { Debug.WriteLine("Attempt Cleanup"); run.CleanUp(); } Object d; output.TryGetValue("status", out d); JObject statusD = (JObject)d; JToken status = statusD.GetValue("value"); Assert.AreEqual <int>(status.Value <int>(), 0); }
/// <summary> /// Run pops a job descriptor off the queue and manages the underlying AspenSinter /// </summary> /// <returns></returns> public bool Run() { // RESET ALL instance variables except sim bool prevJobIsTerminated = isTerminated; isSetup = false; isTerminated = false; running = false; var job = GetNextJob(); this.job = job; if (job == null) { Debug.WriteLine(DateTime.Now.ToString() + " - No submitted jobs in queue", "SinterConsumer.Run"); return(false); } visible = job.Visible; IProcess process = null; if (job.Reset == false && sim != null && prevJobIsTerminated == false && RunNoReset(job)) { Debug.WriteLine(String.Format("{0} - Found JOB(noreset): {1}", DateTime.Now.ToString(), job.Id), "SinterConsumer.Run"); return(true); } Debug.WriteLine(String.Format("{0} - Found JOB(reset): {1}", DateTime.Now.ToString(), job.Id), "SinterConsumer.Run"); CleanUp(); sim = null; Debug.WriteLine(String.Format("Setup Sinter Process {0}", job.Id), "SinterConsumer.Run"); process = DoSetup(job); var maxAttemptsReadSetup = 5; DoConfigure(job, process, maxAttemptsReadSetup); Debug.WriteLine(String.Format("Move Job {0} to state Running", job.Id), "SinterConsumer.Run"); job.Running(); IDictionary <String, Object> inputDict = null; String data = null; JObject defaults = null; JObject inputs = null; // NOTE: Quick Fix. Serializing Dicts into string json // and back to JObject because of API change to sinter. // Better to refactor interfaces, etc to hand back strings try { inputDict = process.Input; data = JsonConvert.SerializeObject(inputDict); inputs = JObject.Parse(data); } catch (System.Data.SqlClient.SqlException ex) { Debug.WriteLine("SqlException: " + ex.Message, "SinterConsumer.Run"); Debug.WriteLine(ex.StackTrace, "SinterConsumer.Run"); sim.closeSim(); sim = null; throw; } catch (Exception ex) { sim.closeSim(); job.Error("Failed to Create Inputs to Simulation (Bad Simulation defaults or Job inputs)"); job.Message(ex.StackTrace.ToString()); throw; } Debug.WriteLine("Initialize", "SinterConsumer.Run"); try { DoInitialize(job, sim, defaults); } catch (System.Data.SqlClient.SqlException ex) { Debug.WriteLine("SqlException: " + ex.Message, "SinterConsumer.Run"); Debug.WriteLine(ex.StackTrace, "SinterConsumer.Run"); sim.closeSim(); sim = null; throw; } catch (Exception ex) { Debug.WriteLine("DoInitialize Exception Close: " + ex.Message, "SinterConsumer.Run"); sim.closeSim(); sim = null; throw; } Debug.WriteLine("Run", "SinterConsumer.Run"); try { DoRun(job, sim, defaults, inputs); } catch (System.Data.SqlClient.SqlException ex) { Debug.WriteLine("SqlException: " + ex.Message, "SinterConsumer.Run"); Debug.WriteLine(ex.StackTrace, "SinterConsumer.Run"); sim.closeSim(); sim = null; throw; } catch (Exception ex) { Debug.WriteLine("DoRun Exception Close", "SinterConsumer.Run"); job.Error("Exception: " + ex.Message); sim.closeSim(); sim = null; throw; } Debug.WriteLine("Finalize", "SinterConsumer.Run"); try { DoFinalize(sim, job, process); last_simulation_name = job.SimulationId; last_simulation_success = job.IsSuccess(); } catch (System.Data.SqlClient.SqlException ex) { Debug.WriteLine("SqlException: " + ex.Message, "SinterConsumer.Run"); Debug.WriteLine(ex.StackTrace, "SinterConsumer.Run"); sim.closeSim(); sim = null; throw; } catch (Exception ex) { Debug.WriteLine("DoFinalize Exception Close", "SinterConsumerRun.Run"); Debug.WriteLine(ex.Message, "SinterConsumerRun.Run"); Debug.WriteLine(ex.StackTrace, "SinterConsumerRun.Run"); job.Error("Exception: " + ex.Message); sim.closeSim(); sim = null; throw; } return(true); }