Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a set of tests to run manually on Windows #1483

Open
wants to merge 3 commits into
base: release-1.15
Choose a base branch
from
Open
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
19 changes: 19 additions & 0 deletions tests/manual/windows_k8s_manual_test.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
REM This script has the sequence of the steps to run manually on a Windows machine
REM Due to limitations of virtual machines and nested virtualization,
REM the script might be best to run on a physical machine or relatively powerful virtual machine in cloud,
REM minikube is pretty heavy on resources.
REM Another option is to use dedicated k8s cluster.

REM Navigate to any empty directory and run the following commands.
REM Preferably, to run the first cleanup commands to have a clean dapr and minikube environment.
REM At the end of the script, you might want to clean the directory manually and remove cloned "quickstarts" repo.
dapr uninstall --all -k
minikube delete
minikube stop
minikube start
dapr init -k --runtime-version 1.15.0-rc.10 --dev
git clone https://github.com/dapr/quickstarts.git
cd quickstarts/tutorials/hello-kubernetes
git checkout origin/release-1.15
git branch --show-current
dapr run -f -k .
180 changes: 180 additions & 0 deletions tests/manual/windows_manual_tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
function Uninstall-Dapr {
$command = "dapr uninstall --all"

$output = Invoke-Expression $command

if ($output -match "Dapr has been removed successfully") {
Write-Output "Uninstalled successfully"
}
else {
Write-Output "Failed to uninstall dapr"
$output
exit 1
}
}

function Initialize-Dapr($version, [string[]]$arguments) {
$commandArguments = "init"
if ($null -ne $version) {
$commandArguments += " --runtime-version $version"
}
if ($null -ne $arguments) {
foreach ($arg in $arguments) {
$commandArguments += " $arg"
}
}
Invoke-CommandCustom "dapr" $commandArguments
}

function Invoke-CommandCustom($command, [string[]]$arguments) {
if ($null -ne $arguments) {
foreach ($arg in $arguments) {
$commandArguments += " $arg"
}
}

$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = $command
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = $commandArguments
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()
$stdout = $p.StandardOutput.ReadToEnd()
$stderr = $p.StandardError.ReadToEnd()
return $stdout + " " + $stderr
}

function VerifyContainers() {
$output = Invoke-CommandCustom "docker" @("ps", "--format", "{{.Names}}")
$expectedContainers = @("dapr_scheduler", "dapr_placement", "dapr_redis", "dapr_zipkin")

$containers = $output -split "`n"

$missingContainers = @()

foreach ($container in $expectedContainers) {
if ($containers -notcontains $container) {
$missingContainers += $container
}
}
return $missingContainers
}

function VerifyBinaries() {
$expectedBinaries = @("daprd.exe", "dashboard.exe")
$missingBinaries = @()

$userHomeDirectory = [System.Environment]::GetFolderPath("UserProfile")
foreach ($binary in $expectedBinaries) {
if (-not (Test-Path "$userHomeDirectory\.dapr\bin\$binary")) {
$missingBinaries += $binary
}

}
return $missingBinaries
}

##### Test cases

function TestDaprInitSuccess() {
Write-Output "TestDaprInitSuccess"

$version = "1.15.0-rc.10"
$arguments = @("--dashboard-version 0.15.0", "--enable-ha")
Uninstall-Dapr
$output = Initialize-Dapr $version $arguments
if ($output.Contains("Success! Dapr is up and running")) {
return $true
}
else {
Write-Output "TestDaprInitSuccess failed"
$output
exit 1
}
}

function TestDaprInitWithInvalidRegistry() {
Write-Output "TestDaprInitWithInvalidRegistry"

$version = "1.15.0-rc.10"
$arguments = @("--image-registry someunknownnonexistinghost.io/owner")

Uninstall-Dapr
$output = Initialize-Dapr $version $arguments
$result1 = $output.Contains("No connection could be made because the target machine actively refused it")
$result2 = $output.Contains("A connection attempt failed because the connected party did not properly respond after a period of time")
$result3 = $output.Contains("init failed")
if ($result1 -or $result2 -or $result3) {
return $true
}
else {
Write-Output "TestDaprInitWithInvalidRegistry failed"
$output
exit 1
}
}

function TestDaprInitWithInvalidArguments() {
Write-Output "TestDaprInitWithInvalidArguments"

$version = "1.15.0-rc.10"
$arguments = @("--from-dir invalid", "--image-registry localhost:5000")

Uninstall-Dapr
$output = Initialize-Dapr $version $arguments
if ($output.Contains("both --image-registry and --from-dir flags cannot be given at the same time")) {
return $true
}
else {
Write-Output "TestDaprInitWithInvalidArguments failed"
$output
exit 1
}
}

function TestDaprInitAllInPlace() {
Write-Output "TestDaprInitAllInPlace"
$version = "1.15.0-rc.10"

Uninstall-Dapr
$output = Initialize-Dapr $version

if ($output.Contains("Success! Dapr is up and running")) {
Write-Output "Dapr initialization succeeded"
}
else {
Write-Output "TestDaprInitAllInPlace failed"
$output
exit 1
}

$missingContainers = VerifyContainers
if ($missingContainers.Count -eq 0) {
Write-Output "All expected containers are running"
}
else {
Write-Output "TestDaprInitAllInPlace"
Write-Output "The following containers are missing: $missingContainers"
exit 1
}

$missingBinaries = VerifyBinaries
if ($missingBinaries.Count -eq 0) {
Write-Output "All expected binaries are installed"
}
else {
Write-Output "TestDaprInitAllInPlace"
Write-Output "The following binaries are missing: $missingBinaries"
exit 1
}
}

TestDaprInitSuccess
TestDaprInitWithInvalidRegistry
TestDaprInitWithInvalidArguments
TestDaprInitAllInPlace

Loading