public void TraceTest() { var trace = new FbTrace(); trace.ConnectionString = BuildServicesConnectionString(FbServerType, false); trace.DatabasesConfigurations.Add(new FbDatabaseTraceConfiguration() { Enabled = true, Events = FbDatabaseTraceEvents.Connections | FbDatabaseTraceEvents.Errors, TimeThreshold = TimeSpan.FromMilliseconds(1), }); var sessionId = -1; trace.ServiceOutput += (sender, e) => { if (sessionId == -1) { var match = Regex.Match(e.Message, @"Trace session ID (\d+) started"); if (match.Success) { sessionId = int.Parse(match.Groups[1].Value); } } ServiceOutput(sender, e); }; ThreadPool.QueueUserWorkItem(_ => { Thread.Sleep(2000); new FbTrace(BuildServicesConnectionString(FbServerType, false)).Stop(sessionId); }); trace.Start("test"); }
public async Task TraceTest() { var trace = new FbTrace(); trace.ConnectionString = BuildServicesConnectionString(ServerType, Compression, WireCrypt, false); trace.DatabasesConfigurations.Add(new FbDatabaseTraceConfiguration() { Enabled = true, Events = FbDatabaseTraceEvents.Connections | FbDatabaseTraceEvents.Errors, TimeThreshold = TimeSpan.FromMilliseconds(1), }); var sessionId = -1; trace.ServiceOutput += (sender, e) => { if (sessionId == -1) { var match = Regex.Match(e.Message, @"Trace session ID (\d+) started"); if (match.Success) { sessionId = int.Parse(match.Groups[1].Value); } } ServiceOutput(sender, e); }; async Task Stop() { await Task.Delay(2000); await new FbTrace(connectionString: BuildServicesConnectionString(ServerType, Compression, WireCrypt, false)) .StopAsync(sessionId); } var stopTask = Stop(); await trace.StartAsync("test"); await stopTask; Assert.AreNotEqual(-1, sessionId); }
static FbTrace PrepareTrace(string server, int?port, string user, string password, string?database) { var connectionString = new FbConnectionStringBuilder() { ServerType = FbServerType.Default, Charset = "utf8", DataSource = server, Port = port ?? 3050, UserID = user, Password = password, PacketSize = short.MaxValue, }.ToString(); var trace = new FbTrace(FbTraceVersion.Detect, connectionString); var configuration = new FbDatabaseTraceConfiguration() { Enabled = true, Events = FbDatabaseTraceEvents.Connections | FbDatabaseTraceEvents.Transactions | FbDatabaseTraceEvents.StatementPrepare | FbDatabaseTraceEvents.StatementStart | FbDatabaseTraceEvents.StatementFinish | FbDatabaseTraceEvents.StatementFree | FbDatabaseTraceEvents.FunctionStart | FbDatabaseTraceEvents.FunctionFinish | FbDatabaseTraceEvents.ProcedureStart | FbDatabaseTraceEvents.ProcedureFinish | FbDatabaseTraceEvents.TriggerStart | FbDatabaseTraceEvents.TriggerFinish | FbDatabaseTraceEvents.Context | FbDatabaseTraceEvents.Errors | FbDatabaseTraceEvents.PrintPerf | FbDatabaseTraceEvents.PrintPlan | FbDatabaseTraceEvents.ExplainPlan, TimeThreshold = TimeSpan.Zero, MaxArgumentLength = 1000, MaxSQLLength = 10000, }; if (!string.IsNullOrWhiteSpace(database)) { configuration.DatabaseName = database; } trace.DatabasesConfigurations.Add(configuration); trace.QueryBufferSize = short.MaxValue; return(trace); }