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
9 changes: 9 additions & 0 deletions src/Synapse/Synapse.Test/ScenarioTests/Common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ function Get-SynapseSqlPoolName
return getAssetName
}

<#
.SYNOPSIS
Gets a Synapse Analytics SQL database name to use for testing
#>
function Get-SynapseSqlDatabaseName
{
return getAssetName
}

<#
.SYNOPSIS
Gets a DataLake Analytics storage name to use for testing
Expand Down
55 changes: 55 additions & 0 deletions src/Synapse/Synapse.Test/ScenarioTests/SqlDatabaseTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// ----------------------------------------------------------------------------------
//
// Copyright Microsoft Corporation
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ----------------------------------------------------------------------------------

namespace Microsoft.Azure.Commands.Synapse.Test.ScenarioTests
{
using Microsoft.WindowsAzure.Commands.ScenarioTest;
using ServiceManagement.Common.Models;
using Xunit;

public class SqlDatabaseTests : SynapseTestBase
{
public XunitTracingInterceptor _logger;

public SqlDatabaseTests(Xunit.Abstractions.ITestOutputHelper output)
{
_logger = new XunitTracingInterceptor(output);
XunitTracingInterceptor.AddToContext(_logger);
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSynapseSqlDatabase()
{
string testResourceGroupName = SynapseTestBase.TestResourceGroupName;
if (string.IsNullOrEmpty(testResourceGroupName))
{
testResourceGroupName = nameof(TestResourceGroupName);
}

string testWorkspaceName = SynapseTestBase.TestWorkspaceName;
if (string.IsNullOrEmpty(testWorkspaceName))
{
testWorkspaceName = nameof(TestWorkspaceName);
}

SynapseTestBase.NewInstance.RunPsTest(
_logger,
string.Format(
"Test-SynapseSqlDatabase -resourceGroupName '{0}' -workspaceName '{1}'",
testResourceGroupName,
testWorkspaceName));
}
}
}
73 changes: 73 additions & 0 deletions src/Synapse/Synapse.Test/ScenarioTests/SqlDatabaseTests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<#
.SYNOPSIS
Tests Synapse SqlDatabase Lifecycle (Create, Update, Get, List, Delete).
#>
function Test-SynapseSqlDatabase
{
param
(
$resourceGroupName = (Get-ResourceGroupName),
$workspaceName = (Get-SynapseWorkspaceName),
$SqlDatabaseName = (Get-SynapseSqlDatabaseName)
)

try
{
$resourceGroupName = [Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::GetVariable("resourceGroupName", $resourceGroupName)
$workspaceName = [Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::GetVariable("workspaceName", $workspaceName)
$workspace = Get-AzSynapseWorkspace -resourceGroupName $resourceGroupName -Name $workspaceName
$location = $workspace.Location

# Test to make sure the SqlDatabase doesn't exist
Assert-False {Test-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName}

$SqlDatabaseCreated = New-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName

Assert-AreEqual $SqlDatabaseName $SqlDatabaseCreated.Name
Assert-AreEqual $location $SqlDatabaseCreated.Location
Assert-AreEqual "Microsoft.Synapse/Workspaces/SqlDatabases" $SqlDatabaseCreated.Type
Assert-True {$SqlDatabaseCreated.Id -like "*$resourceGroupName*"}

[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(180000)
[array]$SqlDatabaseGet = Get-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName
Assert-AreEqual $SqlDatabaseName $SqlDatabaseGet[0].Name
Assert-AreEqual $location $SqlDatabaseGet[0].Location
Assert-AreEqual "Microsoft.Synapse/Workspaces/SqlDatabases" $SqlDatabaseGet[0].Type
Assert-True {$SqlDatabaseCreated.Id -like "*$resourceGroupName*"}

# Test to make sure the SqlDatabase does exist now
Assert-True {Test-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName}

# List all SqlDatabases in workspace
[array]$SqlDatabasesInWorkspace = Get-AzSynapseSqlDatabase -resourceGroupName $resourceGroupName -WorkspaceName $workspaceName
Assert-True {$SqlDatabasesInWorkspace.Count -ge 1}

$found = 0
for ($i = 0; $i -lt $SqlDatabasesInWorkspace.Count; $i++)
{
if ($SqlDatabasesInWorkspace[$i].Name -eq $SqlDatabaseName)
{
$found = 1
Assert-AreEqual $location $SqlDatabasesInWorkspace[$i].Location
Assert-AreEqual "Microsoft.Synapse/workspaces/SqlDatabases" $SqlDatabasesInWorkspace[$i].Type
Assert-True {$SqlDatabasesInWorkspace[$i].Id -like "*$resourceGroupName*"}
break
}
}

Assert-True {$found -eq 1} "SqlDatabase created earlier is not found when listing all in resource group: $resourceGroupName."

# Delete SqlDatabase
Assert-True {Remove-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName -PassThru} "Remove SqlDatabase failed."

[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(180000)

# Verify that it is gone by trying to get it again
Assert-Throws {Get-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName}
}
finally
{
# cleanup the SQL pool that was used in case it still exists. This is a best effort task, we ignore failures here.
Invoke-HandledCmdlet -Command {Remove-AzSynapseSqlDatabase -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $SqlDatabaseName -ErrorAction SilentlyContinue} -IgnoreFailures
}
}
55 changes: 55 additions & 0 deletions src/Synapse/Synapse.Test/ScenarioTests/SqlPoolV3Tests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// ----------------------------------------------------------------------------------
//
// Copyright Microsoft Corporation
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ----------------------------------------------------------------------------------

namespace Microsoft.Azure.Commands.Synapse.Test.ScenarioTests
{
using Microsoft.WindowsAzure.Commands.ScenarioTest;
using ServiceManagement.Common.Models;
using Xunit;

public class SqlPoolV3Tests : SynapseTestBase
{
public XunitTracingInterceptor _logger;

public SqlPoolV3Tests(Xunit.Abstractions.ITestOutputHelper output)
{
_logger = new XunitTracingInterceptor(output);
XunitTracingInterceptor.AddToContext(_logger);
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSynapseSqlPoolV3()
{
string testResourceGroupName = SynapseTestBase.TestResourceGroupName;
if (string.IsNullOrEmpty(testResourceGroupName))
{
testResourceGroupName = nameof(TestResourceGroupName);
}

string testWorkspaceName = SynapseTestBase.TestWorkspaceName;
if (string.IsNullOrEmpty(testWorkspaceName))
{
testWorkspaceName = nameof(TestWorkspaceName);
}

SynapseTestBase.NewInstance.RunPsTest(
_logger,
string.Format(
"Test-SynapseSqlPoolV3 -resourceGroupName '{0}' -workspaceName '{1}'",
testResourceGroupName,
testWorkspaceName));
}
}
}
101 changes: 101 additions & 0 deletions src/Synapse/Synapse.Test/ScenarioTests/SqlPoolV3Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<#
.SYNOPSIS
Tests Synapse SqlPool Lifecycle (Create, Update, Get, List, Delete).
#>
function Test-SynapseSqlPoolV3
{
param
(
$resourceGroupName = (Get-ResourceGroupName),
$workspaceName = (Get-SynapseWorkspaceName),
$sqlPoolName = (Get-SynapseSqlPoolName),
$sqlPoolPerformanceLevel = 'DW500f'
)

try
{
$resourceGroupName = [Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::GetVariable("resourceGroupName", $resourceGroupName)
$workspaceName = [Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::GetVariable("workspaceName", $workspaceName)
$workspace = Get-AzSynapseWorkspace -resourceGroupName $resourceGroupName -Name $workspaceName
$location = $workspace.Location

# Test to make sure the SqlPool doesn't exist
Assert-False {Test-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3}

$sqlPoolCreated = New-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -PerformanceLevel $sqlPoolPerformanceLevel -Version 3

Assert-AreEqual $sqlPoolName $sqlPoolCreated.Name
Assert-AreEqual $location $sqlPoolCreated.Location
Assert-AreEqual "Microsoft.Synapse/Workspaces/sqlPools" $sqlPoolCreated.Type
Assert-True {$sqlPoolCreated.Id -like "*$resourceGroupName*"}

# In loop to check if SQL pool exists
for ($i = 0; $i -le 60; $i++)
{
[array]$sqlPoolGet = Get-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3
if ($sqlPoolGet[0].Status -like "Online")
{
Assert-AreEqual $sqlPoolName $sqlPoolGet[0].Name
Assert-AreEqual $location $sqlPoolGet[0].Location
Assert-AreEqual "Microsoft.Synapse/Workspaces/sqlPools" $sqlPoolGet[0].Type
Assert-True {$sqlPoolCreated.Id -like "*$resourceGroupName*"}
break
}

Write-Host "SqlPool not yet provisioned. current state: $($sqlPoolGet[0].Status)"
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(30000)
Assert-False {$i -eq 60} "Synapse SqlPool is not in succeeded state even after 30 min."
}

# Test to make sure the SqlPool does exist now
Assert-True {Test-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3}

# Updating SqlPool
$newPerformanceLevel = 'DW1000f'
Update-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3 -PerformanceLevel $newPerformanceLevel

# Wait for 3 minutes for the update completion
# Without this, the test will pass non-deterministically
[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(180000)
$sqlPoolUpdated = Get-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3

Assert-AreEqual $sqlPoolName $sqlPoolUpdated.Name
Assert-AreEqual $location $sqlPoolUpdated.Location
Assert-AreEqual "Microsoft.Synapse/workspaces/sqlPools" $sqlPoolUpdated.Type
Assert-True {$sqlPoolUpdated.Id -like "*$resourceGroupName*"}

Assert-NotNull $sqlPoolUpdated.Sku.Name "Sku does not exist"
Assert-AreEqual $newPerformanceLevel $sqlPoolUpdated.Sku.Name

# List all SqlPools in workspace
[array]$sqlPoolsInWorkspace = Get-AzSynapseSqlPool -resourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Version 3
Assert-True {$sqlPoolsInWorkspace.Count -ge 1}

$found = 0
for ($i = 0; $i -lt $sqlPoolsInWorkspace.Count; $i++)
{
if ($sqlPoolsInWorkspace[$i].Name -eq $sqlPoolName)
{
$found = 1
Assert-AreEqual $location $sqlPoolsInWorkspace[$i].Location
Assert-AreEqual "Microsoft.Synapse/workspaces/sqlPools" $sqlPoolsInWorkspace[$i].Type
Assert-True {$sqlPoolsInWorkspace[$i].Id -like "*$resourceGroupName*"}
break
}
}
Assert-True {$found -eq 1} "SqlPool created earlier is not found when listing all in resource group: $resourceGroupName."

# Delete SqlPool
Assert-True {Remove-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3 -PassThru} "Remove SqlPool failed."

[Microsoft.Rest.ClientRuntime.Azure.TestFramework.TestUtilities]::Wait(180000)

# Verify that it is gone by trying to get it again
Assert-Throws {Get-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3}
}
finally
{
# cleanup the SQL pool that was used in case it still exists. This is a best effort task, we ignore failures here.
Invoke-HandledCmdlet -Command {Remove-AzSynapseSqlPool -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -Name $sqlPoolName -Version 3 -ErrorAction SilentlyContinue} -IgnoreFailures
}
}
10 changes: 9 additions & 1 deletion src/Synapse/Synapse.Test/ScenarioTests/SynapseTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ public class SynapseTestBase : RMTestBase

public SynapseManagementClient SynapseManagementClient { get; private set; }

public SynapseSqlV3ManagementClient SynapseSqlV3ManagementClient { get; private set; }

public SynapseClient SynapseClient { get; private set; }

public StorageManagementClient StorageManagementClient { get; private set; }
Expand Down Expand Up @@ -106,7 +108,6 @@ public void RunPsTestWorkflow(
"ScenarioTests\\Common.ps1",
"ScenarioTests\\" + callingClassName + ".ps1",
_helper.RMProfileModule,
//"AzureRM.Storage.ps1",
_helper.GetRMModulePath(@"Az.Synapse.psd1"),
"AzureRM.Resources.ps1",
_helper.GetRMModulePath(@"Az.Storage.psd1"));
Expand All @@ -128,11 +129,13 @@ public void RunPsTestWorkflow(
protected void SetupManagementClients(MockContext context)
{
SynapseManagementClient = GetSynapseManagementClient(context);
SynapseSqlV3ManagementClient = GetSynapseSqlV3ManagementClient(context);
SynapseClient = GetSynapseClient(context);
StorageManagementClient = GetStorageManagementClient(context);
NewResourceManagementClient = GetResourceManagementClient(context);
_helper.SetupManagementClients(
SynapseManagementClient,
SynapseSqlV3ManagementClient,
SynapseClient,
StorageManagementClient,
NewResourceManagementClient
Expand Down Expand Up @@ -167,6 +170,11 @@ protected static SynapseManagementClient GetSynapseManagementClient(MockContext
return context.GetServiceClient<SynapseManagementClient>(TestEnvironmentFactory.GetTestEnvironment());
}

protected static SynapseSqlV3ManagementClient GetSynapseSqlV3ManagementClient(MockContext context)
{
return context.GetServiceClient<SynapseSqlV3ManagementClient>(TestEnvironmentFactory.GetTestEnvironment());
}

protected static SynapseClient GetSynapseClient(MockContext context)
{
string environmentConnectionString = Environment.GetEnvironmentVariable("TEST_CSM_ORGID_AUTHENTICATION");
Expand Down
Loading