public void TestSimulationContract() { var simContract = AspenSimulationContract.Get("testSim1"); //testSim1 is the first in Simulations var data = new Byte[] { 0XAA }; // Just a BS holder value in place of the aspen.bkp file //""abs_ht_wash"":5.0, var json = @"{""P_abs_top"":16.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,""reg_dia_in"":17.37,""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}"; var initialize = false; Dictionary <string, Object> inputData = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, Object> >(json); simContract.UpdateAspenBackup(data); // Set the aspen.bkp file to BS value (really this should've already been set when the sim was created) // Producer: Produces jobs to be run from simulations IJobProducerContract producer = simContract.NewJob(Guid.NewGuid(), initialize); // Ask the AspenSimulationContract to create a new job based on the selected simulation producer.Submit(); //Basically just sets state to submit int jobId = producer.Id; // Consumer: Pops submitted jobs off the 'queue' and runs them IJobConsumerContract consumer = new AspenJobConsumerContract() { Id = jobId }; IProcess process = consumer.Setup(); //Setup the job (change state, copy setup files) Returns SinterProcessContract process.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); //Sets the dir in the function to MyDocs, but doesn't actually chdir //process.Input = inputData.ToArray<string>(); //The varaible inputs are a file? I actually didn't expect that. process.Input = inputData; consumer.Running(); //Does some checking and changes state to running. Run will actually be done outside contract consumer.Success(); //Changes state to success. (Other option is error) Byte[] d2 = consumer.GetSimulationBackup(); //Final checks to make sure that all kinda worked. Assert.IsTrue(data.SequenceEqual(d2)); process = consumer.Process; Assert.IsTrue(inputData.SequenceEqual(process.Input)); }
public void TestJobProducerConsumerContracts() { // producers ISessionProducerContract producer = new AspenSessionProducerContract(); Guid session_id = producer.Create(); Assert.IsNotNull(session_id); ISimulationProducerContract simulation_contract; simulation_contract = AspenSimulationContract.Create("test", "AspenPlus"); Assert.IsTrue(File.Exists("mea-sinter.txt")); Assert.IsTrue(File.Exists("mea.bkp")); var configContent = File.ReadAllBytes("mea-sinter.txt"); var aspenfileContent = File.ReadAllBytes("mea.bkp"); Assert.IsTrue(configContent.Length > 0); Assert.IsTrue(aspenfileContent.Length > 0); System.Threading.Thread.Sleep(100); simulation_contract.UpdateInput("configuration", configContent, "plain/text"); System.Threading.Thread.Sleep(1000); simulation_contract.UpdateInput("aspenfile", aspenfileContent, "plain/text"); IJobProducerContract job_producer_contract = simulation_contract.NewJob(session_id, false, true); // consumers //IJobQueue queue = AppUtility.GetJobQueue(); // NHibernate IConsumerRegistrationContract contract = Turbine.Consumer.AppUtility.GetConsumerRegistrationContract(); contract.Register(); IJobConsumerContract job = contract.Queue.GetNext(); Assert.IsNull(job); job_producer_contract.Submit(); job = contract.Queue.GetNext(); Assert.IsNotNull(job); job.Setup(); IEnumerable <SimpleFile> files = job.GetSimulationInputFiles(); Assert.AreEqual <int>(files.Count <SimpleFile>(), 2); foreach (var f in files) { Assert.IsNotNull(f); Assert.IsNotNull(f.name); Debug.WriteLine("File: " + f.name, this.GetType().Name); Assert.IsNotNull(f.content); Assert.IsTrue(f.content.Length > 0); if (f.name == "configuration") { Assert.AreEqual <int>(f.content.Length, configContent.Length); } else if (f.name == "aspenfile") { Assert.AreEqual <int>(f.content.Length, aspenfileContent.Length); } else { Assert.Fail(String.Format("Unknown File {0}", f.name)); } } //byte[] backup = job.GetSimulationBackup(); //byte[] config = job.GetSimulationConfiguration(); //Assert(, //IJobConsumerContract consumer = AppUtility.GetJobConsumerContract(id); }
public void TestSessionProducerConsumerContracts() { // producers ISessionProducerContract producer = new AspenSessionProducerContract(); Guid session_id = producer.Create(); Assert.IsNotNull(session_id); ISimulationProducerContract simulation_contract = AspenSimulationContract.Create("testX", "AspenPlus"); var bytes = File.ReadAllBytes("mea-sinter.txt"); Assert.IsNotNull(bytes); Assert.IsTrue(bytes.Length > 0); System.Threading.Thread.Sleep(100); simulation_contract.UpdateInput("configuration", bytes, "plain/text"); bytes = File.ReadAllBytes("mea.bkp"); Assert.IsNotNull(bytes); Assert.IsTrue(bytes.Length > 0); System.Threading.Thread.Sleep(100); simulation_contract.UpdateInput("aspenfile", bytes, "plain/text"); IJobProducerContract job_producer_contract = simulation_contract.NewJob(session_id, false, true); job_producer_contract = simulation_contract.NewJob(session_id, false, true); IConsumerRegistrationContract contract = Turbine.Consumer.AppUtility.GetConsumerRegistrationContract(); contract.Register(); IJobConsumerContract job = contract.Queue.GetNext(); Assert.IsNull(job); job_producer_contract.Submit(); job = contract.Queue.GetNext(); Assert.IsNotNull(job); Assert.AreEqual(job.Id, job_producer_contract.Id); job.Setup(); SimpleFile backup = null; SimpleFile config = null; foreach (var f in job.GetSimulationInputFiles()) { if (f.name == "configuration") { config = f; } else { backup = f; } } Assert.AreEqual(config.name, "configuration"); String filename = SinterHelperFunctions .getBackupFilename(System.Text.Encoding.ASCII.GetString(config.content)); Assert.AreEqual(backup.name, "aspenfile"); // NEED TO SET INPUT Before Setting to Run //j try { job.Running(); Assert.Fail("Job.Process.Input Must be set before setting job to run"); } catch (InvalidStateChangeException) {} job.Process.Input = new Dictionary <string, Object>(); job.Running(); job.Success(); job = contract.Queue.GetNext(); Assert.IsNull(job); }
public void TestJobProducerConsumerContractsSetupFailUnRegisterConsumer() { // Create test Simulation TestSimulationProducerContract(); ISimulationProducerContract simulation_contract = AspenSimulationContract.Get("test"); ISessionProducerContract producer = new AspenSessionProducerContract(); Guid session_id = producer.Create(); IJobProducerContract job_producer_contract = simulation_contract.NewJob(session_id, false, true); // consumers /* * IJobQueue queue = AppUtility.GetJobQueue(); * IJobConsumerContract job = queue.GetNext(); * Assert.IsNull(job); * job_producer_contract.Submit(); * job = queue.GetNext(); * Assert.IsNotNull(job); */ // NHibernate IConsumerRegistrationContract contract = Turbine.Consumer.AppUtility.GetConsumerRegistrationContract(); Assert.IsNull(contract.Queue); contract.Register(); Assert.IsNotNull(contract.Queue); Assert.IsNull(contract.Queue.GetNext()); // nothing on queue job_producer_contract.Submit(); IJobConsumerContract job = contract.Queue.GetNext(); Assert.IsNotNull(job); contract.UnRegister(); job.Setup(); SimpleFile backup = null; SimpleFile config = null; foreach (var f in job.GetSimulationInputFiles()) { if (f.name == "configuration") { config = f; } else { backup = f; } } Assert.AreEqual(config.name, "configuration"); String filename = SinterHelperFunctions .getBackupFilename(System.Text.Encoding.ASCII.GetString(config.content)); Assert.AreEqual(backup.name, ""); //Assert(, //IJobConsumerContract consumer = AppUtility.GetJobConsumerContract(id); }