From db8da7d5e36874841a0e28d45fe58a4d606f3ec2 Mon Sep 17 00:00:00 2001 From: Kushagra Thapar Date: Tue, 2 Feb 2021 10:44:09 -0800 Subject: [PATCH 1/5] Updated cosmos emulator yml script to remove the existing installation, install latest version and run emulator with latest version --- .../templates/steps/cosmos-emulator.yml | 80 ++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/eng/common/pipelines/templates/steps/cosmos-emulator.yml b/eng/common/pipelines/templates/steps/cosmos-emulator.yml index 564f3e429bd7..739261856d36 100644 --- a/eng/common/pipelines/templates/steps/cosmos-emulator.yml +++ b/eng/common/pipelines/templates/steps/cosmos-emulator.yml @@ -9,8 +9,84 @@ steps: Write-Host "Target Dir: $targetDir" msiexec /a ${{ parameters.EmulatorMsiUrl }} TARGETDIR=$targetDir /qn | wait-process displayName: Download and Extract Public Cosmos DB Emulator + - powershell: | + Write-Host "Deleting Cosmos DB Emulator data" + if (Test-Path $Env:LOCALAPPDATA\CosmosDbEmulator) { Remove-Item -Recurse -Force $Env:LOCALAPPDATA\CosmosDbEmulator } + displayName: Delete Cosmos DB Emulator data + - powershell: | + Write-Host "Getting Cosmos DB Emulator Version" + $ProductName = "Azure Cosmos DB Emulator" + $Emulator = (Join-Path $env:temp (Join-Path $ProductName "Microsoft.Azure.Cosmos.Emulator.exe")) + $fileVersion = Get-ChildItem $Emulator + Write-Host $Emulator $fileVersion.VersionInfo + displayName: Get Cosmos DB Emulator Version - powershell: | Write-Host "Launching Cosmos DB Emulator" - Import-Module "$env:temp\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator" - Start-CosmosDbEmulator -NoUI ${{ parameters.StartParameters }} + $ProductName = "Azure Cosmos DB Emulator" + $Emulator = (Join-Path $env:temp (Join-Path $ProductName "Microsoft.Azure.Cosmos.Emulator.exe")) + if (!(Test-Path $Emulator)) { + Write-Error "The emulator is not installed where expected at '$Emulator'" + return + } + $process = Start-Process $Emulator -ArgumentList "/getstatus" -PassThru -Wait + switch ($process.ExitCode) { + 1 { + Write-Host "The emulator is already starting" + return + } + 2 { + Write-Host "The emulator is already running" + return + } + 3 { + Write-Host "The emulator is stopped" + } + default { + Write-Host "Unrecognized exit code $process.ExitCode" + return + } + } + $argumentList = "" + if (-not [string]::IsNullOrEmpty("${{ parameters.StartParameters }}")) { + $argumentList += , "${{ parameters.StartParameters }}" + } + Write-Host "Starting emulator process: $Emulator $argumentList" + $process=Start-Process $Emulator -ArgumentList $argumentList -ErrorAction Stop -PassThru + Write-Host "Emulator process started: $($process.Name), $($process.FileVersion)" + $Timeout = 600 + $result="NotYetStarted" + $complete = if ($Timeout -gt 0) { + $start = [DateTimeOffset]::Now + $stop = $start.AddSeconds($Timeout) + { + $result -eq "Running" -or [DateTimeOffset]::Now -ge $stop + } + } + else { + { + $result -eq "Running" + } + } + do { + $process = Start-Process $Emulator -ArgumentList "/getstatus" -PassThru -Wait + switch ($process.ExitCode) { + 1 { + Write-Host "The emulator is starting" + } + 2 { + Write-Host "The emulator is running" + $result="Running" + return + } + 3 { + Write-Host "The emulator is stopped" + } + default { + Write-Host "Unrecognized exit code $process.ExitCode" + } + } + Start-Sleep -Seconds 5 + } + until ($complete.Invoke()) + Write-Error "The emulator failed to reach Running status within ${Timeout} seconds" displayName: Start Cosmos DB Emulator \ No newline at end of file From 59650c3f7359dd4da90bc2b3032727d3f943c23d Mon Sep 17 00:00:00 2001 From: Kushagra Thapar Date: Wed, 3 Feb 2021 09:56:52 -0800 Subject: [PATCH 2/5] Added default emulator start arguments if none provided --- eng/common/pipelines/templates/steps/cosmos-emulator.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eng/common/pipelines/templates/steps/cosmos-emulator.yml b/eng/common/pipelines/templates/steps/cosmos-emulator.yml index 739261856d36..cb5e5b64442a 100644 --- a/eng/common/pipelines/templates/steps/cosmos-emulator.yml +++ b/eng/common/pipelines/templates/steps/cosmos-emulator.yml @@ -49,6 +49,9 @@ steps: $argumentList = "" if (-not [string]::IsNullOrEmpty("${{ parameters.StartParameters }}")) { $argumentList += , "${{ parameters.StartParameters }}" + } else { + # Use the default params if none provided + $argumentList = "/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong" } Write-Host "Starting emulator process: $Emulator $argumentList" $process=Start-Process $Emulator -ArgumentList $argumentList -ErrorAction Stop -PassThru From 140791b6c7f6ef2d622528567245412481d79c2c Mon Sep 17 00:00:00 2001 From: Kushagra Thapar Date: Wed, 3 Feb 2021 10:05:09 -0800 Subject: [PATCH 3/5] Updated default start params --- eng/common/pipelines/templates/steps/cosmos-emulator.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/eng/common/pipelines/templates/steps/cosmos-emulator.yml b/eng/common/pipelines/templates/steps/cosmos-emulator.yml index cb5e5b64442a..0a4ad8d29a53 100644 --- a/eng/common/pipelines/templates/steps/cosmos-emulator.yml +++ b/eng/common/pipelines/templates/steps/cosmos-emulator.yml @@ -1,6 +1,6 @@ parameters: EmulatorMsiUrl: "https://aka.ms/cosmosdb-emulator" - StartParameters: '' + StartParameters: '/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong' steps: - powershell: | @@ -49,9 +49,6 @@ steps: $argumentList = "" if (-not [string]::IsNullOrEmpty("${{ parameters.StartParameters }}")) { $argumentList += , "${{ parameters.StartParameters }}" - } else { - # Use the default params if none provided - $argumentList = "/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong" } Write-Host "Starting emulator process: $Emulator $argumentList" $process=Start-Process $Emulator -ArgumentList $argumentList -ErrorAction Stop -PassThru From 54ea4a0b39d3f1031635c36c66d968a71d26115f Mon Sep 17 00:00:00 2001 From: Kushagra Thapar Date: Wed, 3 Feb 2021 10:40:39 -0800 Subject: [PATCH 4/5] Updated default start params in PS script --- eng/common/pipelines/templates/steps/cosmos-emulator.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/common/pipelines/templates/steps/cosmos-emulator.yml b/eng/common/pipelines/templates/steps/cosmos-emulator.yml index 0a4ad8d29a53..cb5e5b64442a 100644 --- a/eng/common/pipelines/templates/steps/cosmos-emulator.yml +++ b/eng/common/pipelines/templates/steps/cosmos-emulator.yml @@ -1,6 +1,6 @@ parameters: EmulatorMsiUrl: "https://aka.ms/cosmosdb-emulator" - StartParameters: '/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong' + StartParameters: '' steps: - powershell: | @@ -49,6 +49,9 @@ steps: $argumentList = "" if (-not [string]::IsNullOrEmpty("${{ parameters.StartParameters }}")) { $argumentList += , "${{ parameters.StartParameters }}" + } else { + # Use the default params if none provided + $argumentList = "/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong" } Write-Host "Starting emulator process: $Emulator $argumentList" $process=Start-Process $Emulator -ArgumentList $argumentList -ErrorAction Stop -PassThru From 86cdab62e1bd726ad5f87bca0e8aad1d580204de Mon Sep 17 00:00:00 2001 From: Kushagra Thapar Date: Wed, 3 Feb 2021 11:56:56 -0800 Subject: [PATCH 5/5] Updated default start params in PS script --- eng/common/pipelines/templates/steps/cosmos-emulator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/common/pipelines/templates/steps/cosmos-emulator.yml b/eng/common/pipelines/templates/steps/cosmos-emulator.yml index cb5e5b64442a..3032eab02d15 100644 --- a/eng/common/pipelines/templates/steps/cosmos-emulator.yml +++ b/eng/common/pipelines/templates/steps/cosmos-emulator.yml @@ -51,7 +51,7 @@ steps: $argumentList += , "${{ parameters.StartParameters }}" } else { # Use the default params if none provided - $argumentList = "/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication /partitioncount=50 /consistency=Strong" + $argumentList = "/noexplorer /noui /enablepreview /disableratelimiting /enableaadauthentication" } Write-Host "Starting emulator process: $Emulator $argumentList" $process=Start-Process $Emulator -ArgumentList $argumentList -ErrorAction Stop -PassThru