/// <summary>
		/// Starts the command
		/// </summary>
		public override void Run()
		{
			IProject currentProj = ProjectService.CurrentProject;
			string path = currentProj.GetSessionFileName();
			Directory.CreateDirectory(Path.GetDirectoryName(path));
			
			IProfilingDataWriter writer = new ProfilingDataSQLiteWriter(path, false, null);
			ProfilerRunner runner = ProfilerRunner.CreateRunner(writer);
			
			if (runner != null) {
				runner.RunFinished += delegate { currentProj.AddSessionToProject(path); };
				runner.Run();
			}
		}
Beispiel #2
0
		public void FixtureSetUp()
		{
			if (File.Exists(databaseFileName))
				File.Delete(databaseFileName);
			NameMapping method0 = new NameMapping(0, "r0", "m0", new List<string>());
			NameMapping method1 = new NameMapping(1, "r1", "m1", new List<string>());
			NameMapping method2 = new NameMapping(2, "r2", "m2", new List<string>());
			using (var writer = new ProfilingDataSQLiteWriter(databaseFileName)) {
				writer.ProcessorFrequency = 2000; // MHz
				writer.WriteMappings(new[] { method0, method1, method2 } );
				CallTreeNodeStub dataSet;
				dataSet = new CallTreeNodeStub {
					NameMappingValue = method0,
					AddChildren = {
						new CallTreeNodeStub {
							NameMappingValue = method1,
							RawCallCountValue = 10,
							CpuCyclesSpentValue = 500 * k
						}
					}
				};
				writer.WriteDataSet(new DataSetStub { IsFirst = true, RootNode = dataSet });
				dataSet = new CallTreeNodeStub {
					NameMappingValue = method0,
					IsActiveAtStartValue = true,
					AddChildren = {
						new CallTreeNodeStub {
							NameMappingValue = method1,
							RawCallCountValue = 0,
							IsActiveAtStartValue = true,
							CpuCyclesSpentValue = 200 * k
						},
						new CallTreeNodeStub {
							NameMappingValue = method2,
							RawCallCountValue = 1,
							CpuCyclesSpentValue = 300 * k
						}
					}
				};
				writer.WriteDataSet(new DataSetStub { IsFirst = false, RootNode = dataSet });
				dataSet = new CallTreeNodeStub {
					NameMappingValue = method0,
					IsActiveAtStartValue = true,
					AddChildren = {
						new CallTreeNodeStub {
							NameMappingValue = method2,
							RawCallCountValue = 0,
							IsActiveAtStartValue = true,
							CpuCyclesSpentValue = 50 * k,
							AddChildren = {
								new CallTreeNodeStub {
									NameMappingValue = method1,
									RawCallCountValue = 5,
									CpuCyclesSpentValue = 1 * k
								}
							}
						}
					}
				};
				writer.WriteDataSet(new DataSetStub { IsFirst = false, RootNode = dataSet });
				writer.Close();
			}
			provider = ProfilingDataSQLiteProvider.UpgradeFromOldVersion(databaseFileName);
		}
		void profiler_SessionEnded(object sender, EventArgs e)
		{
			string pathToDb = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(Profiler.Controller.Profiler).Assembly.Location), "output.sdps");
			ProfilingDataSQLiteWriter writer = new ProfilingDataSQLiteWriter(pathToDb, false, null);
			this.database.WriteTo(writer, progress => true);
			writer.Close();
			this.database.Close();
			this.provider = new ProfilingDataSQLiteProvider(pathToDb);

			this.Dispatcher.Invoke(
				(Action)(
					() => {
						try {
							this.treeView.Provider = this.provider;
							RefreshUI(0, 0);
							this.timeLine.IsEnabled = true;
							//this.timeLine.ValuesList.Clear();
							//this.timeLine.ValuesList.AddRange(this.provider.DataSets.Select(i => i.CpuUsage));
						} catch (Exception ex) {
							Debug.WriteLine(ex.ToString());
							MessageBox.Show(ex.ToString());
						}
					}
				)
			);
		}