internal static StagedInputFile GetStagedInputFile(string nameOrID, string inputName, bool isGuid) { Debug.WriteLine("Entered", "DataMarshal.GetStagedInputFile"); StagedInputFile siFile = null; using (var db = new ProducerContext()) { Turbine.Data.Entities.Simulation entity = null; if (isGuid == true) { Debug.WriteLine("isGuid: True", "DataMarshal.GetStagedInputFile"); Guid simulationid = new Guid(nameOrID); entity = db.Simulations.SingleOrDefault(a => a.Id == simulationid); } else { Debug.WriteLine("isGuid: False", "DataMarshal.GetStagedInputFile"); entity = db.Simulations.OrderByDescending(q => q.Count).First(a => a.Name == nameOrID); } if (entity == null) { Debug.WriteLine(String.Format("GetStagedInputFile: Simulation {0} does not exist", nameOrID), "DataMarshal"); return(null); } Turbine.Data.Entities.SimulationStagedInput si = entity.SimulationStagedInputs.SingleOrDefault(s => s.Name == inputName); if (si == null) { Debug.WriteLine(String.Format("GetStagedInputFile: Simulation {0} input {1} does not exist", nameOrID, inputName), "DataMarshal"); return(null); } //TODO: Add Input File Type to Entity //siFile = new StagedInputFile() { Content = si.Content, Name = si.Name, InputFileType = si.InputFileType }; siFile = new StagedInputFile() { Content = si.Content, Name = si.Name, InputFileType = null }; } Debug.WriteLine("Returned siFile: " + siFile.ToString(), "DataMarshal.GetStagedInputFile"); return(siFile); }
private void CreateSimulationEmptyInputs(string simulationName) { byte[] dataACMF = new Byte[] {}; byte[] dataConfig = new Byte[] { }; Console.WriteLine("Testing"); /* * using (var db = new ProducerContext()) * { * var app = db.Applications.Single(s => s.Name == "ACM"); * var user = db.Users.Single(u => u.Name == username); * var sim = new Turbine.Data.Entities.Simulation * { * Id = Guid.NewGuid(), * Application = app, * Create = DateTime.UtcNow, * Name = "Test3", * Update = DateTime.UtcNow, * User = user * }; * db.Simulations.Add(sim); * db.SaveChanges(); * } */ using (var db = new ProducerContext()) { var app = db.Applications.Single(s => s.Name == "ACM"); var user = db.Users.Single(u => u.Name == username); Console.WriteLine("User: {0}", user.Name); var sim = new Turbine.Data.Entities.Simulation() { Name = simulationName, Id = Guid.NewGuid(), User = user, Application = app, Create = DateTime.UtcNow, Update = DateTime.UtcNow }; db.Simulations.Add(sim); db.SaveChanges(); } using (var db = new ProducerContext()) { var sim = db.Simulations.Single(s => s.Name == simulationName); Console.WriteLine("Simulation: {0}", sim.Name); var it = sim.Application.InputFileTypes.Single(s => s.Name == "aspenfile"); var item = new Turbine.Data.Entities.SimulationStagedInput { Id = Guid.NewGuid(), Name = it.Name, Content = dataACMF, Hash = "", Simulation = sim }; Console.WriteLine("SimulationStagedInput: {0}", item.Name); sim.SimulationStagedInputs.Add(item); it = sim.Application.InputFileTypes.Single(s => s.Name == "configuration"); item = new Turbine.Data.Entities.SimulationStagedInput { //InputFileType = it, Simulation = sim, Content = dataConfig, Hash = "", Id = Guid.NewGuid(), Name = it.Name }; Console.WriteLine("SimulationStagedInput: {0}", item.Name); sim.SimulationStagedInputs.Add(item); try { db.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } } }
public void TestCreateSimulation() { byte[] dataACMF; using (var fstream = File.Open(@"models\Hybrid_v0.51_rev1.1_UQ_0809.acmf", FileMode.Open)) { using (var ms = new MemoryStream()) { fstream.CopyTo(ms); dataACMF = ms.ToArray(); } } byte[] dataConfig; using (var fstream = File.Open(@"models\Hybrid_v0.51_rev1.1_UQ_0809_sinter.json", FileMode.Open)) { using (var ms = new MemoryStream()) { fstream.CopyTo(ms); dataConfig = ms.ToArray(); } } Assert.IsTrue(dataACMF.Length > 4000); Assert.IsTrue(dataConfig.Length > 0); using (var db = new ProducerContext()) { var sim = db.Simulations.Single(s => s.Name == "Test"); var it = sim.Application.InputFileTypes.Single(s => s.Name == "aspenfile"); var item = new Turbine.Data.Entities.SimulationStagedInput { Id = Guid.NewGuid(), Name = it.Name, Content = dataACMF, Hash = "", Simulation = sim }; sim.SimulationStagedInputs.Add(item); it = sim.Application.InputFileTypes.Single(s => s.Name == "configuration"); item = new Turbine.Data.Entities.SimulationStagedInput { //InputFileType = it, Simulation = sim, Content = dataConfig, Hash = "", Id = Guid.NewGuid(), Name = it.Name }; sim.SimulationStagedInputs.Add(item); try { db.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } } }
//[DeploymentItem(@"models\Hybrid_v0.51_rev1.1_UQ_0809.acmf")] //[DeploymentItem(@"models\Hybrid_v0.51_rev1.1_UQ_0809_sinter.json")] public void TestApplication_Write() { //AppDomain.CurrentDomain.SetData("DataDirectory", // Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); var guid = Guid.NewGuid(); var simulationName = "Test"; using (var db = new ProducerContext()) { var app = new Turbine.Data.Entities.Application { Name = "ACM", Version = "7.3" }; db.Applications.Add(app); var user = new Turbine.Data.Entities.User { Name = "testuser" }; db.Users.Add(user); db.SaveChanges(); } using (var db = new ProducerContext()) { var item = db.Applications.Single(s => s.Name == "ACM"); item.InputFileTypes.Add(new Turbine.Data.Entities.InputFileType { Id = Guid.NewGuid(), Name = "configuration", Required = true, Type = "plain/text" }); item.InputFileTypes.Add(new Turbine.Data.Entities.InputFileType { Id = Guid.NewGuid(), Name = "aspenfile", Required = true, Type = "plain/text" }); db.SaveChanges(); } using (var db = new ProducerContext()) { var app = db.Applications.Single(s => s.Name == "ACM"); var user = db.Users.Single(u => u.Name == username); var sim = new Turbine.Data.Entities.Simulation { Id = Guid.NewGuid(), Application = app, Create = DateTime.UtcNow, Name = simulationName, Update = DateTime.UtcNow, User = user }; db.Simulations.Add(sim); db.SaveChanges(); } byte[] dataACMF; using (var fstream = File.Open(@"models\Hybrid_v0.51_rev1.1_UQ_0809.acmf", FileMode.Open)) { using (var ms = new MemoryStream()) { fstream.CopyTo(ms); dataACMF = ms.ToArray(); } } byte[] dataConfig; using (var fstream = File.Open(@"models\Hybrid_v0.51_rev1.1_UQ_0809_sinter.json", FileMode.Open)) { using (var ms = new MemoryStream()) { fstream.CopyTo(ms); dataConfig = ms.ToArray(); } } using (var db = new ProducerContext()) { var sim = db.Simulations.Single(s => s.Name == simulationName); Console.WriteLine("App: " + sim.Application.Name); Console.WriteLine("Sim: " + sim.Name); foreach (var i in sim.Application.InputFileTypes) { Console.WriteLine("IT: " + i.Name); } var it = sim.Application.InputFileTypes.Single(s => s.Name == "aspenfile"); var item = new Turbine.Data.Entities.SimulationStagedInput { //InputFileType = it, Simulation = sim, Content = dataACMF, Hash = "", Id = Guid.NewGuid(), Name = it.Name }; sim.SimulationStagedInputs.Add(item); it = sim.Application.InputFileTypes.Single(s => s.Name == "configuration"); item = new Turbine.Data.Entities.SimulationStagedInput { //InputFileType = it, Simulation = sim, Content = dataConfig, Hash = "", Id = Guid.NewGuid(), Name = it.Name }; sim.SimulationStagedInputs.Add(item); db.SaveChanges(); } // Session var sessionId = Guid.NewGuid(); using (var db = new ProducerContext()) { var item = new Turbine.Data.Entities.Session { Id = sessionId, Create = DateTime.UtcNow, Description = "testing simulation" }; db.Sessions.Add(item); db.SaveChanges(); } var jobId = Guid.NewGuid(); var workingDir = String.Format("WorkingDir_{0}", Guid.NewGuid()); using (var db = new ProducerContext()) { var item = db.Sessions.Single(s => s.Id == sessionId); var user = db.Users.Single(u => u.Name == username); var simulation = db.Simulations.Single(s => s.Name == simulationName); var job = new Turbine.Data.Entities.Job { Id = jobId, Session = item, Create = DateTime.UtcNow, Setup = DateTime.UtcNow, State = "setup", User = user, Simulation = simulation, Process = new Turbine.Data.Entities.Process { Input = "{}", WorkingDir = workingDir }, }; var msg = new Turbine.Data.Entities.Message { Id = Guid.NewGuid(), Create = DateTime.UtcNow, Value = "Test Job" }; job.Messages.Add(msg); db.Jobs.Add(job); db.SaveChanges(); } using (var db = new ProducerContext()) { var job = db.Jobs.Single(j => j.Id == jobId); foreach (var f in job.Simulation.SimulationStagedInputs) { job.StagedInputFiles.Add(new Turbine.Data.Entities.StagedInputFile { Content = f.Content, Name = f.Name }); } } // READ JOB Save to Filesystem using (var db = new ProducerContext()) { var job = db.Jobs.Single(j => j.State == "setup"); Assert.AreEqual(job.Id, jobId); var dinfo = Directory.CreateDirectory(job.Process.WorkingDir); Console.WriteLine("Working Directory: " + dinfo.FullName); foreach (var f in job.StagedInputFiles) { Console.WriteLine("Save File: " + f.Name); var fd = File.Create(Path.Combine(dinfo.FullName, f.Name)); fd.Write(f.Content, 0, f.Content.Length); fd.Close(); } } }