diff --git a/Directory.Packages.props b/Directory.Packages.props
index 9064c766e..e0dd5cf0d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -15,6 +15,7 @@
+
diff --git a/performance/packages.lock.json b/performance/packages.lock.json
index b2526262a..168be8c16 100644
--- a/performance/packages.lock.json
+++ b/performance/packages.lock.json
@@ -1890,6 +1890,7 @@
"Microsoft.NET.Test.Sdk": "[17.4.0, )",
"Moq": "[4.18.2, )",
"Newtonsoft.Json": "[13.0.2, )",
+ "xRetry": "[1.9.0, )",
"xunit": "[2.4.2, )",
"xunit.runner.visualstudio": "[2.4.5, )"
}
@@ -2086,6 +2087,15 @@
"System.Configuration.ConfigurationManager": "5.0.0"
}
},
+ "xRetry": {
+ "type": "CentralTransitive",
+ "requested": "[1.9.0, )",
+ "resolved": "1.9.0",
+ "contentHash": "NeIbJrwpc5EUPagx/mdd/7KzpR36BO8IWrsbgtvOVjxD2xtmNfUHieZ24PeZ4oCYiLBcTviCy+og/bE/OvPchw==",
+ "dependencies": {
+ "xunit.core": "[2.4.0, 3.0.0)"
+ }
+ },
"xunit": {
"type": "CentralTransitive",
"requested": "[2.4.2, )",
diff --git a/samples/samples-csx/ProductsTrigger/run.csx b/samples/samples-csx/ProductsTrigger/run.csx
index 650e28faf..4a0cb01cf 100644
--- a/samples/samples-csx/ProductsTrigger/run.csx
+++ b/samples/samples-csx/ProductsTrigger/run.csx
@@ -1,4 +1,4 @@
-#load "../../Common/product.csx"
+#load "../Common/product.csx"
#r "Newtonsoft.Json"
#r "Microsoft.Azure.WebJobs.Extensions.Sql"
diff --git a/samples/samples-outofproc/packages.lock.json b/samples/samples-outofproc/packages.lock.json
index 15d9eb98f..7698d5885 100644
--- a/samples/samples-outofproc/packages.lock.json
+++ b/samples/samples-outofproc/packages.lock.json
@@ -846,9 +846,9 @@
"microsoft.azure.functions.worker.extensions.sql": {
"type": "Project",
"dependencies": {
- "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "1.1.0",
- "Microsoft.Data.SqlClient": "5.0.1",
- "System.Drawing.Common": "5.0.3"
+ "Microsoft.Azure.Functions.Worker.Extensions.Abstractions": "[1.1.0, )",
+ "Microsoft.Data.SqlClient": "[5.0.1, )",
+ "System.Drawing.Common": "[5.0.3, )"
}
},
"Microsoft.Azure.Functions.Worker.Extensions.Abstractions": {
diff --git a/test/Integration/SqlTriggerBindingIntegrationTests.cs b/test/Integration/SqlTriggerBindingIntegrationTests.cs
index f0a3e1143..92646f3fd 100644
--- a/test/Integration/SqlTriggerBindingIntegrationTests.cs
+++ b/test/Integration/SqlTriggerBindingIntegrationTests.cs
@@ -15,6 +15,7 @@
using Moq;
using Xunit;
using Xunit.Abstractions;
+using xRetry;
namespace Microsoft.Azure.WebJobs.Extensions.Sql.Tests.Integration
{
@@ -28,7 +29,7 @@ public SqlTriggerBindingIntegrationTests(ITestOutputHelper output = null) : base
///
/// Ensures that the user function gets invoked for each of the insert, update and delete operation.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task SingleOperationTriggerTest(SupportedLanguages lang)
{
@@ -76,7 +77,7 @@ await this.WaitForProductChanges(
/// Verifies that manually setting the batch size using the original config var correctly changes the
/// number of changes processed at once.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task BatchSizeOverrideTriggerTest(SupportedLanguages lang)
{
@@ -119,7 +120,7 @@ await this.WaitForProductChanges(
///
/// Verifies that manually setting the max batch size correctly changes the number of changes processed at once
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task MaxBatchSizeOverrideTriggerTest(SupportedLanguages lang)
{
@@ -162,7 +163,7 @@ await this.WaitForProductChanges(
///
/// Verifies that manually setting the polling interval correctly changes the delay between processing each batch of changes
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task PollingIntervalOverrideTriggerTest(SupportedLanguages lang)
{
@@ -204,7 +205,7 @@ await this.WaitForProductChanges(
/// Verifies that if several changes have happened to the table row since last invocation, then a single net
/// change for that row is passed to the user function.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task MultiOperationTriggerTest(SupportedLanguages lang)
{
@@ -285,7 +286,7 @@ await this.WaitForProductChanges(
///
/// Ensures correct functionality with multiple user functions tracking the same table.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task MultiFunctionTriggerTest(SupportedLanguages lang)
{
@@ -411,7 +412,7 @@ public async Task MultiFunctionTriggerTest(SupportedLanguages lang)
///
/// Ensures correct functionality with user functions running across multiple functions host processes.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public async Task MultiHostTriggerTest(SupportedLanguages lang)
{
@@ -462,7 +463,7 @@ await this.WaitForProductChanges(
///
/// Tests the error message when the user table is not present in the database.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void TableNotPresentTriggerTest(SupportedLanguages lang)
{
@@ -476,7 +477,7 @@ public void TableNotPresentTriggerTest(SupportedLanguages lang)
///
/// Tests the error message when the user table does not contain primary key.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void PrimaryKeyNotCreatedTriggerTest(SupportedLanguages lang)
{
@@ -491,7 +492,7 @@ public void PrimaryKeyNotCreatedTriggerTest(SupportedLanguages lang)
/// Tests the error message when the user table contains one or more primary keys with names conflicting with
/// column names in the leases table.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void ReservedPrimaryKeyColumnNamesTriggerTest(SupportedLanguages lang)
{
@@ -506,7 +507,7 @@ public void ReservedPrimaryKeyColumnNamesTriggerTest(SupportedLanguages lang)
///
/// Tests the error message when the user table contains columns of unsupported SQL types.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void UnsupportedColumnTypesTriggerTest(SupportedLanguages lang)
{
@@ -521,7 +522,7 @@ public void UnsupportedColumnTypesTriggerTest(SupportedLanguages lang)
///
/// Tests the error message when change tracking is not enabled on the user table.
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void ChangeTrackingNotEnabledTriggerTest(SupportedLanguages lang)
{
@@ -557,7 +558,7 @@ public async void GetMetricsTest()
///
/// Tests that when using an unsupported database the expected error is thrown
///
- [Theory]
+ [RetryTheory]
[SqlInlineData()]
public void UnsupportedDatabaseThrows(SupportedLanguages lang)
{
diff --git a/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj b/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj
index ef533f160..7dddc6de3 100644
--- a/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj
+++ b/test/Microsoft.Azure.WebJobs.Extensions.Sql.Tests.csproj
@@ -5,6 +5,7 @@
+
@@ -18,8 +19,11 @@
- Always
-
+ Always
+
+
+ PreserveNewest
+
diff --git a/test/packages.lock.json b/test/packages.lock.json
index 492b16351..5eda640be 100644
--- a/test/packages.lock.json
+++ b/test/packages.lock.json
@@ -74,6 +74,15 @@
"resolved": "13.0.2",
"contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg=="
},
+ "xRetry": {
+ "type": "Direct",
+ "requested": "[1.9.0, )",
+ "resolved": "1.9.0",
+ "contentHash": "NeIbJrwpc5EUPagx/mdd/7KzpR36BO8IWrsbgtvOVjxD2xtmNfUHieZ24PeZ4oCYiLBcTviCy+og/bE/OvPchw==",
+ "dependencies": {
+ "xunit.core": "[2.4.0, 3.0.0)"
+ }
+ },
"xunit": {
"type": "Direct",
"requested": "[2.4.2, )",
diff --git a/test/xunit.runner.json b/test/xunit.runner.json
new file mode 100644
index 000000000..af6c85ea4
--- /dev/null
+++ b/test/xunit.runner.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
+ "diagnosticMessages": true
+}
\ No newline at end of file