private static void Main(string[] args) { var opts = new BenchmarkArgs(); if (CommandLine.Parser.ParseArgumentsWithUsage(args, opts)) { if (!string.IsNullOrEmpty(opts.LogFilePath)) { BenchmarkLogging.EnableFileLogging(opts.LogFilePath); var logStream = new FileStream(opts.LogFilePath + ".bslog", FileMode.Create); BrightstarListener = new TextWriterTraceListener(logStream); BrightstarDB.Logging.BrightstarTraceSource.Listeners.Add(BrightstarListener); BrightstarDB.Logging.BrightstarTraceSource.Switch.Level = SourceLevels.All; } } else { var usage = CommandLine.Parser.ArgumentsUsage(typeof(BenchmarkArgs)); Console.WriteLine(usage); } var runner = new BenchmarkRunner(opts); runner.Run(); BenchmarkLogging.Close(); BrightstarDB.Logging.BrightstarTraceSource.Close(); }
private void WaitForAllExportsToComplete() { BenchmarkLogging.Info("Waiting for final export jobs to complete."); while (_activeJobList.Count > 0) { var toRemove = new List <string>(); foreach (var jobId in _activeJobList) { var jobInfo = _brightstar.GetJobInfo(_storeName, jobId); if (jobInfo.JobCompletedWithErrors) { BenchmarkLogging.Error("Export {0} failed. Cause: {1}. Detail {2}", jobInfo.Label, jobInfo.StatusMessage, jobInfo.ExceptionInfo); toRemove.Add(jobId); } if (jobInfo.JobCompletedOk) { ReportCompletedJob(jobInfo); toRemove.Add(jobId); } } foreach (var r in toRemove) { _activeJobList.Remove(r); } Thread.Sleep(5000); } }
private void WaitForAnExportToComplete() { var toRemove = new List <string>(); while (toRemove.Count == 0 && _activeJobList.Count >= MaxExportJobCount) { foreach (var jobId in _activeJobList) { var jobInfo = _brightstar.GetJobInfo(_storeName, jobId); if (jobInfo.JobCompletedWithErrors) { BenchmarkLogging.Error("Export {0} failed. Cause: {1}. Detail {2}", jobInfo.Label, jobInfo.StatusMessage, jobInfo.ExceptionInfo); toRemove.Add(jobId); } if (jobInfo.JobCompletedOk) { ReportCompletedJob(jobInfo); toRemove.Add(jobId); } } if (toRemove.Count == 0) { BenchmarkLogging.Debug("Waiting for export jobs..."); Thread.Sleep(5000); } } foreach (var id in toRemove) { _activeJobList.Remove(id); } }
public BenchmarkRunner(BenchmarkArgs args) { SourceFiles = Directory.GetFiles(args.TestDataDirectory, "*.nt", SearchOption.AllDirectories); BenchmarkLogging.Info("Found {0} source NTriples files for benchmark test", SourceFiles.Length); if (args.MaxNumberFiles > 0 && args.MaxNumberFiles < SourceFiles.Length) { SourceFiles = SourceFiles.Take(args.MaxNumberFiles).ToArray(); BenchmarkLogging.Info("Limited number of source files to be processed to {0} (from command-line options)", SourceFiles.Length); } _brightstar = new EmbeddedBrightstarService("."); _storeName = "BenchmarkStore_" + DateTime.Now.ToString("yyMMdd_HHmmss"); }
private void ImportSourceFile(int sourceFileIndex) { var fullText = File.ReadAllText(SourceFiles[sourceFileIndex]); var lineCount = CountLines(SourceFiles[sourceFileIndex]); var sw = Stopwatch.StartNew(); _brightstar.ExecuteTransaction(_storeName, new UpdateTransactionData { InsertData = fullText }); var importTime = sw.ElapsedMilliseconds; BenchmarkLogging.Info("IMPORT: {0},{1},{2}", _triplesImported, _triplesImported + lineCount, importTime); _triplesImported += lineCount; }
private void ReportCompletedJob(IJobInfo jobInfo) { var expectedCount = Int32.Parse(jobInfo.Label.Split('_').Last()); BenchmarkLogging.Info("EXPORT {0}, {1}", expectedCount, jobInfo.EndTime.Subtract(jobInfo.StartTime).TotalMilliseconds); var actualCount = CountLines("import" + Path.DirectorySeparatorChar + jobInfo.Label + ".nt"); if (expectedCount == actualCount) { BenchmarkLogging.Info("Validated expected number of triples exported in {0}.nt", jobInfo.Label); } else { BenchmarkLogging.Error("Exported triple count in file {0}.nt does not match the expected count. (Expected: {1}, Counted: {2})", jobInfo.Label, expectedCount, actualCount); } }