Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,21 @@ parameters:
type: string
default: empty

# The timeout, in minutes, for this job.
- name: timeout
type: string
default: 90

jobs:
- job: run_tests_package_reference
displayName: 'Run tests with package reference'
${{ if ne(parameters.dependsOn, 'empty')}}:
dependsOn: '${{parameters.dependsOn }}'

# Some of our tests take longer than the default 60 minutes to run on some
# OSes and configurations.
timeoutInMinutes: ${{ parameters.timeout }}

pool:
type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs
isCustom: true
Expand Down
7 changes: 7 additions & 0 deletions eng/pipelines/dotnet-sqlclient-signing-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ parameters: # parameters are shown up in ADO UI in a build queue time
- NonOfficial
- Official

# The timeout, in minutes, for each test job.
- name: testsTimeout
displayName: 'Tests timeout (in minutes)'
type: string
default: 90

variables:
- template: /eng/pipelines/libraries/variables.yml@self
- name: packageFolderName
Expand Down Expand Up @@ -172,6 +178,7 @@ extends:
- template: eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml@self
parameters:
packageFolderName: $(packageFolderName)
timeout: ${{ parameters.testsTimeout }}
downloadPackageStep:
download: current
artifact: $(packageFolderName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -851,9 +851,30 @@ public override uint Receive(out SNIPacket packet, int timeoutInMilliseconds)
}
finally
{
// Reset the socket timeout to Timeout.Infinite after the receive operation is done
// to avoid blocking the thread in case of a timeout error.
_socket.ReceiveTimeout = Timeout.Infinite;
const int resetTimeout = Timeout.Infinite;

try
{
// Reset the socket timeout to Timeout.Infinite after
// the receive operation is done to avoid blocking the
// thread in case of a timeout error.
_socket.ReceiveTimeout = resetTimeout;

}
catch (SocketException ex)
{
// We sometimes see setting the ReceiveTimeout fail
// on macOS. There's isn't much we can do about it
// though, so just log and move on.
SqlClientEventSource.Log.TrySNITraceEvent(
nameof(SNITCPHandle),
EventType.ERR,
"Connection Id {0}, Failed to reset socket " +
"receive timeout to {1}: {2}",
_connectionId,
resetTimeout,
ex.Message);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,28 @@ private static TokenCredentialData CreateTokenCredentialInstance(TokenCredential
defaultAzureCredentialOptions.WorkloadIdentityClientId = tokenCredentialKey._clientId;
}

return new TokenCredentialData(new DefaultAzureCredential(defaultAzureCredentialOptions), GetHash(secret));
// SqlClient is a library and provides support to acquire access
// token using 'DefaultAzureCredential' on user demand when they
// specify 'Authentication = Active Directory Default' in
// connection string.
//
// Default Azure Credential is instantiated by the calling
// application when using "Active Directory Default"
// authentication code to connect to Azure SQL instance.
// SqlClient is a library, doesn't instantiate the credential
// without running application instructions.
//
// Note that CodeQL suppression support can only detect
// suppression comments that appear immediately above the
// flagged statement, or appended to the end of the statement.
// Multi-line justifications are not supported.
//
// https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/codeql/codeql-semmle#guidance-on-suppressions
//
// CodeQL [SM05137] See above for justification.
DefaultAzureCredential cred = new(defaultAzureCredentialOptions);

return new TokenCredentialData(cred, GetHash(secret));
}

TokenCredentialOptions tokenCredentialOptions = new() { AuthorityHost = new Uri(tokenCredentialKey._authority) };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,15 @@ public void TestEncryptDecryptWithAKV()
[PlatformSpecific(TestPlatforms.Windows)]
public void TestRoundTripWithAKVAndCertStoreProvider()
{
using SQLSetupStrategyCertStoreProvider certStoreFixture = new ();
SqlColumnEncryptionCertificateStoreProvider certStoreProvider = new SqlColumnEncryptionCertificateStoreProvider();
byte[] plainTextColumnEncryptionKey = ColumnEncryptionKey.GenerateRandomBytes(ColumnEncryptionKey.KeySizeInBytes);
byte[] encryptedColumnEncryptionKeyUsingAKV = _fixture.AkvStoreProvider.EncryptColumnEncryptionKey(DataTestUtility.AKVUrl, @"RSA_OAEP", plainTextColumnEncryptionKey);
byte[] columnEncryptionKeyReturnedAKV2Cert = certStoreFixture.CertStoreProvider.DecryptColumnEncryptionKey(certStoreFixture.CspColumnMasterKey.KeyPath, @"RSA_OAEP", encryptedColumnEncryptionKeyUsingAKV);
byte[] encryptedColumnEncryptionKeyUsingAKV = _fixture.AkvStoreProvider.EncryptColumnEncryptionKey(_fixture.AkvKeyUrl, @"RSA_OAEP", plainTextColumnEncryptionKey);
byte[] columnEncryptionKeyReturnedAKV2Cert = certStoreProvider.DecryptColumnEncryptionKey(_fixture.ColumnMasterKeyPath, @"RSA_OAEP", encryptedColumnEncryptionKeyUsingAKV);
Assert.True(plainTextColumnEncryptionKey.SequenceEqual(columnEncryptionKeyReturnedAKV2Cert), @"Roundtrip failed");

// Try the opposite.
byte[] encryptedColumnEncryptionKeyUsingCert = certStoreFixture.CertStoreProvider.EncryptColumnEncryptionKey(certStoreFixture.CspColumnMasterKey.KeyPath, @"RSA_OAEP", plainTextColumnEncryptionKey);
byte[] columnEncryptionKeyReturnedCert2AKV = _fixture.AkvStoreProvider.DecryptColumnEncryptionKey(DataTestUtility.AKVUrl, @"RSA_OAEP", encryptedColumnEncryptionKeyUsingCert);
byte[] encryptedColumnEncryptionKeyUsingCert = certStoreProvider.EncryptColumnEncryptionKey(_fixture.ColumnMasterKeyPath, @"RSA_OAEP", plainTextColumnEncryptionKey);
byte[] columnEncryptionKeyReturnedCert2AKV = _fixture.AkvStoreProvider.DecryptColumnEncryptionKey(_fixture.AkvKeyUrl, @"RSA_OAEP", encryptedColumnEncryptionKeyUsingCert);
Assert.True(plainTextColumnEncryptionKey.SequenceEqual(columnEncryptionKeyReturnedCert2AKV), @"Roundtrip failed");
}

Expand Down
Loading
Loading