Skip to content

Commit 759dc69

Browse files
authored
Fix | Minor fixes to support different test environments (#2045) (#2325)
1 parent f8520c7 commit 759dc69

File tree

13 files changed

+114
-69
lines changed

13 files changed

+114
-69
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SSRP.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,14 @@ internal static int GetPortByInstanceName(string browserHostName, string instanc
4848
}
4949
catch (SocketException se)
5050
{
51+
// A SocketException is possible for an instance name that doesn't exist.
52+
// If there are multiple IP addresses and one of them fails with a SocketException but
53+
// others simply don't respond because the instance name is invalid, we want to return
54+
// the same error as if the response was empty. The higher error suits all scenarios.
55+
// But log it, just in case there is a different, underlying issue that support needs
56+
// to troubleshoot.
5157
SqlClientEventSource.Log.TrySNITraceEvent(nameof(SSRP), EventType.ERR, "SocketException Message = {0}", args0: se?.Message);
52-
throw new Exception(SQLMessage.SqlServerBrowserNotAccessible(), se);
58+
throw;
5359
}
5460

5561
const byte SvrResp = 0x05;
@@ -321,9 +327,37 @@ private static SsrpResult SendUDPRequest(IPEndPoint endPoint, byte[] requestPack
321327
}
322328
}
323329
}
330+
catch (AggregateException ae)
331+
{
332+
if (ae.InnerExceptions.Count > 0)
333+
{
334+
// Log all errors
335+
foreach (Exception e in ae.InnerExceptions)
336+
{
337+
// Favor SocketException for returned error
338+
if (e is SocketException)
339+
{
340+
result.Error = e;
341+
}
342+
SqlClientEventSource.Log.TrySNITraceEvent(nameof(SSRP), EventType.INFO,
343+
"SendUDPRequest ({0}) resulted in exception: {1}", args0: endPoint.ToString(), args1: e.Message);
344+
}
345+
346+
// Return first error if we didn't find a SocketException
347+
result.Error = result.Error == null ? ae.InnerExceptions[0] : result.Error;
348+
}
349+
else
350+
{
351+
result.Error = ae;
352+
SqlClientEventSource.Log.TrySNITraceEvent(nameof(SSRP), EventType.INFO,
353+
"SendUDPRequest ({0}) resulted in exception: {1}", args0: endPoint.ToString(), args1: ae.Message);
354+
}
355+
}
324356
catch (Exception e)
325357
{
326358
result.Error = e;
359+
SqlClientEventSource.Log.TrySNITraceEvent(nameof(SSRP), EventType.INFO,
360+
"SendUDPRequest ({0}) resulted in exception: {1}", args0: endPoint.ToString(), args1: e.Message);
327361
}
328362

329363
return result;

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlUtil.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1984,10 +1984,6 @@ internal static string SSPIGenerateError()
19841984
{
19851985
return StringsHelper.GetString(Strings.SQL_SSPIGenerateError);
19861986
}
1987-
internal static string SqlServerBrowserNotAccessible()
1988-
{
1989-
return StringsHelper.GetString(Strings.SQL_SqlServerBrowserNotAccessible);
1990-
}
19911987
internal static string KerberosTicketMissingError()
19921988
{
19931989
return StringsHelper.GetString(Strings.SQL_KerberosTicketMissingError);

src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.Designer.cs

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Microsoft.Data.SqlClient/netcore/src/Resources/Strings.resx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -537,9 +537,6 @@
537537
<data name="SQL_KerberosTicketMissingError" xml:space="preserve">
538538
<value>Cannot authenticate using Kerberos. Ensure Kerberos has been initialized on the client with 'kinit' and a Service Principal Name has been registered for the SQL Server to allow Kerberos authentication.</value>
539539
</data>
540-
<data name="SQL_SqlServerBrowserNotAccessible" xml:space="preserve">
541-
<value>Cannot connect to SQL Server Browser. Ensure SQL Server Browser has been started.</value>
542-
</data>
543540
<data name="SQL_InvalidSSPIPacketSize" xml:space="preserve">
544541
<value>Invalid SSPI packet size.</value>
545542
</data>

src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/ApiShould.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public ApiShould(PlatformSpecificTestContext context)
5757
DummyKeyStoreProvider.Name, _lastTenBytesCek);
5858
}
5959

60-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
60+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
6161
[ClassData(typeof(AEConnectionStringProviderWithBooleanVariable))]
6262
public void TestSqlTransactionCommitRollbackWithTransparentInsert(string connection, bool isCommitted)
6363
{
@@ -94,7 +94,7 @@ public void TestSqlTransactionCommitRollbackWithTransparentInsert(string connect
9494
}
9595
}
9696

97-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
97+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
9898
[ClassData(typeof(AEConnectionStringProvider))]
9999
public void TestSqlTransactionRollbackToSavePoint(string connection)
100100
{
@@ -140,7 +140,7 @@ public void TestSqlTransactionRollbackToSavePoint(string connection)
140140
}
141141
}
142142

