Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Internal] Client Telemetry: Fixes tests leaking environment variables #3517

Merged
merged 17 commits into from
Oct 27, 2022
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace Microsoft.Azure.Cosmos.SDK.EmulatorTests
using System.Linq;
using System.Threading;
using Microsoft.Azure.Cosmos.Linq;
using Microsoft.Azure.Cosmos.Services.Management.Tests;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
Expand All @@ -27,28 +28,29 @@ public void VerifySynchronizationContextDoesNotLock()
{
using (CosmosClient client = TestCommon.CreateCosmosClient())
{
Logger.LogLine("1");
Cosmos.Database database = client.CreateDatabaseAsync(databaseId).GetAwaiter().GetResult();
database = client.CreateDatabaseIfNotExistsAsync(databaseId).GetAwaiter().GetResult();

database.ReadStreamAsync().ConfigureAwait(false).GetAwaiter().GetResult();
database.ReadAsync().ConfigureAwait(false).GetAwaiter().GetResult();

Logger.LogLine("2");
QueryDefinition databaseQuery = new QueryDefinition("select * from T where T.id = @id").WithParameter("@id", databaseId);
FeedIterator<DatabaseProperties> databaseIterator = client.GetDatabaseQueryIterator<DatabaseProperties>(databaseQuery);
while (databaseIterator.HasMoreResults)
{
databaseIterator.ReadNextAsync().GetAwaiter().GetResult();
}

Logger.LogLine("3");
Container container = database.CreateContainerAsync(Guid.NewGuid().ToString(), "/pk").GetAwaiter().GetResult();
container = database.CreateContainerIfNotExistsAsync(container.Id, "/pk").GetAwaiter().GetResult();

Logger.LogLine("4");
ToDoActivity testItem = ToDoActivity.CreateRandomToDoActivity();
ItemResponse<ToDoActivity> response = container.CreateItemAsync<ToDoActivity>(item: testItem).ConfigureAwait(false).GetAwaiter().GetResult();
Assert.IsNotNull(response);
string diagnostics = response.Diagnostics.ToString();
Assert.IsTrue(diagnostics.Contains("Synchronization Context"));

Logger.LogLine("5");
using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

try
Expand All @@ -65,7 +67,7 @@ public void VerifySynchronizationContextDoesNotLock()
string exception = oe.ToString();
Assert.IsTrue(exception.Contains("Synchronization Context"));
}

Logger.LogLine("6");
// Test read feed
container.GetItemLinqQueryable<ToDoActivity>(
allowSynchronousQueryExecution: true,
Expand All @@ -81,15 +83,15 @@ public void VerifySynchronizationContextDoesNotLock()
{
feedIterator.ReadNextAsync().GetAwaiter().GetResult();
}

Logger.LogLine("7");
FeedIterator<ToDoActivity> feedIteratorTyped = container.GetItemLinqQueryable<ToDoActivity>()
.ToFeedIterator<ToDoActivity>();

while (feedIteratorTyped.HasMoreResults)
{
feedIteratorTyped.ReadNextAsync().GetAwaiter().GetResult();
}

Logger.LogLine("8");
// Test query
container.GetItemLinqQueryable<ToDoActivity>(
allowSynchronousQueryExecution: true,
Expand All @@ -105,6 +107,8 @@ public void VerifySynchronizationContextDoesNotLock()
queryIterator.ReadNextAsync().GetAwaiter().GetResult();
}

Logger.LogLine("9");

FeedIterator<ToDoActivity> queryIteratorTyped = container.GetItemLinqQueryable<ToDoActivity>()
.Where(item => item.id != "").ToFeedIterator<ToDoActivity>();

Expand All @@ -113,14 +117,17 @@ public void VerifySynchronizationContextDoesNotLock()
queryIteratorTyped.ReadNextAsync().GetAwaiter().GetResult();
}

Logger.LogLine("10");

double costAsync = container.GetItemLinqQueryable<ToDoActivity>()
.Select(x => x.cost).SumAsync().GetAwaiter().GetResult();

double cost = container.GetItemLinqQueryable<ToDoActivity>(
allowSynchronousQueryExecution: true).Select(x => x.cost).Sum();

Logger.LogLine("11");
ItemResponse<ToDoActivity> deleteResponse = container.DeleteItemAsync<ToDoActivity>(partitionKey: new Cosmos.PartitionKey(testItem.pk), id: testItem.id).ConfigureAwait(false).GetAwaiter().GetResult();
Assert.IsNotNull(deleteResponse);
Logger.LogLine("12");
}
}, state: null);
}
Expand Down