Esempio n. 1
0
        internal static string[] GetStagedInputs(string nameOrID, bool isGuid)
        {
            List <String> stagedInputList = new List <String>();

            using (var db = new ProducerContext())
            {
                Turbine.Data.Entities.Simulation entity = null;

                if (isGuid == true)
                {
                    Guid simulationid = new Guid(nameOrID);
                    entity = db.Simulations.OrderByDescending(q => q.Count).Single(a => a.Id == simulationid);
                }
                else
                {
                    entity = db.Simulations.OrderByDescending(q => q.Count).First(a => a.Name == nameOrID);
                }

                foreach (var si in entity.SimulationStagedInputs)
                {
                    stagedInputList.Add(si.Name);
                }
            }
            return(stagedInputList.ToArray <String>());;
        }
Esempio n. 2
0
        public static void ClassInit(TestContext context)
        {
            BaseDatabaseTest.CleanUpDatabase();

            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 = username
                };
                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        = "Test",
                    Update      = DateTime.UtcNow,
                    User        = user
                };
                db.Simulations.Add(sim);
                db.SaveChanges();
            }
        }
Esempio n. 3
0
        internal static Simulation GetSimulation(string nameOrID, bool isGuid)
        {
            Simulation sim             = null;
            var        stagedInputList = new SimpleStagedInputFiles();

            using (var db = new ProducerContext())
            {
                Turbine.Data.Entities.Simulation entity = null;

                if (isGuid == true)
                {
                    Guid simulationid = new Guid(nameOrID);
                    entity = db.Simulations.OrderByDescending(q => q.Count).Single(a => a.Id == simulationid);
                }
                else
                {
                    entity = db.Simulations.OrderByDescending(q => q.Count).First(a => a.Name == nameOrID);
                }

                if (entity != null)
                {
                    foreach (var input in entity.SimulationStagedInputs)
                    {
                        stagedInputList.Add(new SimpleStagedInputFile
                        {
                            Name   = input.Name,
                            Id     = input.Id,
                            MD5Sum = input.Hash
                        });
                    }

                    sim = new Simulation
                    {
                        Id          = entity.Id,
                        Name        = entity.Name,
                        Application = entity.ApplicationName,
                    };

                    //sim.StagedInputs = stagedInputList.ToArray<String>();
                    sim.StagedInputs = stagedInputList;
                }
            }
            return(sim);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public void GetSimulationListTest()
        {
            var userName = "******";

            using (var db = new Turbine.DataEF6.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        = "Dummy",
                    Update      = DateTime.UtcNow,
                    User        = user
                };
                db.Simulations.Add(sim);
                db.SaveChanges();
            }

            using (WebClient wc = new WebClient())
            {
                var json = wc.DownloadString("http://localhost:8000/TurbineLite/simulation");
                Console.WriteLine("RESPONSE: {0}", json);
                var simList = JsonConvert.DeserializeObject <SimulationList>(json);
                Assert.IsTrue(simList.Count >= 1);
                var sim = simList.Single(e => e.Name == "Dummy");
                Assert.AreEqual(sim.Name, "Dummy");

                json = wc.DownloadString("http://localhost:8000/TurbineLite/simulation/dummy");
                sim  = JsonConvert.DeserializeObject <Simulation>(json);
                Assert.AreEqual <string>(sim.Name, "Dummy");
                Assert.AreEqual <string>(sim.Application, "ACM");
            }
        }
        public static void Initialize(TestContext context)
        {
            BaseDatabaseTest.CleanUpDatabase();

            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 = userName
                };
                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();
            }
            using (var db = new ProducerContext())
            {
                var item = new Turbine.Data.Entities.Session
                {
                    Id          = sessionId,
                    Description = "testing simulation",
                    Create      = DateTime.UtcNow
                };
                db.Sessions.Add(item);
                db.SaveChanges();
            }


            List <Turbine.Data.Entities.Job> jobsList = new List <Turbine.Data.Entities.Job>();

            // Session
            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);

                for (int i = 0; i < 10; i++)
                {
                    var job = new Turbine.Data.Entities.Job
                    {
                        Id         = Guid.NewGuid(),
                        Session    = item,
                        Create     = DateTime.UtcNow,
                        State      = "success",
                        User       = user,
                        Simulation = simulation
                    };
                    jobsList.Add(job);
                    db.Jobs.Add(job);
                }

                db.SaveChanges();
            }


            using (var db = new ProducerContext())
            {
                var session = db.Sessions.Single(s => s.Id == sessionId);
                var item    = new Turbine.Data.Entities.Generator
                {
                    Id      = generatorId,
                    Page    = 1,
                    Session = session,
                    Create  = DateTime.UtcNow
                };
                db.Generators.Add(item);
                db.SaveChanges();
            }

            using (var db = new ProducerContext())
            {
                var generator = db.Generators.Single(g => g.Id == generatorId);
                var session   = db.Sessions.Single(s => s.Id == sessionId);

                Debug.WriteLine("Generator Page num: " + generator.Page);

                foreach (var job in session.Jobs)
                {
                    var item = new Turbine.Data.Entities.GeneratorJob
                    {
                        Id        = Guid.NewGuid(),
                        Page      = 2,
                        Generator = generator,
                        Job       = job
                    };
                    db.GeneratorJobs.Add(item);
                }

                db.SaveChanges();
            }
        }
Esempio n. 7
0
        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;
                }
            }
        }
        //[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();
                }
            }
        }