143-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
143+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
144144
[ClassData(typeof(AEConnectionStringProvider))]
145145
public void SqlParameterProperties(string connection)
146146
{
@@ -351,7 +351,7 @@ public void SqlParameterProperties(string connection)
351351
}
352352
}
353353

354-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
354+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
355355
[ClassData(typeof(AEConnectionStringProvider))]
356356
public void TestSqlDataAdapterFillDataTable(string connection)
357357
{
@@ -424,7 +424,7 @@ public void TestSqlDataAdapterFillDataTable(string connection)
424424
}
425425
}
426426

427-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
427+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
428428
[ClassData(typeof(AEConnectionStringProviderWithSchemaType))]
429429
public void TestSqlDataAdapterFillSchema(string connection, SchemaType schemaType)
430430
{
@@ -471,7 +471,7 @@ private void ValidateSchema(DataColumnCollection dataColumns)
471471
Assert.Equal(typeof(string), dataColumns[2].DataType);
472472
}
473473

474-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
474+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
475475
[ClassData(typeof(AEConnectionStringProviderWithBooleanVariable))]
476476
public void TestExecuteNonQuery(string connection, bool isAsync)
477477
{
@@ -539,7 +539,7 @@ public void TestExecuteNonQuery(string connection, bool isAsync)
539539
});
540540
}
541541

542-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
542+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
543543
[ClassData(typeof(AEConnectionStringProviderWithBooleanVariable))]
544544
public void TestExecuteScalar(string connection, bool isAsync)
545545
{
@@ -591,7 +591,7 @@ public void TestExecuteScalar(string connection, bool isAsync)
591591
});
592592
}
593593

594-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
594+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
595595
[ClassData(typeof(AEConnectionStringProviderWithIntegers))]
596596
public void TestSqlDataAdapterBatchUpdate(string connection, int numberofRows)
597597
{
@@ -636,7 +636,7 @@ public void TestSqlDataAdapterBatchUpdate(string connection, int numberofRows)
636636
}
637637
}
638638

639-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
639+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
640640
[ClassData(typeof(AEConnectionStringProvider))]
641641
public void TestExecuteReader(string connection)
642642
{
@@ -690,7 +690,7 @@ public void TestExecuteReader(string connection)
690690
});
691691
}
692692

693-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
693+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
694694
[ClassData(typeof(AEConnectionStringProvider))]
695695
public async void TestExecuteReaderAsyncWithLargeQuery(string connectionString)
696696
{
@@ -743,7 +743,7 @@ public async void TestExecuteReaderAsyncWithLargeQuery(string connectionString)
743743
}
744744
}
745745

746-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
746+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
747747
[ClassData(typeof(AEConnectionStringProviderWithCommandBehaviorSet1))]
748748
public void TestExecuteReaderWithCommandBehavior(string connection, CommandBehavior commandBehavior)
749749
{
@@ -868,7 +868,7 @@ public void TestExecuteReaderWithCommandBehavior(string connection, CommandBehav
868868
});
869869
}
870870

871-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
871+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
872872
[ClassData(typeof(AEConnectionStringProvider))]
873873
public void TestEnclaveStoredProceduresWithAndWithoutParameters(string connectionString)
874874
{
@@ -915,7 +915,7 @@ public void TestEnclaveStoredProceduresWithAndWithoutParameters(string connectio
915915
}
916916
}
917917

918-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
918+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
919919
[ClassData(typeof(AEConnectionStringProvider))]
920920
public void TestPrepareWithExecuteNonQuery(string connection)
921921
{
@@ -964,7 +964,7 @@ public void TestPrepareWithExecuteNonQuery(string connection)
964964
}
965965
}
966966

967-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
967+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
968968
[ClassData(typeof(AEConnectionStringProvider))]
969969
public void TestAsyncWriteDelayWithExecuteNonQueryAsync(string connection)
970970
{
@@ -1018,7 +1018,7 @@ public void TestAsyncWriteDelayWithExecuteNonQueryAsync(string connection)
10181018
}
10191019
}
10201020

1021-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1021+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
10221022
[ClassData(typeof(AEConnectionStringProvider))]
10231023
public void TestAsyncWriteDelayWithExecuteReaderAsync(string connection)
10241024
{
@@ -1085,7 +1085,7 @@ public void TestAsyncWriteDelayWithExecuteReaderAsync(string connection)
10851085
}
10861086
}
10871087

1088-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1088+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
10891089
[ClassData(typeof(AEConnectionStringProvider))]
10901090
public void TestPrepareWithExecuteNonQueryAsync(string connection)
10911091
{
@@ -1140,7 +1140,7 @@ public void TestPrepareWithExecuteNonQueryAsync(string connection)
11401140
}
11411141
}
11421142

1143-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1143+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
11441144
[ClassData(typeof(AEConnectionStringProviderWithCommandBehaviorSet2))]
11451145
public void TestPrepareWithExecuteReaderAsync(string connection, CommandBehavior commandBehavior)
11461146
{
@@ -1202,7 +1202,7 @@ public void TestPrepareWithExecuteReaderAsync(string connection, CommandBehavior
12021202
}
12031203
}
12041204

