private static void UnloadServer(AssemblyLoadContext obj) { try { lock (ServerLocker) { var copyGlobalServer = _globalServer; _globalServer = null; if (copyGlobalServer == null) { return; } try { using (copyGlobalServer.ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) using (context.OpenReadTransaction()) { var databases = copyGlobalServer .ServerStore .Cluster .ItemsStartingWith(context, Constants.Documents.Prefix, 0, int.MaxValue) .ToList(); if (databases.Count > 0) { var sb = new StringBuilder(); sb.AppendLine("List of non-deleted databases:"); foreach (var t in databases) { var databaseName = t.ItemName.Substring(Constants.Documents.Prefix.Length); try { AsyncHelpers.RunSync(() => copyGlobalServer.ServerStore.DeleteDatabaseAsync(databaseName, hardDelete: true, null, Guid.NewGuid().ToString())); } catch (Exception) { // ignored } sb .Append("- ") .AppendLine(databaseName); } Console.WriteLine(sb.ToString()); } } } catch (Exception e) { Console.WriteLine($"Could not retrieve list of non-deleted databases. Exception: {e}"); } copyGlobalServer.Dispose(); GC.Collect(2); GC.WaitForPendingFinalizers(); var exceptionAggregator = new ExceptionAggregator("Failed to cleanup test databases"); RavenTestHelper.DeletePaths(GlobalPathsToDelete, exceptionAggregator); exceptionAggregator.ThrowIfNeeded(); } } catch (Exception e) { Console.WriteLine(e); } finally { TestResourcesAnalyzer.Complete(); } }
protected TestBase(ITestOutputHelper output) : base(output) { TestResourcesAnalyzer.Start(Context); }