예제 #1
0
        public static int SingleTestMode(Options opts)
        {
            Console.WriteLine("*** Running single test with id '{0}' not storing results in database...", opts.TestId);

            DrtStore store = new DrtStore("perf-suite-set/drtlist.xml");
            DrtItem  item  = store.GetDrtItemForId(opts.TestId);

            if (item == null)
            {
                Console.WriteLine("*** Test '{0}' not found!", opts.TestId);
                return(128);
            }

            Console.WriteLine("*** Running [{0}]", item);

            DrtResult r = item.Run();

            ResultDbEntry resultEntry = new ResultDbEntry();

            if (r == null)
            {
                resultEntry.Time = 0;
                Console.WriteLine("*** Averaged result: 0 (FAILURE)");
            }
            else
            {
                resultEntry.Time = r.AveragedTime;
                Console.WriteLine("*** Averaged result: {0}usec", r.AveragedTime);
            }

            return(0);
        }
예제 #2
0
        public static int AllTestsMode(Options opts)
        {
            Console.WriteLine("*** Pass name is '{0}'...", opts.ShortName);

            Database.Initialize(opts.DatabaseFile);
            Database.BeginTransaction();

            PassDbEntry passEntry = new PassDbEntry();

            passEntry.ShortName = opts.ShortName;
            passEntry.Author    = opts.Author;
            passEntry.ChangeLog = opts.ChangeLog;
            passEntry.Date      = DateTime.Now;

            Database.Put(passEntry);

            DrtStore store = new DrtStore("perf-suite-set/drtlist.xml");

            foreach (DrtItem item in store.Items)
            {
                Console.WriteLine("*** Running [{0}]", item);

                ItemDbEntry itemEntry = Database.GetItemEntryByUniqueId(item.UniqueId);
                if (itemEntry == null)
                {
                    Console.WriteLine("*** [{0}] not yet in the database, adding...", item);
                    itemEntry           = new ItemDbEntry();
                    itemEntry.UniqueId  = item.UniqueId;
                    itemEntry.Name      = item.Name;
                    itemEntry.InputFile = item.InputFile;
                    Database.Put(itemEntry);
                }

                DrtResult r = item.Run();

                ResultDbEntry resultEntry = new ResultDbEntry();
                resultEntry.Pass = passEntry;
                resultEntry.Item = itemEntry;

                if (r == null)
                {
                    resultEntry.Time = 0;
                    Console.WriteLine("*** Averaged result: 0 (FAILURE)");
                }
                else
                {
                    resultEntry.Time = r.AveragedTime;
                    Console.WriteLine("*** Averaged result: {0}usec", r.AveragedTime);
                }

                Database.Put(resultEntry);
            }

            Database.CommitTransaction();

            return(0);
        }
예제 #3
0
파일: DrtItem.cs 프로젝트: ynkbt/moon
        public DrtResult Run()
        {
            DrtResult result = null;
            Process   proc   = new Process();

            try {
                string tmpFileName = Path.GetTempFileName();

                string arguments = String.Format("-f \"{0}\" -s \"{1}\" -e \"{2}\" -i \"{3}\" -n \"{4}\" -r \"{5}\" -t \"{6}\" -w \"{7}\" -h \"{8}\"",
                                                 FullFileName,
                                                 StartTime,
                                                 EndTime,
                                                 Interval,
                                                 Runs,
                                                 tmpFileName,
                                                 Timeout,
                                                 Width,
                                                 Height);

                proc.EnableRaisingEvents = false;
                proc.StartInfo.FileName  = "perf-tool";
                proc.StartInfo.Arguments = arguments;
                proc.Start();
                proc.WaitForExit();

                if (proc.ExitCode == 0)
                {
                    result = new DrtResult(tmpFileName);
                }
            } catch {
                result = null;
            } finally {
                proc.Close();
                proc.Dispose();
            }

            return(result);
        }
예제 #4
0
파일: DrtItem.cs 프로젝트: dfr0/moon
		public DrtResult Run ()
		{
			DrtResult result = null;
			Process proc = new Process ();

			try {
				string tmpFileName = Path.GetTempFileName ();

				string arguments = String.Format ("-f \"{0}\" -s \"{1}\" -e \"{2}\" -i \"{3}\" -n \"{4}\" -r \"{5}\" -t \"{6}\" -w \"{7}\" -h \"{8}\"", 
								  FullFileName, 
								  StartTime, 
								  EndTime, 
								  Interval, 
								  Runs, 
							 	  tmpFileName, 
								  Timeout, 
								  Width, 
								  Height);

				proc.EnableRaisingEvents = false; 
				proc.StartInfo.FileName = "perf-tool";
				proc.StartInfo.Arguments = arguments;
				proc.Start();
				proc.WaitForExit();

				if (proc.ExitCode == 0)
					result = new DrtResult (tmpFileName);
			} catch {
				result = null;
			} finally {
				proc.Close ();
				proc.Dispose ();
			}

			return result;
		}