1205-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1205+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
12061206
[ClassData(typeof(AEConnectionStringProvider))]
12071207
public void TestSqlDataReaderAPIs(string connection)
12081208
{
@@ -1399,7 +1399,7 @@ public void TestSqlDataReaderAPIs(string connection)
13991399
}
14001400
}
14011401

1402-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1402+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
14031403
[ClassData(typeof(AEConnectionStringProvider))]
14041404
public void TestSqlDataReaderAPIsWithSequentialAccess(string connection)
14051405
{
@@ -1827,7 +1827,7 @@ public void TestSqlDataReaderAPIsWithSequentialAccess(string connection)
18271827
}
18281828
}
18291829

1830-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1830+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
18311831
[ClassData(typeof(AEConnectionStringProviderWithCommandBehaviorSet2))]
18321832
public void TestSqlCommandSequentialAccessCodePaths(string connection, CommandBehavior value)
18331833
{
@@ -1871,7 +1871,7 @@ public void TestSqlCommandSequentialAccessCodePaths(string connection, CommandBe
18711871
}
18721872
}
18731873

1874-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
1874+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
18751875
[ClassData(typeof(AEConnectionStringProvider))]
18761876
public void TestExecuteXmlReader(string connection)
18771877
{
@@ -2126,7 +2126,7 @@ public void TestSqlCommandCancel(string connection, string value, int number)
21262126
}
21272127
}
21282128

2129-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
2129+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
21302130
[ClassData(typeof(AEConnectionStringProviderWithCancellationTime))]
21312131
public void TestSqlCommandCancellationToken(string connection, int initalValue, int cancellationTime)
21322132
{
@@ -2194,7 +2194,7 @@ public void TestNoneAttestationProtocolWithSGXEnclave()
21942194
}
21952195
}
21962196

2197-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
2197+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
21982198
[ClassData(typeof(AEConnectionStringProvider))]
21992199
public void TestConnectionCustomKeyStoreProviderDuringAeQuery(string connectionString)
22002200
{
@@ -2249,7 +2249,7 @@ public void TestConnectionCustomKeyStoreProviderDuringAeQuery(string connectionS
22492249
}
22502250
}
22512251

2252-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
2252+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE), nameof(DataTestUtility.IsAKVSetupAvailable))]
22532253
[ClassData(typeof(AEConnectionStringProvider))]
22542254
public void TestCommandCustomKeyStoreProviderDuringAeQuery(string connectionString)
22552255
{
@@ -2300,7 +2300,7 @@ public void TestCommandCustomKeyStoreProviderDuringAeQuery(string connectionStri
23002300
// On Windows, "_fixture" will be type SQLSetupStrategyCertStoreProvider
23012301
// On non-Windows, "_fixture" will be type SQLSetupStrategyAzureKeyVault
23022302
// Test will pass on both but only SQLSetupStrategyCertStoreProvider is a system provider
2303-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
2303+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
23042304
[ClassData(typeof(AEConnectionStringProvider))]
23052305
public void TestSystemProvidersHavePrecedenceOverInstanceLevelProviders(string connectionString)
23062306
{

src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/BulkCopyAE.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public BulkCopyAE(PlatformSpecificTestContext context)
2424
tableName = fixture.BulkCopyAETestTable.Name;
2525
}
2626

27-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
27+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
2828
[ClassData(typeof(AEConnectionStringProvider))]
2929
public void TestBulkCopyString(string connectionString)
3030
{

src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/BulkCopyAEErrorMessage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public BulkCopyAEErrorMessage(PlatformSpecificTestContext context)
2525
_columnName = "c1";
2626
}
2727

28-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
28+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
2929
[ClassData(typeof(AEConnectionStringProvider))]
3030
public void TextToIntErrorMessageTest(string connectionString)
3131
{

src/Microsoft.Data.SqlClient/tests/ManualTests/AlwaysEncrypted/End2EndSmokeTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public End2EndSmokeTests(PlatformSpecificTestContext context)
2424
}
2525

2626
// tests
27-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
27+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
2828
[ClassData(typeof(TestSelectOnEncryptedNonEncryptedColumnsData))]
2929
public void TestSelectOnEncryptedNonEncryptedColumns(string connString, string selectQuery, int totalColumnsInSelect, string[] types)
3030
{
@@ -58,7 +58,7 @@ public void TestSelectOnEncryptedNonEncryptedColumns(string connString, string s
5858
}
5959
}
6060

61-
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringSetupForAE))]
61+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.IsTargetReadyForAeWithKeyStore))]
6262
[ClassData(typeof(TestSelectOnEncryptedNonEncryptedColumnsWithEncryptedParametersData))]
6363
public void TestSelectOnEncryptedNonEncryptedColumnsWithEncryptedParameters(string connString,
6464
bool sync,

0 commit comments

Comments
 (0)