1 Commits

Author SHA1 Message Date
51878972c6 Viewer_ to Viewer 2025-06-05 09:00:18 -07:00
65 changed files with 876 additions and 2087 deletions

View File

@ -105,7 +105,7 @@ dotnet_diagnostic.CS8936.severity = error # Feature 'collection expressions' is
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2"); dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant. dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary
dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified
dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031) dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031)
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
@ -115,7 +115,6 @@ dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]cs
dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
dotnet_diagnostic.MSTEST0015.severity = none # MSTEST0015: Test method {method} should not be ignored
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method

2
.gitignore vendored
View File

@ -345,4 +345,4 @@ ASALocalRun/
.kanbn .kanbn
Tests/.kanbn Tests/.kanbn
secrets.json /Wafer-Counter/.vscode/.UserSecrets/secrets.json

6
.vscode/launch.json vendored
View File

@ -8,7 +8,7 @@
"name": ".NET Core Launch (web) - Server", "name": ".NET Core Launch (web) - Server",
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "Build Server", "preLaunchTask": "buildServer",
// If you have changed target frameworks, make sure to update the program path. // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/Server/bin/Debug/net8.0/win-x64/OI.Metrology.Server.dll", "program": "${workspaceFolder}/Server/bin/Debug/net8.0/win-x64/OI.Metrology.Server.dll",
"args": [], "args": [],
@ -31,7 +31,7 @@
"name": ".NET Core Attach - Server", "name": ".NET Core Attach - Server",
"type": "coreclr", "type": "coreclr",
"request": "attach", "request": "attach",
"preLaunchTask": "Watch Server", "preLaunchTask": "watchServer",
"processName": "OI.Metrology.Server.exe" "processName": "OI.Metrology.Server.exe"
}, },
{ {
@ -41,7 +41,7 @@
"name": ".NET Core Launch (web) - ClientHub", "name": ".NET Core Launch (web) - ClientHub",
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "Build Client Hub", "preLaunchTask": "buildClientHub",
// If you have changed target frameworks, make sure to update the program path. // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/ClientHub/bin/Debug/net7.0/win-x64/OI.Metrology.ClientHub.dll", "program": "${workspaceFolder}/ClientHub/bin/Debug/net7.0/win-x64/OI.Metrology.ClientHub.dll",
"args": [], "args": [],

66
.vscode/tasks.json vendored
View File

@ -28,60 +28,72 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Build Server", "label": "buildServer",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"build", "build",
"${workspaceFolder}/Server/OI.Metrology.Server.csproj" "${workspaceFolder}/Server/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Build Tests", "label": "buildTests",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"build", "build",
"${workspaceFolder}/Tests/OI.Metrology.Tests.csproj" "${workspaceFolder}/Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Build Shared", "label": "buildShared",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"build", "build",
"${workspaceFolder}/Shared/OI.Metrology.Shared.csproj" "${workspaceFolder}/Shared/OI.Metrology.Shared.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Publish Server", "label": "publishServer",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/Server/OI.Metrology.Server.csproj" "${workspaceFolder}/Server/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Test Debug", "label": "testDebug",
"command": "dotnet",
"type": "process",
"args": [
"test"
],
"problemMatcher": "$msCompile"
},
{
"label": "Test Release",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"test", "test",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c", "-c",
"Release" "Release"
], ],
@ -103,7 +115,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Old Watch", "label": "old-watch",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -115,7 +127,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Watch Server", "label": "watchServer",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -149,27 +161,31 @@
} }
}, },
{ {
"label": "Build Client Hub", "label": "buildClientHub",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"build", "build",
"${workspaceFolder}/ClientHub/OI.Metrology.ClientHub.csproj" "${workspaceFolder}/ClientHub/OI.Metrology.ClientHub.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Publish Client Hub", "label": "publishClientHub",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/ClientHub/OI.Metrology.ClientHub.csproj" "${workspaceFolder}/ClientHub/OI.Metrology.ClientHub.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Watch Client Hub", "label": "watchClientHub",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [

View File

@ -7,7 +7,9 @@
"type": "process", "type": "process",
"args": [ "args": [
"build", "build",
"${workspaceFolder}/Archive.csproj" "${workspaceFolder}/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
@ -17,7 +19,9 @@
"type": "process", "type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/Archive.csproj" "${workspaceFolder}/Archive.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },

View File

@ -8,7 +8,7 @@
"name": ".NET Core Launch (web)", "name": ".NET Core Launch (web)",
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "Build", "preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path. // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net8.0/OI.Metrology.Server.dll", "program": "${workspaceFolder}/bin/Debug/net8.0/OI.Metrology.Server.dll",
"args": [], "args": [],

View File

@ -1,5 +0,0 @@
# mklink
```bash Thu Aug 29 2024 09:47:22 GMT-0700 (Mountain Standard Time)
mklink /J "L:\DevOps\OpenInsight-Metrology-Viewer\OI-Metrology\Server\.vscode\.UserSecrets" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\b0a3891c-b775-422c-80ee-63a2f385045d"
```

View File

@ -1,164 +1,60 @@
{ {
"inputs": [ "version": "2.0.0",
{
"default": "Development",
"description": "Which ASP Net Core Environment?",
"id": "ASPNETCORE_ENVIRONMENT",
"options": [
"Development",
"Production"
],
"type": "pickString"
},
{
"default": "{AssemblyTitle}",
"description": "What Assembly Title?",
"id": "AssemblyTitle",
"type": "promptString"
},
{
"default": "{Build.BuildId}",
"description": "Which Build BuildId?",
"id": "Build.BuildId",
"type": "promptString"
},
{
"default": "{Build.Reason}",
"description": "Which Build Reason?",
"id": "Build.Reason",
"type": "promptString"
},
{
"default": "{Build.Repository.Id}",
"description": "Which Build Repository Id?",
"id": "Build.Repository.Id",
"type": "promptString"
},
{
"default": "{Build.Repository.Name}",
"description": "Which Build Repository Name?",
"id": "Build.Repository.Name",
"type": "promptString"
},
{
"default": "{Build.SourceVersion}",
"description": "Which Build Source Version?",
"id": "Build.SourceVersion",
"type": "promptString"
},
{
"default": "Debug",
"description": "Which Configuration?",
"id": "Configuration",
"options": [
"Debug",
"Release"
],
"type": "pickString"
},
{
"default": "net8.0",
"description": "Which Core Version?",
"id": "CoreVersion",
"options": [
"net8.0"
],
"type": "pickString"
},
{
"default": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"description": "Which MS Build?",
"id": "MSBuild",
"type": "promptString"
},
{
"default": "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/",
"description": "Which Nuget Source?",
"id": "NugetSource",
"type": "promptString"
},
{
"default": "win-x64",
"description": "Which Runtime?",
"id": "Runtime",
"options": [
"win-x64",
"win-x32",
"linux-x64",
"linux-x32"
],
"type": "pickString"
},
{
"default": "L:/",
"description": "Which System DefaultWorkingDirectory?",
"id": "System.DefaultWorkingDirectory",
"options": [
"L:/",
"D:/",
"C:/"
],
"type": "pickString"
},
{
"default": "v4.8",
"description": "Which Core Target Framework Version?",
"id": "TargetFrameworkVersion",
"options": [
"v4.8"
],
"type": "pickString"
},
{
"default": "{UserSecretsId}",
"description": "Which Core User Secrets Id?",
"id": "UserSecretsId",
"type": "promptString"
}
],
"tasks": [ "tasks": [
{ {
"args": [ "label": "build",
"build"
],
"command": "dotnet", "command": "dotnet",
"label": "Build", "type": "process",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [ "args": [
"build", "build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj" "${workspaceFolder}/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Build Tests",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "buildTests",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"test", "build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj" "${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Test Debug",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "testDebug",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"test", "test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj", "${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c", "-c",
"Release" "Release"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Test Release",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Format",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"format", "format",
"--report", "--report",
@ -168,24 +64,27 @@
"--severity", "--severity",
"warn" "warn"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Format",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Format-Whitespace",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"format", "format",
"whitespace" "whitespace"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Format Whitespace",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"--configuration", "--configuration",
"Release", "Release",
"--runtime", "--runtime",
@ -194,14 +93,17 @@
"-o", "-o",
"D:/web-sites/OI-Metrology/hh-3498d1da-_______-OI-Metrology-Release/Server" "D:/web-sites/OI-Metrology/hh-3498d1da-_______-OI-Metrology-Release/Server"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Publish",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Publish AOT",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"--configuration", "--configuration",
"Release", "Release",
"--runtime", "--runtime",
@ -209,280 +111,64 @@
"-p:PublishAot=true", "-p:PublishAot=true",
"/property:GenerateFullPaths=true" "/property:GenerateFullPaths=true"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Publish AOT",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "old-watch",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"watch", "watch",
"run" "run",
"--project",
"${workspaceFolder}/OI.Metrology.Server.csproj"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Old Watch",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"watch", "watch",
"--launch-profile", "--launch-profile",
"http", "http",
"run", "run",
"--project",
"${workspaceFolder}/OI.Metrology.Server.csproj",
"--verbose" "--verbose"
], ],
"command": "dotnet", "isBackground": true,
"dependsOn": [ "dependsOn": [
"build" "build"
], ],
"isBackground": true,
"label": "Watch",
"problemMatcher": { "problemMatcher": {
"fileLocation": "relative",
"pattern": {
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
"file": 1,
"location": 2,
"severity": 3,
"code": 4,
"message": 5
},
"background": { "background": {
"activeOnStart": true, "activeOnStart": true,
"beginsPattern": "^.*Shutdown requested.*", "beginsPattern": "^.*Shutdown requested.*",
"endsPattern": "^.*Application started.*" "endsPattern": "^.*Application started.*"
}, }
"fileLocation": "relative",
"pattern": {
"code": 4,
"file": 1,
"location": 2,
"message": 5,
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
"severity": 3
} }
}, },
"type": "process"
},
{ {
"label": "File-Folder-Helper AOT s X Server",
"type": "shell",
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe",
"args": [ "args": [
"s", "s",
"X", "X",
"L:/DevOps/Mesa_FI/OI-Metrology Day-Helper-2024-01-08 L:/DevOps/Mesa_FI/OI-Metrology/Server" "L:/DevOps/Mesa_FI/OI-Metrology Day-Helper-2024-01-08 L:/DevOps/Mesa_FI/OI-Metrology/Server"
], ],
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe", "problemMatcher": []
"label": "File-Folder-Helper AOT s X Server",
"problemMatcher": [],
"type": "shell"
},
{
"command": "echo Assembly Title: ${input:AssemblyTitle} & echo Build Id: ${input:Build.BuildId} & echo Build Reason: ${input:Build.Reason} & echo Repo Id: ${input:Build.Repository.Id} & echo Repo Name: ${input:Build.Repository.Name} & echo Source Version: ${input:Build.SourceVersion} & echo Configuration: ${input:Configuration} & echo Core Version: ${input:CoreVersion} & echo Nuget Source: ${input:NugetSource} & echo Runtime: ${input:Runtime}",
"label": "Echo Check",
"problemMatcher": [],
"type": "shell"
},
{
"command": "dotnet user-secrets init & dotnet user-secrets set BuildNumber ${input:Build.BuildId} & dotnet user-secrets set GitCommit ${input:Build.SourceVersion} & dotnet user-secrets list",
"label": "App - Safe storage of app secrets",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"build",
"--configuration",
"${input:Configuration}",
"--source",
"${input:NugetSource}"
],
"command": "dotnet",
"label": "App - Build",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}",
"--source",
"${input:NugetSource}"
],
"command": "dotnet",
"label": "Tests - Build",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "Tests - Test",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"publish",
"--configuration",
"${input:Configuration}",
"--runtime",
"${input:Runtime}",
"--self-contained"
],
"command": "dotnet",
"label": "App - Publish",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"publish",
"--configuration",
"${input:Configuration}",
"--runtime",
"${input:Runtime}",
"-p:PublishAot=true"
],
"command": "dotnet",
"label": "App - AOT Publish",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"command": "(robocopy /MIR \"bin/${input:Configuration}/${input:CoreVersion}/${input:Runtime}/publish\" \"D:/${input:CoreVersion}/${input:Runtime}/${input:Build.Repository.Name}/${input:Configuration}/${input:Build.BuildId}/${input:AssemblyTitle}\") ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Copy Files to: D:/",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"tool",
"restore"
],
"command": "dotnet",
"label": "Tool Restore",
"problemMatcher": [],
"type": "process"
},
{
"args": [
"ReportGenerator",
"-reports:${input:System.DefaultWorkingDirectory}/TestResults/**/coverage.cobertura.xml",
"-targetDir:${input:Build.ArtifactStagingDirectory}/Coverage",
"-reportTypes:Html_Dark"
],
"command": "dotnet",
"label": "Report Generator",
"problemMatcher": [],
"type": "process"
},
{
"args": [
"clean",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "Tests - Clean",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"clean",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "App - Clean",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe stop apppool /apppool.name:${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Stop Pool",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe stop site /site.name:${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Stop Website",
"problemMatcher": [],
"type": "shell"
},
{
"command": "rmdir D:/web-sites/${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Remove MKLink",
"problemMatcher": [],
"type": "shell"
},
{
"command": "mklink /J \"D:\\web-sites\\${input:AssemblyTitle}.${input:Configuration}\" \"D:\\$(CoreVersion)\\$(Runtime)\\$(Build.Repository.Name)\\$(Configuration)\\$(Build.BuildId)\\$(AssemblyTitle)\"",
"label": "Create MKLink",
"problemMatcher": [],
"type": "shell"
},
{
"command": "mkdir D:/web-sites/${input:AssemblyTitle}.${input:Configuration}/${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Make Directory",
"problemMatcher": [],
"type": "shell"
},
{
"command": "(robocopy /IS /IT /IM \"%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)\" \"D:/$(CoreVersion)/$(Runtime)/$(Build.Repository.Name)/$(Configuration)/$(Build.BuildId)/$(AssemblyTitle)\" secrets.json) ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Replace User Secrets Id File",
"problemMatcher": [],
"type": "shell"
},
{
"command": "(robocopy /IS /IT /IM \"%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)\" \"D:/$(CoreVersion)/$(Runtime)/$(Build.Repository.Name)/$(Configuration)/$(Build.BuildId)/$(AssemblyTitle)\" web.config) ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Replace Web Configuration File",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe start apppool /apppool.name:${input:AssemblyTitle}.${input:Configuration}",
"label": "Start Pool",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe start site /site.name:${input:AssemblyTitle}.${input:Configuration}",
"label": "Start Website",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"App - AOT Publish",
"Tool Restore",
"Report Generator"
],
"command": "echo",
"dependsOn": [
"Echo Check",
"App - Safe storage of app secrets",
"App - Build",
"Tests - Build",
"Tests - Test",
"App - Publish",
"Copy Files to: D:/",
"Tests - Clean",
"App - Clean",
"Stop Pool",
"Stop Website",
"Remove MKLink",
"Create MKLink",
"Make Directory",
"Replace User Secrets Id File",
"Replace Web Configuration File",
"Start Pool",
"Start Website"
],
"dependsOrder": "sequence",
"label": "Pipeline",
"problemMatcher": [],
"type": "shell"
} }
], ]
"version": "2.0.0"
} }

View File

@ -1,5 +1,4 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using OI.Metrology.Server.Models;
using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Server.ApiControllers; namespace OI.Metrology.Server.ApiControllers;
@ -9,9 +8,9 @@ namespace OI.Metrology.Server.ApiControllers;
public class AppSettingsController : ControllerBase, IAppSettingsController<ActionResult> public class AppSettingsController : ControllerBase, IAppSettingsController<ActionResult>
{ {
private readonly IAppSettingsRepository<AppSettings> _AppSettingsRepository; private readonly IAppSettingsRepository<Models.Binder.AppSettings> _AppSettingsRepository;
public AppSettingsController(IAppSettingsRepository<AppSettings> AppSettingsRepository) => _AppSettingsRepository = AppSettingsRepository; public AppSettingsController(IAppSettingsRepository<Models.Binder.AppSettings> AppSettingsRepository) => _AppSettingsRepository = AppSettingsRepository;
[HttpGet(nameof(IAppSettingsController<ActionResult>.Action.App))] [HttpGet(nameof(IAppSettingsController<ActionResult>.Action.App))]
public ActionResult GetAppSettings() => public ActionResult GetAppSettings() =>

View File

@ -1,5 +1,4 @@
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization;
namespace OI.Metrology.Server.Models; namespace OI.Metrology.Server.Models;
@ -37,75 +36,8 @@ public record AppSettings(string ApiFileShare,
public override string ToString() public override string ToString()
{ {
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings); string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
private static void Verify(AppSettings appSettings)
{
if (string.IsNullOrEmpty(appSettings.Company))
throw new Exception("Company name must have a value!");
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
throw new Exception("Working directory name must have a value!");
}
public static AppSettings Get(IConfigurationRoot configurationRoot)
{
AppSettings result;
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
#pragma warning restore IL3050, IL2026
if (appSettings is null
|| appSettings?.Company is null)
{
List<string> paths = [];
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
{
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
continue;
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
continue;
paths.Add(physicalFileProvider.Root);
}
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
}
result = new(appSettings.ApiFileShare,
appSettings.ApiLoggingContentTypes,
appSettings.ApiLoggingPathPrefixes,
appSettings.ApiLogPath,
appSettings.ApiUrl,
appSettings.BuildNumber,
appSettings.Company,
appSettings.ConnectionString,
appSettings.EcCharacterizationSi,
appSettings.EcMesaFileShareCharacterizationSi,
appSettings.EcMesaFileShareMetrologySi,
appSettings.EcMetrologySi,
appSettings.GitCommitSeven,
appSettings.InboundApiAllowedIPList,
appSettings.IqsColumns,
appSettings.IqsFileSegments,
appSettings.IqsKey,
appSettings.IqsRed,
appSettings.IqsYellow,
appSettings.IsDevelopment,
appSettings.IsStaging,
appSettings.MockRoot,
appSettings.MonAResource,
appSettings.MonASite,
appSettings.OpenInsightApplicationProgrammingInterface,
appSettings.TableToPath,
appSettings.URLs,
appSettings.WaferCounterDestinationDirectory,
appSettings.WaferCounterTwoFileSecondsWait,
appSettings.WorkingDirectoryName);
Verify(result);
return result; return result;
} }
} }
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
public partial class AppSettingsSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -0,0 +1,2 @@
[*.cs]
csharp_preserve_single_line_statements = true

View File

@ -0,0 +1,148 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace OI.Metrology.Server.Models.Binder;
public class AppSettings
{
public string? ApiFileShare { get; set; }
public string? ApiLoggingContentTypes { get; set; }
public string? ApiLoggingPathPrefixes { get; set; }
public string? ApiLogPath { get; set; }
public string? ApiUrl { get; set; }
public string? BuildNumber { get; set; }
public string? Company { get; set; }
public string? ConnectionString { get; set; }
public string? EcCharacterizationSi { get; set; }
public string? EcMesaFileShareCharacterizationSi { get; set; }
public string? EcMesaFileShareMetrologySi { get; set; }
public string? EcMetrologySi { get; set; }
public string? GitCommitSeven { get; set; }
public string? InboundApiAllowedIPList { get; set; }
public string? IqsColumns { get; set; }
public string[]? IqsFileSegments { get; set; }
public string? IqsKey { get; set; }
public string? IqsRed { get; set; }
public string? IqsYellow { get; set; }
public bool? IsDevelopment { get; set; }
public bool? IsStaging { get; set; }
public string? MockRoot { get; set; }
public string? MonAResource { get; set; }
public string? MonASite { get; set; }
public string? OpenInsightApplicationProgrammingInterface { get; set; }
public Dictionary<string, string>? TableToPath { get; set; }
public string? URLs { get; set; }
public string? WaferCounterDestinationDirectory { get; set; }
public int? WaferCounterTwoFileSecondsWait { get; set; }
public string? WorkingDirectoryName { get; set; }
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings)
{
if (appSettings?.ApiFileShare is null)
{
List<string> paths = new();
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
{
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
continue;
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
continue;
paths.Add(physicalFileProvider.Root);
}
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
}
}
private static Models.AppSettings Get(AppSettings? appSettings)
{
Models.AppSettings result;
if (appSettings is null) throw new NullReferenceException(nameof(appSettings));
if (appSettings.ApiFileShare is null) throw new NullReferenceException(nameof(ApiFileShare));
if (appSettings.ApiLoggingContentTypes is null) throw new NullReferenceException(nameof(ApiLoggingContentTypes));
if (appSettings.ApiLoggingPathPrefixes is null) throw new NullReferenceException(nameof(ApiLoggingPathPrefixes));
if (appSettings.ApiLogPath is null) throw new NullReferenceException(nameof(ApiLogPath));
if (appSettings.ApiUrl is null) throw new NullReferenceException(nameof(ApiUrl));
if (appSettings.BuildNumber is null) throw new NullReferenceException(nameof(BuildNumber));
if (appSettings.Company is null) throw new NullReferenceException(nameof(Company));
if (appSettings.ConnectionString is null) throw new NullReferenceException(nameof(ConnectionString));
if (appSettings.EcCharacterizationSi is null) throw new NullReferenceException(nameof(EcCharacterizationSi));
if (appSettings.EcMesaFileShareCharacterizationSi is null) throw new NullReferenceException(nameof(EcMesaFileShareCharacterizationSi));
if (appSettings.EcMesaFileShareMetrologySi is null) throw new NullReferenceException(nameof(EcMesaFileShareMetrologySi));
if (appSettings.EcMetrologySi is null) throw new NullReferenceException(nameof(EcMetrologySi));
if (appSettings.GitCommitSeven is null) throw new NullReferenceException(nameof(GitCommitSeven));
if (appSettings.InboundApiAllowedIPList is null) throw new NullReferenceException(nameof(InboundApiAllowedIPList));
if (appSettings.IqsColumns is null) throw new NullReferenceException(nameof(IqsColumns));
if (appSettings.IqsFileSegments is null) throw new NullReferenceException(nameof(IqsFileSegments));
if (appSettings.IqsKey is null) throw new NullReferenceException(nameof(IqsKey));
if (appSettings.IqsRed is null) throw new NullReferenceException(nameof(IqsRed));
if (appSettings.IqsYellow is null) throw new NullReferenceException(nameof(IqsYellow));
if (appSettings.IsDevelopment is null) throw new NullReferenceException(nameof(IsDevelopment));
if (appSettings.IsStaging is null) throw new NullReferenceException(nameof(IsStaging));
if (appSettings.MockRoot is null) throw new NullReferenceException(nameof(MockRoot));
if (appSettings.MonAResource is null) throw new NullReferenceException(nameof(MonAResource));
if (appSettings.MonASite is null) throw new NullReferenceException(nameof(MonASite));
if (appSettings.OpenInsightApplicationProgrammingInterface is null) throw new NullReferenceException(nameof(OpenInsightApplicationProgrammingInterface));
if (appSettings.URLs is null) throw new NullReferenceException(nameof(URLs));
if (appSettings.TableToPath is null) throw new NullReferenceException(nameof(TableToPath));
if (appSettings.WaferCounterDestinationDirectory is null) throw new NullReferenceException(nameof(WaferCounterDestinationDirectory));
if (appSettings.WaferCounterTwoFileSecondsWait is null) throw new NullReferenceException(nameof(WaferCounterTwoFileSecondsWait));
if (appSettings.WorkingDirectoryName is null) throw new NullReferenceException(nameof(WorkingDirectoryName));
result = new(
appSettings.ApiFileShare,
appSettings.ApiLoggingContentTypes,
appSettings.ApiLoggingPathPrefixes,
appSettings.ApiLogPath,
appSettings.ApiUrl,
appSettings.BuildNumber,
appSettings.Company,
appSettings.ConnectionString,
appSettings.EcCharacterizationSi,
appSettings.EcMesaFileShareCharacterizationSi,
appSettings.EcMesaFileShareMetrologySi,
appSettings.EcMetrologySi,
appSettings.GitCommitSeven,
appSettings.InboundApiAllowedIPList,
appSettings.IqsColumns,
appSettings.IqsFileSegments,
appSettings.IqsKey,
appSettings.IqsRed,
appSettings.IqsYellow,
appSettings.IsDevelopment.Value,
appSettings.IsStaging.Value,
appSettings.MockRoot,
appSettings.MonAResource,
appSettings.MonASite,
appSettings.OpenInsightApplicationProgrammingInterface,
appSettings.TableToPath,
appSettings.URLs,
appSettings.WaferCounterDestinationDirectory,
appSettings.WaferCounterTwoFileSecondsWait.Value,
appSettings.WorkingDirectoryName);
return result;
}
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
{
Models.AppSettings result;
#pragma warning disable IL3050, IL2026
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
#pragma warning restore IL3050, IL2026
PreVerify(configurationRoot, appSettings);
result = Get(appSettings);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
internal partial class BinderAppSettingsSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -43,7 +43,7 @@ public class Program
(string assemblyName, WebApplicationOptions _) = Get(args); (string assemblyName, WebApplicationOptions _) = Get(args);
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args); WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>(); _ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
AppSettings appSettings = AppSettings.Get(webApplicationBuilder.Configuration); AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
if (string.IsNullOrEmpty(appSettings.Company)) if (string.IsNullOrEmpty(appSettings.Company))
throw new Exception("Company name must have a value!"); throw new Exception("Company name must have a value!");
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName)) if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
@ -78,7 +78,7 @@ public class Program
_ = webApplicationBuilder.Services.AddSingleton<IServiceShopOrderRepository, ServiceShopOrderRepository>(); _ = webApplicationBuilder.Services.AddSingleton<IServiceShopOrderRepository, ServiceShopOrderRepository>();
_ = webApplicationBuilder.Services.AddSingleton<ISpreadingResistanceProfileService, SpreadingResistanceProfileService>(); _ = webApplicationBuilder.Services.AddSingleton<ISpreadingResistanceProfileService, SpreadingResistanceProfileService>();
_ = webApplicationBuilder.Services.AddSingleton<IDbConnectionFactory, SQLDbConnectionFactory>(_ => sqlDbConnectionFactory); _ = webApplicationBuilder.Services.AddSingleton<IDbConnectionFactory, SQLDbConnectionFactory>(_ => sqlDbConnectionFactory);
_ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository<AppSettings>>(_ => appSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository<Models.Binder.AppSettings>>(_ => appSettingsRepository);
_ = webApplicationBuilder.Services.AddSwaggerGen(); _ = webApplicationBuilder.Services.AddSwaggerGen();
_ = webApplicationBuilder.Services.AddSession(sessionOptions => _ = webApplicationBuilder.Services.AddSession(sessionOptions =>

View File

@ -3,20 +3,27 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Server.Repository; namespace OI.Metrology.Server.Repository;
public class AppSettingsRepository : IAppSettingsRepository<AppSettings> public class AppSettingsRepository : IAppSettingsRepository<Models.Binder.AppSettings>
{ {
private readonly AppSettings _AppSettings; private readonly AppSettings _AppSettings;
public AppSettingsRepository(AppSettings appSettings) => _AppSettings = appSettings; public AppSettingsRepository(AppSettings appSettings) => _AppSettings = appSettings;
internal AppSettings GetAppSettings() internal Models.Binder.AppSettings GetAppSettings()
{ {
AppSettings result = _AppSettings; Models.Binder.AppSettings result = new()
{
BuildNumber = _AppSettings.BuildNumber,
Company = _AppSettings.Company,
GitCommitSeven = _AppSettings.GitCommitSeven,
IsDevelopment = _AppSettings.IsDevelopment,
IsStaging = _AppSettings.IsStaging,
};
return result; return result;
} }
AppSettings IAppSettingsRepository<AppSettings>.GetAppSettings() => GetAppSettings(); Models.Binder.AppSettings IAppSettingsRepository<Models.Binder.AppSettings>.GetAppSettings() => GetAppSettings();
internal string GetBuildNumberAndGitCommitSeven() internal string GetBuildNumberAndGitCommitSeven()
{ {
@ -38,8 +45,8 @@ public class AppSettingsRepository : IAppSettingsRepository<AppSettings>
#endif #endif
} }
string IAppSettingsRepository<AppSettings>.GetBuildNumberAndGitCommitSeven() => GetBuildNumberAndGitCommitSeven(); string IAppSettingsRepository<Models.Binder.AppSettings>.GetBuildNumberAndGitCommitSeven() => GetBuildNumberAndGitCommitSeven();
void IAppSettingsRepository<AppSettings>.VerifyConnectionStrings() => VerifyConnectionStrings(); void IAppSettingsRepository<Models.Binder.AppSettings>.VerifyConnectionStrings() => VerifyConnectionStrings();
} }

View File

@ -227,7 +227,7 @@ public class ToolTypesRepository : IToolTypesRepository
{ {
HttpClient httpClient = _HttpClientFactory.CreateClient(); HttpClient httpClient = _HttpClientFactory.CreateClient();
httpClient.BaseAddress = new(_AppSettings.ApiFileShare); httpClient.BaseAddress = new(_AppSettings.ApiFileShare);
_FileShareRepository.CopyFile(httpClient, processDataStandardFormat, Path.Combine(directly, $"Viewer_{Path.GetFileName(processDataStandardFormat)}")); _FileShareRepository.CopyFile(httpClient, processDataStandardFormat, Path.Combine(directly, $"Viewer{Path.GetFileName(processDataStandardFormat)}"));
result = null; result = null;
} }
catch (Exception ex) { result = ex.Message; } catch (Exception ex) { result = ex.Message; }

View File

@ -1,199 +0,0 @@
trigger:
branches:
include:
- master
paths:
include:
- Server
variables:
runtime: 'win-x64'
coreVersion: 'net8.0'
nugetSource: 'https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/'
stages:
- stage: Development
displayName: Development
pool:
name: 'OpenInsight Metrology Viewer'
demands: OpenInsight-Metrology-Viewer-Server-Development
variables:
ASPNETCORE_ENVIRONMENT: 'Development'
assemblyTitle: 'OI.Metrology.Server'
configuration: 'Debug'
userSecretsId: 'b0a3891c-b775-422c-80ee-63a2f385045d'
jobs:
- job: DebugDotnet
steps:
- script: |
echo Assembly Title: $(AssemblyTitle)
echo Build Id: $(Build.BuildId)
echo Build Reason: $(Build.Reason)
echo Repo Id: $(Build.Repository.Id)
echo Repo Name: $(Build.Repository.Name)
echo Source Version: $(Build.SourceVersion)
echo Configuration: $(Configuration)
echo Core Version: $(CoreVersion)
echo Nuget Source: $(NugetSource)
echo Runtime: $(Runtime)
echo UserSecretsId: $(UserSecretsId)
displayName: 'Echo Check'
- script: |
dotnet user-secrets init
dotnet user-secrets set BuildNumber $(Build.BuildId)
dotnet user-secrets set GitCommit $(Build.SourceVersion)
dotnet user-secrets list
workingDirectory: Server
displayName: 'App - Safe storage of app secrets'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Server
displayName: 'App - Build'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Tests
displayName: 'Tests - Build'
- script: dotnet test --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Test'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained
workingDirectory: Server
displayName: 'App - Publish'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true
workingDirectory: Server
displayName: 'App - AOT Publish'
enabled: false
- task: CopyFiles@2
displayName: 'Copy Files to: D:\'
inputs:
Contents: '*'
SourceFolder: 'Server\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish'
TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)'
OverWrite: true
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Clean'
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Server
displayName: 'App - Clean'
- script: C:/Windows/system32/inetsrv/appcmd.exe stop apppool /apppool.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Server
displayName: 'Stop Pool'
continueOnError: true
- script: C:/Windows/system32/inetsrv/appcmd.exe stop site /site.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Server
displayName: 'Stop Website'
continueOnError: true
- script: rmdir "D:\web-sites\$(AssemblyTitle).$(Configuration)"
workingDirectory: Server
displayName: 'Remove MKLink'
continueOnError: true
- script: mklink /J "D:\web-sites\$(AssemblyTitle).$(Configuration)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)"
workingDirectory: Server
displayName: 'Create MKLink'
- script: mkdir "D:\web-sites\$(AssemblyTitle).$(Configuration)\$(AssemblyTitle).$(Configuration)"
workingDirectory: Server
displayName: 'Make Directory'
continueOnError: true
- script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" secrets.json) ^& IF %ERRORLEVEL% LEQ 7 exit 0
workingDirectory: Server
displayName: 'Replace User Secrets Id File'
- script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" web.config) ^& IF %ERRORLEVEL% LEQ 7 exit 0
workingDirectory: Server
displayName: 'Replace Web Configuration File'
- script: C:/Windows/system32/inetsrv/appcmd.exe start apppool /apppool.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Server
displayName: 'Start Pool'
- script: C:/Windows/system32/inetsrv/appcmd.exe start site /site.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Server
displayName: 'Start Website'
- stage: Release
displayName: Release
pool:
name: 'OpenInsight Metrology Viewer'
demands: OpenInsight-Metrology-Viewer-Server
variables:
ASPNETCORE_ENVIRONMENT: 'Production'
assemblyTitle: 'OI.Metrology.Server'
configuration: 'Release'
jobs:
- job: ReleaseDotnet
steps:
- script: |
echo Assembly Title: $(AssemblyTitle)
echo Build Id: $(Build.BuildId)
echo Build Reason: $(Build.Reason)
echo Repo Id: $(Build.Repository.Id)
echo Repo Name: $(Build.Repository.Name)
echo Source Version: $(Build.SourceVersion)
echo Configuration: $(Configuration)
echo Core Version: $(CoreVersion)
echo Nuget Source: $(NugetSource)
echo Runtime: $(Runtime)
displayName: 'Echo Check'
- script: |
dotnet user-secrets init
dotnet user-secrets set BuildNumber $(Build.BuildId)
dotnet user-secrets set GitCommit $(Build.SourceVersion)
dotnet user-secrets list
workingDirectory: Server
displayName: 'App - Safe storage of app secrets'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Server
displayName: 'App - Build'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Tests
displayName: 'Tests - Build'
- script: dotnet test --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Test'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained
workingDirectory: Server
displayName: 'App - Publish'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true
workingDirectory: Server
displayName: 'App - AOT Publish'
enabled: false
- task: CopyFiles@2
displayName: 'Copy Files to: D:\'
inputs:
Contents: '*'
SourceFolder: 'Server\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish'
TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)'
OverWrite: true
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Clean'
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Server
displayName: 'App - Clean'
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
displayName: 'Force Fail'
enabled: false

View File

@ -0,0 +1,16 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IAzureDevOpsController<T>
{
enum Action : int
{
Index = 0,
Save = 1
}
static string GetRouteName() => nameof(IAzureDevOpsController<T>)[1..^10];
T Save();
}

View File

@ -0,0 +1,8 @@
namespace OI.Metrology.Shared.Models.Stateless;
public interface IAzureDevOpsRepository
{
void Save(PollValue pollValue);
}

View File

@ -29,7 +29,7 @@
<DefineConstants>Linux</DefineConstants> <DefineConstants>Linux</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Text.Json" Version="9.0.7" /> <PackageReference Include="System.Text.Json" Version="8.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
</ItemGroup> </ItemGroup>

View File

@ -1,129 +1,28 @@
{ {
"inputs": [ "version": "2.0.0",
{
"default": "Development",
"description": "Which ASP Net Core Environment?",
"id": "ASPNETCORE_ENVIRONMENT",
"options": [
"Development",
"Production"
],
"type": "pickString"
},
{
"default": "{AssemblyTitle}",
"description": "What Assembly Title?",
"id": "AssemblyTitle",
"type": "promptString"
},
{
"default": "{Build.BuildId}",
"description": "Which Build BuildId?",
"id": "Build.BuildId",
"type": "promptString"
},
{
"default": "{Build.Reason}",
"description": "Which Build Reason?",
"id": "Build.Reason",
"type": "promptString"
},
{
"default": "{Build.Repository.Id}",
"description": "Which Build Repository Id?",
"id": "Build.Repository.Id",
"type": "promptString"
},
{
"default": "{Build.Repository.Name}",
"description": "Which Build Repository Name?",
"id": "Build.Repository.Name",
"type": "promptString"
},
{
"default": "{Build.SourceVersion}",
"description": "Which Build Source Version?",
"id": "Build.SourceVersion",
"type": "promptString"
},
{
"default": "Static",
"description": "Which Configuration?",
"id": "Configuration",
"options": [
"Debug",
"Release",
"Static"
],
"type": "pickString"
},
{
"default": "net8.0",
"description": "Which Core Version?",
"id": "CoreVersion",
"options": [
"net8.0"
],
"type": "pickString"
},
{
"default": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"description": "Which MS Build?",
"id": "MSBuild",
"type": "promptString"
},
{
"default": "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/",
"description": "Which Nuget Source?",
"id": "NugetSource",
"type": "promptString"
},
{
"default": "win-x64",
"description": "Which Runtime?",
"id": "Runtime",
"options": [
"win-x64",
"win-x32",
"linux-x64",
"linux-x32"
],
"type": "pickString"
},
{
"default": "L:/",
"description": "Which System DefaultWorkingDirectory?",
"id": "System.DefaultWorkingDirectory",
"options": [
"L:/",
"D:/",
"C:/"
],
"type": "pickString"
},
{
"default": "v4.8",
"description": "Which Core Target Framework Version?",
"id": "TargetFrameworkVersion",
"options": [
"v4.8"
],
"type": "pickString"
},
{
"default": "{UserSecretsId}",
"description": "Which Core User Secrets Id?",
"id": "UserSecretsId",
"type": "promptString"
}
],
"tasks": [ "tasks": [
{ {
"command": "(robocopy /MIR \"../Static\" \"D:/${input:Configuration}/${input:Build.Repository.Name}/${input:Build.Repository.Id}/${input:AssemblyTitle}\") ^& IF %ERRORLEVEL% LEQ 7 exit 0", "type": "shell",
"label": "Copy Files to: D:/", "label": "MakeDirctory",
"problemMatcher": [], "command": "mkdir",
"type": "shell" "args": [
} "D:\\web-sites\\OI-Metrology\\pp-6737ddfb-_______-OI-Metrology-Release"
], ],
"version": "2.0.0" },
{
"type": "shell",
"label": "CopySite",
"command": "robocopy",
"args": [
"L:\\DevOps\\Mesa_FI\\OI-Metrology\\Static",
"D:\\web-sites\\OI-Metrology\\pp-6737ddfb-_______-OI-Metrology-Release\\Static",
"/E",
"/MT:6",
"/NFL",
"/NDL",
"/NJH",
"/NJS"
],
}
]
} }

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -49,7 +49,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html" class="alert-info">Export</a></li> <li><a href="/export.html" class="alert-info">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -50,7 +50,7 @@
<li><a href="/export.html">Export</a></li> <li><a href="/export.html">Export</a></li>
<li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li> <li><a href="https://oi-metrology-viewer-archive.mes.infineon.com/" target="_blank">Archive</a></li>
<li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li> <li><a href="https://goto.infineon.com/oiwizard" target="_blank">OI Web Services</a></li>
<li><a href="https://goto.infineon.com/mesareportingservices" target="_blank">Reporting Services</a></li> <li><a href="/mes.html" target="_blank">FI Backlog</a></li>
</ul> </ul>
<p class="navbar-text navbar-right"> <p class="navbar-text navbar-right">
&nbsp; &nbsp;

View File

@ -1,47 +0,0 @@
trigger:
branches:
include:
- master
paths:
include:
- Static
stages:
- stage: Static
displayName: Static
pool:
name: 'OpenInsight Metrology Viewer'
demands: OpenInsight-Metrology-Viewer-Wafer-Counter-Static
variables:
assemblyTitle: 'OI.Metrology.Wafer.Static'
configuration: 'Static'
jobs:
- job: Static
steps:
- script: |
echo Assembly Title: $(AssemblyTitle)
echo Build Id: $(Build.BuildId)
echo Build Reason: $(Build.Reason)
echo Repo Id: $(Build.Repository.Id)
echo Repo Name: $(Build.Repository.Name)
echo Source Version: $(Build.SourceVersion)
echo Configuration: $(Configuration)
displayName: 'Echo Check'
- script: (robocopy /MIR \"..\Static\" \"D:\$(Configuration)\$(Build.Repository.Name)\$(Build.Repository.Id)\$(AssemblyTitle)\") ^& IF %ERRORLEVEL% LEQ 7 exit 0
workingDirectory: Static
displayName: 'Robocopy'
- script: rmdir "D:\web-sites\$(AssemblyTitle).$(Configuration)"
workingDirectory: Static
displayName: 'Remove MKLink'
continueOnError: true
- script: mklink /J "D:\web-sites\$(AssemblyTitle).$(Configuration)" "D:\$(Configuration)\$(Build.Repository.Name)\$(Build.Repository.Id)\$(AssemblyTitle)"
workingDirectory: Static
displayName: 'Create MKLink'
- script: mkdir "D:\web-sites\$(AssemblyTitle).$(Configuration)\$(AssemblyTitle).$(Configuration)"
workingDirectory: Static
displayName: 'Make Directory'
continueOnError: true

View File

@ -1,6 +0,0 @@
# mklink
```bash Thu Aug 29 2024 09:47:22 GMT-0700 (Mountain Standard Time)
mklink /J "L:\DevOps\OpenInsight-Metrology-Viewer\OI-Metrology\Tests\.vscode\.UserSecrets-Server" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\b0a3891c-b775-422c-80ee-63a2f385045d"
mklink /J "L:\DevOps\OpenInsight-Metrology-Viewer\OI-Metrology\Tests\.vscode\.UserSecrets-Wafer-Counter" "C:\Users\phares\AppData\Roaming\Microsoft\UserSecrets\2a0acd34-8f61-47a3-8818-73fa8fe04902"
```

View File

@ -1,24 +1,6 @@
{ {
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/**", "coverage-gutters.coverageBaseDir": "../.vscode/TestResults/**",
"cSpell.words": [ "cSpell.words": [
"appsettings", "datebegin"
"BIORAD",
"datebegin",
"dateend",
"Dispo",
"headerid",
"headertitles",
"infineon",
"markasawaiting",
"markasreviewed",
"mesfs",
"messa",
"Newtonsoft",
"pdsf",
"RESIMAPCDE",
"ROTR",
"SGRP",
"Tencor",
"TSNO"
] ]
} }

View File

@ -2,57 +2,43 @@
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{ {
"label": "Build", "label": "build",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"build" "build",
"${workspaceFolder}/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Test Debug", "label": "testDebug",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"test", "test",
"--settings:test.runsettings" "${workspaceFolder}/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Test Debug with Settings", "label": "testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"--settings:Settings.xml"
],
"problemMatcher": "$msCompile"
},
{
"label": "Test Release",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"test", "test",
"${workspaceFolder}/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c", "-c",
"Release" "Release"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{
"label": "Test Release with Settings",
"command": "dotnet",
"type": "process",
"args": [
"test",
"-c",
"Release",
"--settings:Settings.xml"
],
"problemMatcher": "$msCompile"
},
{ {
"label": "Format", "label": "Format",
"command": "dotnet", "command": "dotnet",
@ -69,7 +55,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Format Whitespace", "label": "Format-Whitespace",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -79,11 +65,14 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "Publish", "label": "publish",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/../Server/OI.Metrology.Server.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"--configuration", "--configuration",
"Release", "Release",
"--runtime", "--runtime",

View File

@ -1,21 +0,0 @@
using System.Diagnostics;
namespace OI.Metrology.Tests;
public class BaseTestClass
{
private static int _FailedTests;
private readonly int _Threshold = 5;
protected void IncrementFailedTests()
{
if (++_FailedTests >= _Threshold)
{
for (int i = 0; i < 10; i++)
Thread.Sleep(500);
Process.GetCurrentProcess().Kill();
}
}
}

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<MSTest>
<Parallelize>
<Workers>0</Workers>
<Scope>MethodLevel</Scope>
</Parallelize>
</MSTest>
</RunSettings>

View File

@ -8,14 +8,14 @@ using System.Net.Http.Json;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitAwaitingDispoController : BaseTestClass public class UnitAwaitingDispoController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -23,32 +23,19 @@ public class UnitAwaitingDispoController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
_ControllerName = nameof(Server.ApiControllers.AwaitingDispoController)[..^10]; _ControllerName = nameof(Server.ApiControllers.AwaitingDispoController)[..^10];
} }
private static void NonThrowTryCatch()
{
try
{ throw new Exception(); }
catch (Exception) { }
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IAwaitingDispoController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IAwaitingDispoController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -59,8 +46,8 @@ public class UnitAwaitingDispoController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IEnumerable<AwaitingDisposition>? awaitingDispositions = metrologyRepository?.GetAwaitingDisposition(); IEnumerable<AwaitingDisposition>? awaitingDispositions = metrologyRepository?.GetAwaitingDisposition();
Assert.IsNotNull(awaitingDispositions); Assert.IsTrue(awaitingDispositions is not null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -69,10 +56,10 @@ public class UnitAwaitingDispoController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(IMetrologyRepository.GetAwaitingDisposition)}Api.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(IMetrologyRepository.GetAwaitingDisposition)}Api.json"), json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -83,7 +70,7 @@ public class UnitAwaitingDispoController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
_ = metrologyRepository?.UpdateReviewDate(toolTypeId: 1, headerId: 1, clearDate: false); _ = metrologyRepository?.UpdateReviewDate(toolTypeId: 1, headerId: 1, clearDate: false);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -92,9 +79,9 @@ public class UnitAwaitingDispoController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/markasreviewed"); _ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/markasreviewed");
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -106,7 +93,7 @@ public class UnitAwaitingDispoController : BaseTestClass
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
int? dateCleared = metrologyRepository?.UpdateReviewDate(toolTypeId: 1, headerId: 1, clearDate: true); int? dateCleared = metrologyRepository?.UpdateReviewDate(toolTypeId: 1, headerId: 1, clearDate: true);
Assert.IsTrue(dateCleared <= 1); Assert.IsTrue(dateCleared <= 1);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -115,9 +102,9 @@ public class UnitAwaitingDispoController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.PostAsync($"api/{_ControllerName}/markasawaiting", null); _ = await httpClient.PostAsync($"api/{_ControllerName}/markasawaiting", null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -128,7 +115,7 @@ public class UnitAwaitingDispoController : BaseTestClass
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
Guid? guid = metrologyRepository?.GetHeaderAttachmentID(toolTypeId: 1, headerId: 1); Guid? guid = metrologyRepository?.GetHeaderAttachmentID(toolTypeId: 1, headerId: 1);
Assert.IsNotNull(guid); Assert.IsNotNull(guid);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -136,10 +123,10 @@ public class UnitAwaitingDispoController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/1/header-attachment-id?headerid=1"); HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/1/header-attachment-id?headerid=1");
Assert.IsNotNull(httpResponseMessage.Content.ToString()); Assert.IsNotNull(httpResponseMessage.Content);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -8,14 +8,14 @@ using System.Text;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitInboundController : BaseTestClass public class UnitInboundController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -23,6 +23,7 @@ public class UnitInboundController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -36,19 +37,12 @@ public class UnitInboundController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IInboundController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IInboundController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -64,9 +58,9 @@ public class UnitInboundController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.PostAsync($"api/{_ControllerName}/BioRad", GetStringContent()); _ = await httpClient.PostAsync($"api/{_ControllerName}/BioRad", GetStringContent());
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -76,9 +70,9 @@ public class UnitInboundController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.PostAsync($"api/{_ControllerName}/BioRad/attachment", GetStringContent()); _ = await httpClient.PostAsync($"api/{_ControllerName}/BioRad/attachment", GetStringContent());
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -8,14 +8,14 @@ using System.Net;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestAppSettingsController : BaseTestClass public class UnitTestAppSettingsController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -23,6 +23,7 @@ public class UnitTestAppSettingsController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -36,19 +37,23 @@ public class UnitTestAppSettingsController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IAppSettingsController<object>.GetRouteName(), _ControllerName); Assert.AreEqual(IAppSettingsController<object>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch();
}
[TestMethod]
public void TestConnectionString()
{
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IAppSettingsRepository<Server.Models.Binder.AppSettings>? appSettingsRepository = serviceProvider?.GetRequiredService<IAppSettingsRepository<Server.Models.Binder.AppSettings>>();
appSettingsRepository?.VerifyConnectionStrings();
_Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -59,7 +64,7 @@ public class UnitTestAppSettingsController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
AppSettings? appSettings = serviceProvider?.GetRequiredService<AppSettings>(); AppSettings? appSettings = serviceProvider?.GetRequiredService<AppSettings>();
Assert.IsNotNull(appSettings); Assert.IsNotNull(appSettings);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -68,10 +73,10 @@ public class UnitTestAppSettingsController : BaseTestClass
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IAppSettingsRepository<AppSettings>? appSettingsRepository = serviceProvider?.GetRequiredService<IAppSettingsRepository<AppSettings>>(); IAppSettingsRepository<Server.Models.Binder.AppSettings>? appSettingsRepository = serviceProvider?.GetRequiredService<IAppSettingsRepository<Server.Models.Binder.AppSettings>>();
AppSettings? appSettings = appSettingsRepository?.GetAppSettings(); Server.Models.Binder.AppSettings? appSettings = appSettingsRepository?.GetAppSettings();
Assert.IsNotNull(appSettings); Assert.IsTrue(appSettings is not null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -80,17 +85,16 @@ public class UnitTestAppSettingsController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string actionName = nameof(IAppSettingsController<object>.Action.App); string actionName = nameof(IAppSettingsController<object>.Action.App);
HttpResponseMessage? httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}"); HttpResponseMessage? httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}");
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.IsNotNull(httpResponseMessage.Content.Headers.ContentType); Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType.ToString()); string json = await httpResponseMessage.Content.ReadAsStringAsync();
string? json = await httpResponseMessage.Content.ReadAsStringAsync();
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetAppSettings)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetAppSettings)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
Assert.AreNotEqual("[]", json); Assert.IsTrue(json != "[]");
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -99,10 +103,10 @@ public class UnitTestAppSettingsController : BaseTestClass
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IAppSettingsRepository<AppSettings>? appSettingsRepository = serviceProvider?.GetRequiredService<IAppSettingsRepository<AppSettings>>(); IAppSettingsRepository<Server.Models.Binder.AppSettings>? appSettingsRepository = serviceProvider?.GetRequiredService<IAppSettingsRepository<Server.Models.Binder.AppSettings>>();
string? result = appSettingsRepository?.GetBuildNumberAndGitCommitSeven(); string? result = appSettingsRepository?.GetBuildNumberAndGitCommitSeven();
Assert.IsNotNull(result); Assert.IsTrue(result is not null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -111,16 +115,15 @@ public class UnitTestAppSettingsController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string actionName = nameof(IAppSettingsController<object>.Action.DevOps); string actionName = nameof(IAppSettingsController<object>.Action.DevOps);
HttpResponseMessage? httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}"); HttpResponseMessage? httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}");
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.IsNotNull(httpResponseMessage.Content.Headers.ContentType); Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType.ToString()); string json = await httpResponseMessage.Content.ReadAsStringAsync();
string? json = await httpResponseMessage.Content.ReadAsStringAsync();
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetBuildNumberAndGitCommitSeven)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetBuildNumberAndGitCommitSeven)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -7,14 +7,14 @@ using System.Net;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestClientSettingsController : BaseTestClass public class UnitTestClientSettingsController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,37 +22,21 @@ public class UnitTestClientSettingsController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
_ControllerName = nameof(Server.ApiControllers.ClientSettingsController)[..^10]; _ControllerName = nameof(Server.ApiControllers.ClientSettingsController)[..^10];
} }
private static void NonThrowTryCatch()
{
try
{ throw new Exception(); }
catch (Exception) { }
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IClientSettingsController<object>.GetRouteName(), _ControllerName); Assert.AreEqual(IClientSettingsController<object>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
#if DEBUG
[Ignore]
#endif
[TestMethod] [TestMethod]
public void GetClientSettings() public void GetClientSettings()
{ {
@ -61,33 +45,31 @@ public class UnitTestClientSettingsController : BaseTestClass
IClientSettingsRepository? clientSettingsRepository = serviceProvider?.GetRequiredService<IClientSettingsRepository>(); IClientSettingsRepository? clientSettingsRepository = serviceProvider?.GetRequiredService<IClientSettingsRepository>();
#if DEBUG #if DEBUG
List<string>? clientSettings = clientSettingsRepository?.GetClientSettings(null); List<string>? clientSettings = clientSettingsRepository?.GetClientSettings(null);
Assert.IsNotNull(clientSettings); Assert.IsTrue(clientSettings is not null);
#endif #endif
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
#if DEBUG #pragma warning disable CS1998
[Ignore]
#endif
[TestMethod] [TestMethod]
public async Task GetClientSettingsApi() public async Task GetClientSettingsApi()
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
#if DEBUG #if DEBUG
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string actionName = nameof(IClientSettingsController<object>.Action.Client); string actionName = nameof(IClientSettingsController<object>.Action.Client);
HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}"); HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}");
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.IsNotNull(httpResponseMessage.Content.Headers.ContentType); Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
Assert.AreEqual("application/json; charset=utf-8", httpResponseMessage.Content.Headers.ContentType.ToString()); string json = await httpResponseMessage.Content.ReadAsStringAsync();
string? json = await httpResponseMessage.Content.ReadAsStringAsync();
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetClientSettings)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetClientSettings)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
Assert.AreNotEqual("[]", json); Assert.IsTrue(json != "[]");
#endif #endif
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
#pragma warning restore CS1998
[TestMethod] [TestMethod]
public void GetIpAddress() public void GetIpAddress()
@ -96,8 +78,8 @@ public class UnitTestClientSettingsController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IClientSettingsRepository? clientSettingsRepository = serviceProvider?.GetRequiredService<IClientSettingsRepository>(); IClientSettingsRepository? clientSettingsRepository = serviceProvider?.GetRequiredService<IClientSettingsRepository>();
string? ipAddress = clientSettingsRepository?.GetIpAddress(null); string? ipAddress = clientSettingsRepository?.GetIpAddress(null);
Assert.IsNotNull(ipAddress); Assert.IsTrue(ipAddress is not null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -105,16 +87,15 @@ public class UnitTestClientSettingsController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string actionName = nameof(IClientSettingsController<object>.Action.IP); string actionName = nameof(IClientSettingsController<object>.Action.IP);
HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}"); HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"api/{_ControllerName}/{actionName}");
Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.AreEqual(HttpStatusCode.OK, httpResponseMessage.StatusCode);
Assert.IsNotNull(httpResponseMessage.Content.Headers.ContentType); Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType?.ToString());
Assert.AreEqual("text/plain; charset=utf-8", httpResponseMessage.Content.Headers.ContentType.ToString()); string json = await httpResponseMessage.Content.ReadAsStringAsync();
string? json = await httpResponseMessage.Content.ReadAsStringAsync();
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetIpAddress)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetIpAddress)}.json"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -9,14 +9,14 @@ using System.Text;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestExportController : BaseTestClass public class UnitTestExportController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -24,6 +24,7 @@ public class UnitTestExportController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -37,19 +38,12 @@ public class UnitTestExportController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IExportController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IExportController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -67,7 +61,7 @@ public class UnitTestExportController : BaseTestClass
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
string? result = exportRepository?.GetExport(GetHeaderCommon()); string? result = exportRepository?.GetExport(GetHeaderCommon());
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -76,11 +70,11 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/export"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/export");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExport)}.txt"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExport)}.txt"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -89,10 +83,10 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/export", GetStringContent()); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/export", GetStringContent());
Assert.AreEqual(System.Net.HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.IsTrue(httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -104,7 +98,7 @@ public class UnitTestExportController : BaseTestClass
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Result<HeaderCommon[]>? result = exportRepository?.GetHeaders(GetHeaderCommon()); Result<HeaderCommon[]>? result = exportRepository?.GetHeaders(GetHeaderCommon());
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -113,12 +107,12 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/headers"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/headers");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaders)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaders)}.json"), json);
Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json); Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -127,10 +121,10 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/headers", GetStringContent()); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/headers", GetStringContent());
Assert.AreEqual(System.Net.HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.IsTrue(httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -142,7 +136,7 @@ public class UnitTestExportController : BaseTestClass
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Result<HeaderCommon[]>? result = exportRepository?.GetLogistics(GetHeaderCommon()); Result<HeaderCommon[]>? result = exportRepository?.GetLogistics(GetHeaderCommon());
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -151,12 +145,12 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/logistics"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/logistics");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetLogistics)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetLogistics)}.json"), json);
Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json); Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -165,10 +159,10 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/logistics", GetStringContent()); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/logistics", GetStringContent());
Assert.AreEqual(System.Net.HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.IsTrue(httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -180,7 +174,7 @@ public class UnitTestExportController : BaseTestClass
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
string? result = exportRepository?.GetProcessDataStandardFormat(GetHeaderCommon()); string? result = exportRepository?.GetProcessDataStandardFormat(GetHeaderCommon());
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -189,11 +183,11 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/processDataStandardFormat"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/processDataStandardFormat");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProcessDataStandardFormat)}.pdsf"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProcessDataStandardFormat)}.pdsf"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -202,10 +196,10 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/processDataStandardFormat", GetStringContent()); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync($"api/{_ControllerName}/processDataStandardFormat", GetStringContent());
Assert.AreEqual(System.Net.HttpStatusCode.OK, httpResponseMessage.StatusCode); Assert.IsTrue(httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -217,11 +211,11 @@ public class UnitTestExportController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<DataTable>? result = exportRepository?.GetExportData(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null); Result<DataTable>? result = exportRepository?.GetExportData(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -230,16 +224,15 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/export?datebegin=&dateend="); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/export?datebegin=&dateend=");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExportData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetExportData)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json); Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore]
[TestMethod] [TestMethod]
public void GetCSVExport() public void GetCSVExport()
{ {
@ -247,10 +240,10 @@ public class UnitTestExportController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>(); IExportRepository? exportRepository = serviceProvider?.GetRequiredService<IExportRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
string? result = exportRepository?.GetCSVExport(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null); string? result = exportRepository?.GetCSVExport(metrologyRepository, toolTypeId: 1, datebegin: null, dateend: null);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -259,11 +252,11 @@ public class UnitTestExportController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/1/csv?datebegin=&dateend="); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/1/csv?datebegin=&dateend=");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCSVExport)}.csv"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCSVExport)}.csv"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -9,14 +9,14 @@ using System.Collections.ObjectModel;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestFileShareController : BaseTestClass public class UnitTestFileShareController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Wafer.Counter.Program>? _WebApplicationFactory; private static WebApplicationFactory<Wafer.Counter.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -24,6 +24,7 @@ public class UnitTestFileShareController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Wafer.Counter.Program>(); _WebApplicationFactory = new WebApplicationFactory<Wafer.Counter.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Wafer.Counter.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Wafer.Counter.Program>>();
@ -38,19 +39,12 @@ public class UnitTestFileShareController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IFileShareController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IFileShareController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -60,10 +54,10 @@ public class UnitTestFileShareController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/file-share/copy-file/?from=\\\\mesfs.infineon.com\\EC_Metrology_Si\\MetrologyAttachments\\CDERunHeader_\\2024\\WW11\\247233\\CDE5_240315162756858.pdsf&to=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\a.pdsf"); string? response = await httpClient.GetStringAsync($"api/v1/file-share/copy-file/?from=\\\\mesfs.infineon.com\\EC_Metrology_Si\\MetrologyAttachments\\CDERunHeader_\\2024\\WW11\\247233\\CDE5_240315162756858.pdsf&to=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\a.pdsf");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -73,29 +67,25 @@ public class UnitTestFileShareController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/file-share/move-file/?from=\\\\mesfs.infineon.com\\EC_Metrology_Si\\MetrologyAttachments\\CDERunHeader_\\2024\\WW11\\247233\\CDE5_240315162756858.pdsf&to=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\a.pdsf"); string? response = await httpClient.GetStringAsync($"api/v1/file-share/move-file/?from=\\\\mesfs.infineon.com\\EC_Metrology_Si\\MetrologyAttachments\\CDERunHeader_\\2024\\WW11\\247233\\CDE5_240315162756858.pdsf&to=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\a.pdsf");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
[Ignore]
[TestMethod] [TestMethod]
public async Task FileWriteApi() public async Task FileWriteApi()
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/file-share/file-write/?path=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\b.pdsf&contents=b"); string? response = await httpClient.GetStringAsync($"api/v1/file-share/file-write/?path=\\\\messa01ec.infineon.com\\apps\\Metrology\\MET08RESIMAPCDE\\Test\\b.pdsf&contents=b");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
#if DEBUG
[Ignore]
#endif
[TestMethod] [TestMethod]
public void GetArchiveData() public void GetArchiveData()
{ {
@ -104,7 +94,7 @@ public class UnitTestFileShareController : BaseTestClass
CharacterizationParameters characterizationParameters; CharacterizationParameters characterizationParameters;
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IFileShareRepository? fileShareRepository = serviceProvider?.GetRequiredService<IFileShareRepository>(); IFileShareRepository? fileShareRepository = serviceProvider?.GetRequiredService<IFileShareRepository>();
characterizationParameters = new("MU", "MU-6INCH", "*.wc", null, null, "6INCH"); characterizationParameters = new("FQA", "FQA-8INCH", "*.wc", null, null, "8INCH");
result = fileShareRepository?.GetArchiveData(characterizationParameters); result = fileShareRepository?.GetArchiveData(characterizationParameters);
Assert.IsNotNull(result); Assert.IsNotNull(result);
characterizationParameters = new(string.Empty, "BIORAD4", "BIO*.json", null, null, "8INCH"); characterizationParameters = new(string.Empty, "BIORAD4", "BIO*.json", null, null, "8INCH");
@ -113,28 +103,22 @@ public class UnitTestFileShareController : BaseTestClass
characterizationParameters = new(string.Empty, "CDE5", "CDE*.json", null, null, "8INCH"); characterizationParameters = new(string.Empty, "CDE5", "CDE*.json", null, null, "8INCH");
result = fileShareRepository?.GetArchiveData(characterizationParameters); result = fileShareRepository?.GetArchiveData(characterizationParameters);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
#if DEBUG
[Ignore]
#endif
[TestMethod] [TestMethod]
public async Task ArchiveDataApi() public async Task ArchiveDataApi()
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/file-share/archive-data/?area=FQA&equipment-id=FQA-8INCH&search-pattern=*.wc&wafer-size=8INCH"); string? response = await httpClient.GetStringAsync($"api/v1/file-share/archive-data/?area=FQA&equipment-id=FQA-8INCH&search-pattern=*.wc&wafer-size=8INCH");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
#if DEBUG
[Ignore]
#endif
[TestMethod] [TestMethod]
public void EquipmentIds() public void EquipmentIds()
{ {
@ -143,22 +127,19 @@ public class UnitTestFileShareController : BaseTestClass
IFileShareRepository? fileShareRepository = serviceProvider?.GetRequiredService<IFileShareRepository>(); IFileShareRepository? fileShareRepository = serviceProvider?.GetRequiredService<IFileShareRepository>();
ReadOnlyCollection<ToolTypeNameId>? result = fileShareRepository?.GetEquipmentIds(); ReadOnlyCollection<ToolTypeNameId>? result = fileShareRepository?.GetEquipmentIds();
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
#if DEBUG
[Ignore]
#endif
[TestMethod] [TestMethod]
public async Task EquipmentIdsApi() public async Task EquipmentIdsApi()
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/file-share/equipment-ids"); string? response = await httpClient.GetStringAsync($"api/v1/file-share/equipment-ids");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -6,14 +6,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestISpreadingResistanceProfileController : BaseTestClass public class UnitTestISpreadingResistanceProfileController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -21,6 +21,7 @@ public class UnitTestISpreadingResistanceProfileController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -34,19 +35,12 @@ public class UnitTestISpreadingResistanceProfileController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(ISpreadingResistanceProfileController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(ISpreadingResistanceProfileController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -64,11 +58,11 @@ public class UnitTestISpreadingResistanceProfileController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
ISpreadingResistanceProfileService? spreadingResistanceProfileService = serviceProvider?.GetRequiredService<ISpreadingResistanceProfileService>(); ISpreadingResistanceProfileService? spreadingResistanceProfileService = serviceProvider?.GetRequiredService<ISpreadingResistanceProfileService>();
byte[]? bytes = spreadingResistanceProfileService?.GetImageBytes(json); byte[]? bytes = spreadingResistanceProfileService?.GetImageBytes(json);
Assert.IsNotNull(bytes); Assert.IsTrue(bytes is not null);
Assert.AreNotEqual(0, bytes.Length); Assert.IsTrue(bytes.Length != 0);
File.WriteAllBytes(Path.Combine(directory, "srp.png"), bytes); File.WriteAllBytes(Path.Combine(directory, "srp.png"), bytes);
} }
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestInfinityQSController : BaseTestClass public class UnitTestInfinityQSController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,6 +22,7 @@ public class UnitTestInfinityQSController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -35,19 +36,12 @@ public class UnitTestInfinityQSController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IInfinityQSController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IInfinityQSController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -62,7 +56,7 @@ public class UnitTestInfinityQSController : BaseTestClass
IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>(); IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>();
string? result = infinityQSRepository?.GetCommandText("1677273357", "61", "CDE5", "5012", "575908", ""); string? result = infinityQSRepository?.GetCommandText("1677273357", "61", "CDE5", "5012", "575908", "");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -74,11 +68,11 @@ public class UnitTestInfinityQSController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/commandText/?sub_group_id=1677273357&process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/commandText/?sub_group_id=1677273357&process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -92,12 +86,14 @@ public class UnitTestInfinityQSController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>(); IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>();
Result<InfinityQSBase[]>? result = infinityQSRepository?.GetData("1677273357"); Result<InfinityQSBase[]>? result = infinityQSRepository?.GetData("1677273357");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.IsNotNull(result.Results[0].PR_NAME); Assert.IsNotNull(result?.Results[0].PR_NAME);
Assert.IsNotNull(result.Results[0].TD_NAME); Assert.IsNotNull(result?.Results[0].SE_SGTM);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsNotNull(result?.Results[0].SE_TSNO);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); Assert.IsNotNull(result?.Results[0].TD_NAME);
Assert.IsNotNull(result?.Results[0].TD_TEST);
_Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -109,13 +105,13 @@ public class UnitTestInfinityQSController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/data"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/data");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/data");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json);
Result<InfinityQSBase[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBase[]>>(json); Result<InfinityQSBase[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBase[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -129,12 +125,11 @@ public class UnitTestInfinityQSController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>(); IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>();
Result<InfinityQSDescriptor[]>? result = infinityQSRepository?.GetDescriptors("1677273357"); Result<InfinityQSDescriptor[]>? result = infinityQSRepository?.GetDescriptors("1677273357");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.IsNotNull(result.Results[0].SD_SGRP); Assert.IsNotNull(result?.Results[0].SD_SGRP);
Assert.IsNotNull(result.Results[0].SD_TSNO); Assert.IsNotNull(result?.Results[0].SD_TSNO);
Assert.AreNotEqual(0, result.Results.Length); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -146,13 +141,13 @@ public class UnitTestInfinityQSController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/descriptors"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/descriptors");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/descriptors"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/descriptors");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json);
Result<InfinityQSDescriptor[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptor[]>>(json); Result<InfinityQSDescriptor[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptor[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -167,7 +162,7 @@ public class UnitTestInfinityQSController : BaseTestClass
IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>(); IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>();
Result<InfinityQSEvent[]>? result = infinityQSRepository?.GetEvents("1677273357"); Result<InfinityQSEvent[]>? result = infinityQSRepository?.GetEvents("1677273357");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -179,12 +174,12 @@ public class UnitTestInfinityQSController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/events"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/events");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEvents)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEvents)}.json"), json);
Result<InfinityQSEvent[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSEvent[]>>(json); Result<InfinityQSEvent[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSEvent[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -199,7 +194,7 @@ public class UnitTestInfinityQSController : BaseTestClass
IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>(); IInfinityQSRepository? infinityQSRepository = serviceProvider?.GetRequiredService<IInfinityQSRepository>();
Result<InfinityQSBase[]>? result = infinityQSRepository?.GetHeader("1677273357"); Result<InfinityQSBase[]>? result = infinityQSRepository?.GetHeader("1677273357");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -211,12 +206,12 @@ public class UnitTestInfinityQSController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/header"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/header");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json);
Result<InfinityQSBase[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBase[]>>(json); Result<InfinityQSBase[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBase[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestInfinityQSV2Controller : BaseTestClass public class UnitTestInfinityQSV2Controller
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,6 +22,7 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -35,19 +36,12 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IInfinityQSV2Controller<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IInfinityQSV2Controller<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -59,7 +53,7 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>(); IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>();
string? result = infinityQSV2Repository?.GetCommandText("1677273357", "61", "CDE5", "5012", "575908", ""); string? result = infinityQSV2Repository?.GetCommandText("1677273357", "61", "CDE5", "5012", "575908", "");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -71,11 +65,11 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -89,16 +83,14 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>(); IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>();
Result<InfinityQSBaseV2[]>? result = infinityQSV2Repository?.GetData("1677273357"); Result<InfinityQSBaseV2[]>? result = infinityQSV2Repository?.GetData("1677273357");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.IsNotNull(result.Results[0].Process);
Assert.AreNotEqual(0, result.Results.Length);
Assert.IsNotNull(result?.Results[0].Process); Assert.IsNotNull(result?.Results[0].Process);
Assert.IsNotNull(result?.Results[0].Variable); Assert.IsNotNull(result?.Results[0].Variable);
Assert.IsNotNull(result?.Results[0].SiteNumber); Assert.IsNotNull(result?.Results[0].SiteNumber);
Assert.IsNotNull(result?.Results[0].VariableNumber); Assert.IsNotNull(result?.Results[0].VariableNumber);
Assert.IsNotNull(result?.Results[0].SubGroupDateTime); Assert.IsNotNull(result?.Results[0].SubGroupDateTime);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -110,13 +102,13 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/data"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/data");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/data");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json);
Result<InfinityQSBaseV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBaseV2[]>>(json); Result<InfinityQSBaseV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBaseV2[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -130,12 +122,11 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>(); IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>();
Result<InfinityQSDescriptorV2[]>? result = infinityQSV2Repository?.GetDescriptors("1677273357"); Result<InfinityQSDescriptorV2[]>? result = infinityQSV2Repository?.GetDescriptors("1677273357");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length);
Assert.IsNotNull(result?.Results[0].SubGroupId); Assert.IsNotNull(result?.Results[0].SubGroupId);
Assert.IsNotNull(result?.Results[0].SiteNumber); Assert.IsNotNull(result?.Results[0].SiteNumber);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -147,13 +138,13 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/descriptors"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357 575908_2023-02-24 14-18-05.txt/descriptors");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/descriptors"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/descriptors");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json);
Result<InfinityQSDescriptorV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV2[]>>(json); Result<InfinityQSDescriptorV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV2[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -168,7 +159,7 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>(); IInfinityQSV2Repository? infinityQSV2Repository = serviceProvider?.GetRequiredService<IInfinityQSV2Repository>();
Result<InfinityQSEventV2[]>? result = infinityQSV2Repository?.GetEvents("1677273357"); Result<InfinityQSEventV2[]>? result = infinityQSV2Repository?.GetEvents("1677273357");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -180,12 +171,12 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/events"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/events");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEvents)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEvents)}.json"), json);
Result<InfinityQSEventV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSEventV2[]>>(json); Result<InfinityQSEventV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSEventV2[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -201,7 +192,7 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
Result<InfinityQSBaseV2[]>? result = infinityQSV2Repository?.GetHeader("1677273357"); Result<InfinityQSBaseV2[]>? result = infinityQSV2Repository?.GetHeader("1677273357");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -213,13 +204,13 @@ public class UnitTestInfinityQSV2Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/header"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1677273357/header");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json);
Result<InfinityQSBaseV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBaseV2[]>>(json); Result<InfinityQSBaseV2[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSBaseV2[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestInfinityQSV3Controller : BaseTestClass public class UnitTestInfinityQSV3Controller
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,6 +22,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -35,19 +36,12 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IInfinityQSV3Controller<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IInfinityQSV3Controller<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -59,7 +53,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
string? result = infinityQSV3Repository?.GetCommandText("1698497987", "61", "CDE5", "5012", "575908", ""); string? result = infinityQSV3Repository?.GetCommandText("1698497987", "61", "CDE5", "5012", "575908", "");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -68,11 +62,11 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -83,15 +77,14 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
Result<InfinityQSV3[]>? result = infinityQSV3Repository?.GetData("1698497987"); Result<InfinityQSV3[]>? result = infinityQSV3Repository?.GetData("1698497987");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length);
Assert.IsNotNull(result?.Results[0].Process); Assert.IsNotNull(result?.Results[0].Process);
Assert.IsNotNull(result?.Results[0].Variable); Assert.IsNotNull(result?.Results[0].Variable);
Assert.IsNotNull(result?.Results[0].SiteNumber); Assert.IsNotNull(result?.Results[0].SiteNumber);
Assert.IsNotNull(result?.Results[0].VariableNumber); Assert.IsNotNull(result?.Results[0].VariableNumber);
Assert.IsNotNull(result?.Results[0].SubGroupDateTime); Assert.IsNotNull(result?.Results[0].SubGroupDateTime);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -100,13 +93,13 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987 575908_2023-02-24 14-18-05.txt/data"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987 575908_2023-02-24 14-18-05.txt/data");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/data");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json);
Result<InfinityQSV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV3[]>>(json); Result<InfinityQSV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV3[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -117,12 +110,11 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
Result<InfinityQSDescriptorV3[]>? result = infinityQSV3Repository?.GetDescriptors("1698497987"); Result<InfinityQSDescriptorV3[]>? result = infinityQSV3Repository?.GetDescriptors("1698497987");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsNotNull(result?.Results[0].SubGroupId);
Assert.IsNotNull(result.Results[0].SubGroupId); Assert.IsNotNull(result?.Results[0].SiteNumber);
Assert.IsNotNull(result.Results[0].SiteNumber); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -131,13 +123,13 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987 575908_2023-02-24 14-18-05.txt/descriptors"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987 575908_2023-02-24 14-18-05.txt/descriptors");
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/descriptors"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/descriptors");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json);
Result<InfinityQSDescriptorV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV3[]>>(json); Result<InfinityQSDescriptorV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV3[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -150,7 +142,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
Result<InfinityQSV3[]>? result = infinityQSV3Repository?.GetHeader("1698497987"); Result<InfinityQSV3[]>? result = infinityQSV3Repository?.GetHeader("1698497987");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -159,13 +151,13 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/header"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1698497987/header");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json);
Result<InfinityQSV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV3[]>>(json); Result<InfinityQSV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV3[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -177,7 +169,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
string? result = infinityQSV3Repository?.GetProductDataAverageSumOfDefectsProcessMeanProcessSigma("41", "8IN_THIN ROTR"); string? result = infinityQSV3Repository?.GetProductDataAverageSumOfDefectsProcessMeanProcessSigma("41", "8IN_THIN ROTR");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -186,11 +178,11 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/41/product-data-average-sum-of-defects-process-mean-process-sigma?recipe=8IN_THIN ROTR"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/41/product-data-average-sum-of-defects-process-mean-process-sigma?recipe=8IN_THIN ROTR");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProductDataAverageSumOfDefectsProcessMeanProcessSigma)}.json"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProductDataAverageSumOfDefectsProcessMeanProcessSigma)}.json"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -203,7 +195,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
List<string[]>? results = infinityQSV3Repository?.GetEpiProTempVerificationRows(night); List<string[]>? results = infinityQSV3Repository?.GetEpiProTempVerificationRows(night);
Assert.IsNotNull(results); Assert.IsNotNull(results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -212,11 +204,11 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/epi-pro-temp-verification-rows/?night=44&night=46&night=52&night=54"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/epi-pro-temp-verification-rows/?night=44&night=46&night=52&night=54");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerificationRows)}.json"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerificationRows)}.json"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -229,7 +221,7 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>(); IInfinityQSV3Repository? infinityQSV3Repository = serviceProvider?.GetRequiredService<IInfinityQSV3Repository>();
string? result = infinityQSV3Repository?.GetEpiProTempVerification(night); string? result = infinityQSV3Repository?.GetEpiProTempVerification(night);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -238,11 +230,11 @@ public class UnitTestInfinityQSV3Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/epi-pro-temp-verification/?night=44&night=46&night=52&night=54"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/epi-pro-temp-verification/?night=44&night=46&night=52&night=54");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerification)}.html"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerification)}.html"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -8,14 +8,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestInfinityQSV4Controller : BaseTestClass public class UnitTestInfinityQSV4Controller
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static string _ControllerVersion; private static string _ControllerVersion;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
@ -24,6 +24,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -38,20 +39,13 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IInfinityQSV4Controller<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IInfinityQSV4Controller<string>.GetRouteName(), _ControllerName);
Assert.AreEqual(IInfinityQSV4Controller<string>.GetRouteVersion(), _ControllerVersion); Assert.AreEqual(IInfinityQSV4Controller<string>.GetRouteVersion(), _ControllerVersion);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -63,7 +57,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
string? result = infinityQSV4Repository?.GetCommandText("1718539249", "61", "CDE5", "5012", "575908", ""); string? result = infinityQSV4Repository?.GetCommandText("1718539249", "61", "CDE5", "5012", "575908", "");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -72,11 +66,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00"); string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/commandText/?process=61&job=CDE5&part=5012&lot=575908&date_time=2023-02-24 15:15:00");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetCommandText)}.sql"), json);
Assert.IsNotNull(json); Assert.IsNotNull(json);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -87,15 +81,14 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
Result<InfinityQSV4[]>? result = infinityQSV4Repository?.GetData("1718539249"); Result<InfinityQSV4[]>? result = infinityQSV4Repository?.GetData("1718539249");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length);
Assert.IsNotNull(result?.Results[0].Process); Assert.IsNotNull(result?.Results[0].Process);
Assert.IsNotNull(result?.Results[0].Variable); Assert.IsNotNull(result?.Results[0].Variable);
Assert.IsNotNull(result?.Results[0].SiteNumber); Assert.IsNotNull(result?.Results[0].SiteNumber);
Assert.IsNotNull(result?.Results[0].VariableNumber); Assert.IsNotNull(result?.Results[0].VariableNumber);
Assert.IsNotNull(result?.Results[0].SubGroupDateTime); Assert.IsNotNull(result?.Results[0].SubGroupDateTime);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -104,13 +97,13 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249 575908_2023-02-24 14-18-05.txt/data"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249 575908_2023-02-24 14-18-05.txt/data");
string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/data");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json);
Result<InfinityQSV4[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV4[]>>(json); Result<InfinityQSV4[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV4[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -121,12 +114,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
Result<InfinityQSDescriptorV4[]>? result = infinityQSV4Repository?.GetDescriptors("1718539249"); Result<InfinityQSDescriptorV4[]>? result = infinityQSV4Repository?.GetDescriptors("1718539249");
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length);
Assert.IsNotNull(result?.Results[0].SubGroupId); Assert.IsNotNull(result?.Results[0].SubGroupId);
Assert.IsNotNull(result?.Results[0].SiteNumber); Assert.IsNotNull(result?.Results[0].SiteNumber);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -135,13 +127,13 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
//string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249 575908_2023-02-24 14-18-05.txt/descriptors"); //string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249 575908_2023-02-24 14-18-05.txt/descriptors");
string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/descriptors"); string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/descriptors");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetDescriptors)}.json"), json);
Result<InfinityQSDescriptorV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV3[]>>(json); Result<InfinityQSDescriptorV3[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSDescriptorV3[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -154,7 +146,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
Result<InfinityQSV4[]>? result = infinityQSV4Repository?.GetHeader("1718539249"); Result<InfinityQSV4[]>? result = infinityQSV4Repository?.GetHeader("1718539249");
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -163,13 +155,13 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/header"); string? json = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/1718539249/header");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeader)}.json"), json);
Result<InfinityQSV4[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV4[]>>(json); Result<InfinityQSV4[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<InfinityQSV4[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result?.Results[0].Part); Assert.IsNotNull(result?.Results[0].Part);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -181,7 +173,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
string? result = infinityQSV4Repository?.GetProductDataAverageSumOfDefectsProcessMeanProcessSigma("41", "8IN_THIN ROTR"); string? result = infinityQSV4Repository?.GetProductDataAverageSumOfDefectsProcessMeanProcessSigma("41", "8IN_THIN ROTR");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -190,11 +182,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/41/product-data-average-sum-of-defects-process-mean-process-sigma?recipe=8IN_THIN ROTR"); string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/41/product-data-average-sum-of-defects-process-mean-process-sigma?recipe=8IN_THIN ROTR");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProductDataAverageSumOfDefectsProcessMeanProcessSigma)}.json"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetProductDataAverageSumOfDefectsProcessMeanProcessSigma)}.json"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -207,7 +199,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
List<string[]>? results = infinityQSV4Repository?.GetEpiProTempVerificationRows(night); List<string[]>? results = infinityQSV4Repository?.GetEpiProTempVerificationRows(night);
Assert.IsNotNull(results); Assert.IsNotNull(results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -216,11 +208,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/epi-pro-temp-verification-rows/?night=44&night=46&night=52&night=54"); string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/epi-pro-temp-verification-rows/?night=44&night=46&night=52&night=54");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerificationRows)}.json"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerificationRows)}.json"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -233,7 +225,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
string? result = infinityQSV4Repository?.GetEpiProTempVerification(night); string? result = infinityQSV4Repository?.GetEpiProTempVerification(night);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -242,11 +234,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/epi-pro-temp-verification/?night=44&night=46&night=52&night=54"); string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/epi-pro-temp-verification/?night=44&night=46&night=52&night=54");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerification)}.html"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetEpiProTempVerification)}.html"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -258,7 +250,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
List<Reactor>? results = infinityQSV4Repository?.GetReactors(); List<Reactor>? results = infinityQSV4Repository?.GetReactors();
Assert.IsNotNull(results); Assert.IsNotNull(results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -274,7 +266,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
result = infinityQSV4Repository?.GetProductionSpecification(part); result = infinityQSV4Repository?.GetProductionSpecification(part);
Assert.IsNotNull(result); Assert.IsNotNull(result);
} }
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -306,7 +298,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
result = infinityQSV4Repository?.GetProductionSpecification(part); result = infinityQSV4Repository?.GetProductionSpecification(part);
Assert.IsNotNull(result); Assert.IsNotNull(result);
} }
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -321,7 +313,7 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>(); IInfinityQSV4Repository? infinityQSV4Repository = serviceProvider?.GetRequiredService<IInfinityQSV4Repository>();
string? result = infinityQSV4Repository?.GetLastGroupIdWithValue(process, part, test); string? result = infinityQSV4Repository?.GetLastGroupIdWithValue(process, part, test);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -333,11 +325,11 @@ public class UnitTestInfinityQSV4Controller : BaseTestClass
const string process = "35"; const string process = "35";
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/{process}/last-group-id-with-value/?part={part}&test={test}"); string? result = await httpClient.GetStringAsync($"api/{_ControllerVersion}/{_ControllerName}/{process}/last-group-id-with-value/?part={part}&test={test}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetLastGroupIdWithValue)}.html"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetLastGroupIdWithValue)}.html"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -6,14 +6,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestOpenInsightV1Controller : BaseTestClass public class UnitTestOpenInsightV1Controller
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -21,6 +21,7 @@ public class UnitTestOpenInsightV1Controller : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -34,19 +35,12 @@ public class UnitTestOpenInsightV1Controller : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IOpenInsightV1Controller<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IOpenInsightV1Controller<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -57,7 +51,7 @@ public class UnitTestOpenInsightV1Controller : BaseTestClass
IOpenInsightV1Repository? openInsightRepository = serviceProvider?.GetRequiredService<IOpenInsightV1Repository>(); IOpenInsightV1Repository? openInsightRepository = serviceProvider?.GetRequiredService<IOpenInsightV1Repository>();
string? result = openInsightRepository?.GetTencorRun("615071", "10/30/2023 06:48:34PM", "6IN_EPP ROTR"); string? result = openInsightRepository?.GetTencorRun("615071", "10/30/2023 06:48:34PM", "6IN_EPP ROTR");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -66,11 +60,11 @@ public class UnitTestOpenInsightV1Controller : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/615071/tencor-run?insert_date=10/30/2023 06:48:34PM&recipe=6IN_EPP ROTR"); string? result = await httpClient.GetStringAsync($"api/{_ControllerName}/615071/tencor-run?insert_date=10/30/2023 06:48:34PM&recipe=6IN_EPP ROTR");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetTencorRun)}.json"), result); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetTencorRun)}.json"), result);
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestPinController : BaseTestClass public class UnitTestPinController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,32 +22,19 @@ public class UnitTestPinController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
_ControllerName = nameof(Server.ApiControllers.PinController)[..^10]; _ControllerName = nameof(Server.ApiControllers.PinController)[..^10];
} }
private static void NonThrowTryCatch()
{
try
{ throw new Exception(); }
catch (Exception) { }
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IPinController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IPinController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -60,7 +47,7 @@ public class UnitTestPinController : BaseTestClass
Assert.IsNotNull(metrologyRepository); Assert.IsNotNull(metrologyRepository);
Result<Pinned[]>? result = pinRepository?.GetPinnedTable(metrologyRepository, id: 1, cde_id: null, biorad_id: null, rds: null); Result<Pinned[]>? result = pinRepository?.GetPinnedTable(metrologyRepository, id: 1, cde_id: null, biorad_id: null, rds: null);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -73,7 +60,7 @@ public class UnitTestPinController : BaseTestClass
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetPinnedTable)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetPinnedTable)}.json"), json);
Result<Pinned[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<Pinned[]>>(json); Result<Pinned[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<Pinned[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.ViewModels;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestServiceShopOrderController : BaseTestClass public class UnitTestServiceShopOrderController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,32 +22,19 @@ public class UnitTestServiceShopOrderController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
_ControllerName = nameof(Server.ApiControllers.ServiceShopOrderController)[..^10]; _ControllerName = nameof(Server.ApiControllers.ServiceShopOrderController)[..^10];
} }
private static void NonThrowTryCatch()
{
try
{ throw new Exception(); }
catch (Exception) { }
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IServiceShopOrderController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IServiceShopOrderController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -55,9 +42,9 @@ public class UnitTestServiceShopOrderController : BaseTestClass
{ {
if (_Logger is null) if (_Logger is null)
throw new NullReferenceException(nameof(_Logger)); throw new NullReferenceException(nameof(_Logger));
ServiceShopOrder[]? serviceShopOrders = IServiceShopOrder.GetServiceShopOrders(null); ServiceShopOrder[] serviceShopOrders = IServiceShopOrder.GetServiceShopOrders(null);
Assert.IsNotNull(serviceShopOrders); Assert.IsNotNull(serviceShopOrders);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -67,13 +54,13 @@ public class UnitTestServiceShopOrderController : BaseTestClass
ServiceShopOrder[]? serviceShopOrders; ServiceShopOrder[]? serviceShopOrders;
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IServiceShopOrderRepository? serviceShopOrderRepository = serviceProvider?.GetRequiredService<IServiceShopOrderRepository>(); IServiceShopOrderRepository? serviceShopOrderRepository = serviceProvider?.GetRequiredService<IServiceShopOrderRepository>();
Assert.IsNotNull(serviceShopOrderRepository); Assert.IsTrue(serviceShopOrderRepository is not null);
serviceShopOrders = await serviceShopOrderRepository.GetAllServiceShopOrders(); serviceShopOrders = await serviceShopOrderRepository.GetAllServiceShopOrders();
Assert.IsNotNull(serviceShopOrders); Assert.IsTrue(serviceShopOrders is not null);
serviceShopOrders = await serviceShopOrderRepository.GetServiceShopOrders("23188d3d-9b75-ed11-ab8b-0050568f2fc3"); serviceShopOrders = await serviceShopOrderRepository.GetServiceShopOrders("23188d3d-9b75-ed11-ab8b-0050568f2fc3");
Assert.IsTrue(serviceShopOrders is not null && serviceShopOrders.Length != 0); Assert.IsTrue(serviceShopOrders is not null && serviceShopOrders.Length != 0);
Assert.IsNotNull(serviceShopOrders[0].ToString()); Assert.IsNotNull(serviceShopOrders[0].ToString());
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -81,14 +68,14 @@ public class UnitTestServiceShopOrderController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string actionName = nameof(IServiceShopOrderController<object>.Action.All); string actionName = nameof(IServiceShopOrderController<object>.Action.All);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/{actionName}"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/{actionName}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetAllServiceShopOrders)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetAllServiceShopOrders)}.json"), json);
ServiceShopOrder[]? serviceShopOrders = System.Text.Json.JsonSerializer.Deserialize<ServiceShopOrder[]>(json); ServiceShopOrder[]? serviceShopOrders = System.Text.Json.JsonSerializer.Deserialize<ServiceShopOrder[]>(json);
Assert.IsNotNull(serviceShopOrders); Assert.IsNotNull(serviceShopOrders);
Assert.AreNotEqual(0, serviceShopOrders.Length); Assert.IsTrue(serviceShopOrders.Length != 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -10,14 +10,14 @@ using System.Net.Http.Json;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestToolTypesController : BaseTestClass public class UnitTestToolTypesController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory; private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -25,6 +25,7 @@ public class UnitTestToolTypesController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Server.Program>(); _WebApplicationFactory = new WebApplicationFactory<Server.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
@ -38,19 +39,12 @@ public class UnitTestToolTypesController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IToolTypesController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IToolTypesController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -60,12 +54,12 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<ToolTypeNameId[]>? result = toolTypesRepository?.Index(metrologyRepository); Result<ToolTypeNameId[]>? result = toolTypesRepository?.Index(metrologyRepository);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsTrue(result.Results.Length != 0);
Assert.IsFalse(result.Results.All(l => l.ID == 0)); Assert.IsFalse(result.Results.All(l => l.ID == 0));
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -73,14 +67,14 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(Index)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(Index)}.json"), json);
Result<ToolTypeNameId[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeNameId[]>>(json); Result<ToolTypeNameId[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeNameId[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsTrue(result.Results.Length != 0);
Assert.IsFalse(result.Results.All(l => l.ID == 0)); Assert.IsFalse(result.Results.All(l => l.ID == 0));
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -90,13 +84,13 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<ToolTypeMetadataResult>? result = toolTypesRepository?.GetToolTypeMetadata(metrologyRepository, id: 1, sortby: string.Empty); Result<ToolTypeMetadataResult>? result = toolTypesRepository?.GetToolTypeMetadata(metrologyRepository, id: 1, sortby: string.Empty);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Metadata); Assert.IsNotNull(result.Results.Metadata);
Assert.AreNotEqual(0, result.Results.Metadata.Length); Assert.IsTrue(result.Results.Metadata.Length != 0);
Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0)); Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0));
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -104,15 +98,15 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetToolTypeMetadata)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetToolTypeMetadata)}.json"), json);
Result<ToolTypeMetadataResult>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeMetadataResult>>(json); Result<ToolTypeMetadataResult>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ToolTypeMetadataResult>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Metadata); Assert.IsNotNull(result.Results.Metadata);
Assert.AreNotEqual(0, result.Results.Metadata.Length); Assert.IsTrue(result.Results.Metadata.Length != 0);
Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0)); Assert.IsFalse(result.Results.Metadata.All(l => l.ToolTypeID == 0));
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -122,11 +116,11 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<DataTable>? result = toolTypesRepository?.GetHeaders(metrologyRepository, id: 1, datebegin: null, dateend: null, page: null, pagesize: null, headerid: null); Result<DataTable>? result = toolTypesRepository?.GetHeaders(metrologyRepository, id: 1, datebegin: null, dateend: null, page: null, pagesize: null, headerid: null);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -134,13 +128,13 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaders)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaders)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json); Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -150,12 +144,11 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<HeaderCommon[]>? result = toolTypesRepository?.GetHeaderTitles(metrologyRepository, id: -1, page: null, pagesize: null); Result<HeaderCommon[]>? result = toolTypesRepository?.GetHeaderTitles(metrologyRepository, id: -1, page: null, pagesize: null);
Assert.IsNotNull(result); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results); Assert.IsTrue(result?.Results.Length != 0);
Assert.AreNotEqual(0, result.Results.Length); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName);
} }
[TestMethod] [TestMethod]
@ -163,13 +156,13 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/-1/headertitles"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/-1/headertitles");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaderTitles)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaderTitles)}.json"), json);
Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json); Result<HeaderCommon[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<HeaderCommon[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsTrue(result.Results.Length != 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -179,11 +172,11 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<ColumnValue[]>? result = toolTypesRepository?.GetHeaderFields(metrologyRepository, id: 1, headerid: 1); Result<ColumnValue[]>? result = toolTypesRepository?.GetHeaderFields(metrologyRepository, id: 1, headerid: 1);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsTrue(result.Results.Length != 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -191,13 +184,13 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/fields"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/fields");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaderFields)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetHeaderFields)}.json"), json);
Result<ColumnValue[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ColumnValue[]>>(json); Result<ColumnValue[]>? result = System.Text.Json.JsonSerializer.Deserialize<Result<ColumnValue[]>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.AreNotEqual(0, result.Results.Length); Assert.IsTrue(result.Results.Length != 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -207,11 +200,11 @@ public class UnitTestToolTypesController : BaseTestClass
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Result<DataTable>? result = toolTypesRepository?.GetData(metrologyRepository, id: 1, headerid: 1); Result<DataTable>? result = toolTypesRepository?.GetData(metrologyRepository, id: 1, headerid: 1);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[TestMethod] [TestMethod]
@ -219,13 +212,13 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/data"); string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/1/headers/1/data");
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json); File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetData)}.json"), json);
Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json); Result<DataTable>? result = Newtonsoft.Json.JsonConvert.DeserializeObject<Result<DataTable>>(json);
Assert.IsNotNull(result?.Results); Assert.IsNotNull(result?.Results);
Assert.IsNotNull(result.Results.Rows.Count > 0); Assert.IsNotNull(result.Results.Rows.Count > 0);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -234,19 +227,19 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
int toolTypeId = 1; int toolTypeId = 1;
string tableType = "data"; string tabletype = "data";
string filename = "data.txt"; string filename = "data.txt";
string attachmentId = "ffdf5410-ca19-4097-bfa4-b398e236d07e"; string attachmentId = "ffdf5410-ca19-4097-bfa4-b398e236d07e";
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider; IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
IAttachmentsService? attachmentsService = serviceProvider?.GetRequiredService<IAttachmentsService>(); IAttachmentsService? attachmentsService = serviceProvider?.GetRequiredService<IAttachmentsService>();
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Assert.IsNotNull(attachmentsService); Assert.IsTrue(attachmentsService is not null);
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
Assert.IsNotNull(toolTypesRepository); Assert.IsTrue(toolTypesRepository is not null);
(string? message, string? _, Stream? _) = toolTypesRepository.GetAttachment(metrologyRepository, attachmentsService, toolTypeId, tableType, attachmentId, filename); (string? message, string? _, Stream? _) = toolTypesRepository.GetAttachment(metrologyRepository, attachmentsService, toolTypeId, tabletype, attachmentId, filename);
Assert.IsNull(message); Assert.IsTrue(message is null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -255,9 +248,9 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/data/files/ffdf5410-ca19-4097-bfa4-b398e236d07e/data.txt"); _ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/data/files/ffdf5410-ca19-4097-bfa4-b398e236d07e/data.txt");
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -270,12 +263,12 @@ public class UnitTestToolTypesController : BaseTestClass
IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>(); IMetrologyRepository? metrologyRepository = serviceProvider?.GetRequiredService<IMetrologyRepository>();
IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>(); IToolTypesRepository? toolTypesRepository = serviceProvider?.GetRequiredService<IToolTypesRepository>();
Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>(); Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>();
Assert.IsNotNull(appSettings); Assert.IsTrue(appSettings is not null);
Assert.IsNotNull(attachmentsService); Assert.IsTrue(attachmentsService is not null);
Assert.IsNotNull(metrologyRepository); Assert.IsTrue(metrologyRepository is not null);
string? message = toolTypesRepository?.OIExport(metrologyRepository, attachmentsService, toolTypeId: 1, headerid: 1); string? message = toolTypesRepository?.OIExport(metrologyRepository, attachmentsService, toolTypeId: 1, headerid: 1);
Assert.IsNull(message); Assert.IsTrue(message is null);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
[Ignore] [Ignore]
@ -284,9 +277,9 @@ public class UnitTestToolTypesController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
_ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headers/1/export"); _ = await httpClient.GetFromJsonAsync<object>($"api/{_ControllerName}/1/headers/1/export");
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
} }
} }

View File

@ -7,14 +7,14 @@ using OI.Metrology.Shared.Models.Stateless;
namespace OI.Metrology.Tests; namespace OI.Metrology.Tests;
[TestClass] [TestClass]
public class UnitTestWaferCounterController : BaseTestClass public class UnitTestWaferCounterController
{ {
#pragma warning disable CS8618 #pragma warning disable CS8618
private static ILogger? _Logger; private static ILogger? _Logger;
private static string _ControllerName; private static string _ControllerName;
public TestContext TestContext { get; set; } private static string? _TestContextTestName;
private static WebApplicationFactory<Wafer.Counter.Program>? _WebApplicationFactory; private static WebApplicationFactory<Wafer.Counter.Program>? _WebApplicationFactory;
#pragma warning restore #pragma warning restore
@ -22,6 +22,7 @@ public class UnitTestWaferCounterController : BaseTestClass
[ClassInitialize] [ClassInitialize]
public static void ClassInitAsync(TestContext testContext) public static void ClassInitAsync(TestContext testContext)
{ {
_TestContextTestName = testContext.TestName;
_WebApplicationFactory = new WebApplicationFactory<Wafer.Counter.Program>(); _WebApplicationFactory = new WebApplicationFactory<Wafer.Counter.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Wafer.Counter.Program>>(); _Logger = serviceProvider.GetRequiredService<ILogger<Wafer.Counter.Program>>();
@ -35,19 +36,12 @@ public class UnitTestWaferCounterController : BaseTestClass
catch (Exception) { } catch (Exception) { }
} }
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed)
IncrementFailedTests();
}
[TestMethod] [TestMethod]
public void TestControllerName() public void TestControllerName()
{ {
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.AreEqual(IWaferCounterController<string>.GetRouteName(), _ControllerName); Assert.AreEqual(IFileShareController<string>.GetRouteName(), _ControllerName);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -60,7 +54,7 @@ public class UnitTestWaferCounterController : BaseTestClass
IWaferCounterRepository? waferCounterRepository = serviceProvider?.GetRequiredService<IWaferCounterRepository>(); IWaferCounterRepository? waferCounterRepository = serviceProvider?.GetRequiredService<IWaferCounterRepository>();
WaferCounter? result = waferCounterRepository?.GetLastQuantityAndSlotMap(area: "FQA", waferSize: "8INCH", text: "Test"); WaferCounter? result = waferCounterRepository?.GetLastQuantityAndSlotMap(area: "FQA", waferSize: "8INCH", text: "Test");
Assert.IsNotNull(result); Assert.IsNotNull(result);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }
@ -70,10 +64,10 @@ public class UnitTestWaferCounterController : BaseTestClass
{ {
HttpClient? httpClient = _WebApplicationFactory?.CreateClient(); HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
_Logger?.LogInformation("Starting Web Application"); _Logger?.LogInformation("Starting Web Application");
Assert.IsNotNull(httpClient); Assert.IsTrue(httpClient is not null);
string? response = await httpClient.GetStringAsync($"api/v1/{_ControllerName}/FQA/last-quantity-and-slot-map/?waferSize=8INCH&text=Test"); string? response = await httpClient.GetStringAsync($"api/v1/{_ControllerName}/FQA/last-quantity-and-slot-map/?waferSize=8INCH&text=Test");
Assert.IsNotNull(response); Assert.IsNotNull(response);
_Logger?.LogInformation("{TestName} completed", TestContext.TestName); _Logger?.LogInformation("{TestName} completed", _TestContextTestName);
NonThrowTryCatch(); NonThrowTryCatch();
} }

View File

@ -8,7 +8,7 @@
"name": ".NET Core Launch (web)", "name": ".NET Core Launch (web)",
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "Build", "preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path. // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net8.0/OI.Metrology.Wafer.Counter.dll", "program": "${workspaceFolder}/bin/Debug/net8.0/OI.Metrology.Wafer.Counter.dll",
"args": [], "args": [],

View File

@ -1,173 +1,70 @@
{ {
"inputs": [ "version": "2.0.0",
{
"default": "Development",
"description": "Which ASP Net Core Environment?",
"id": "ASPNETCORE_ENVIRONMENT",
"options": [
"Development",
"Production"
],
"type": "pickString"
},
{
"default": "{AssemblyTitle}",
"description": "What Assembly Title?",
"id": "AssemblyTitle",
"type": "promptString"
},
{
"default": "{Build.BuildId}",
"description": "Which Build BuildId?",
"id": "Build.BuildId",
"type": "promptString"
},
{
"default": "{Build.Reason}",
"description": "Which Build Reason?",
"id": "Build.Reason",
"type": "promptString"
},
{
"default": "{Build.Repository.Id}",
"description": "Which Build Repository Id?",
"id": "Build.Repository.Id",
"type": "promptString"
},
{
"default": "{Build.Repository.Name}",
"description": "Which Build Repository Name?",
"id": "Build.Repository.Name",
"type": "promptString"
},
{
"default": "{Build.SourceVersion}",
"description": "Which Build Source Version?",
"id": "Build.SourceVersion",
"type": "promptString"
},
{
"default": "Debug",
"description": "Which Configuration?",
"id": "Configuration",
"options": [
"Debug",
"Release"
],
"type": "pickString"
},
{
"default": "net8.0",
"description": "Which Core Version?",
"id": "CoreVersion",
"options": [
"net8.0"
],
"type": "pickString"
},
{
"default": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"description": "Which MS Build?",
"id": "MSBuild",
"type": "promptString"
},
{
"default": "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/",
"description": "Which Nuget Source?",
"id": "NugetSource",
"type": "promptString"
},
{
"default": "win-x64",
"description": "Which Runtime?",
"id": "Runtime",
"options": [
"win-x64",
"win-x32",
"linux-x64",
"linux-x32"
],
"type": "pickString"
},
{
"default": "L:/",
"description": "Which System DefaultWorkingDirectory?",
"id": "System.DefaultWorkingDirectory",
"options": [
"L:/",
"D:/",
"C:/"
],
"type": "pickString"
},
{
"default": "v4.8",
"description": "Which Core Target Framework Version?",
"id": "TargetFrameworkVersion",
"options": [
"v4.8"
],
"type": "pickString"
},
{
"default": "{UserSecretsId}",
"description": "Which Core User Secrets Id?",
"id": "UserSecretsId",
"type": "promptString"
}
],
"tasks": [ "tasks": [
{ {
"label": "dotnetRunDebug",
"command": "dotnet OI.Metrology.Wafer.Counter.dll", "command": "dotnet OI.Metrology.Wafer.Counter.dll",
"label": "Dotnet Run Debug", "dependsOn": "build",
"problemMatcher": [],
"type": "shell",
"options": { "options": {
"cwd": "${workspaceFolder}/bin/Debug/net8.0" "cwd": "${workspaceFolder}/bin/Debug/net8.0"
}, }
"problemMatcher": [],
"type": "shell"
}, },
{ {
"args": [ "label": "build",
"build"
],
"command": "dotnet", "command": "dotnet",
"label": "Build", "type": "process",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [ "args": [
"build", "build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj" "${workspaceFolder}/OI.Metrology.Wafer.Counter.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Build Tests",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "buildTests",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"test", "build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj" "${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Test Debug",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "testDebug",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"test", "test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj", "${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "testRelease",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"-c", "-c",
"Release" "Release"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Test Release",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Format",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"format", "format",
"--report", "--report",
@ -177,24 +74,27 @@
"--severity", "--severity",
"warn" "warn"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Format",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Format-Whitespace",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"format", "format",
"whitespace" "whitespace"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Format Whitespace",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/OI.Metrology.Wafer.Counter.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"--configuration", "--configuration",
"Release", "Release",
"--runtime", "--runtime",
@ -203,14 +103,17 @@
"-o", "-o",
"D:/web-sites/OI-Metrology/oo-8e5dd137-_______-OI-Metrology-Release/Wafer-Counter" "D:/web-sites/OI-Metrology/oo-8e5dd137-_______-OI-Metrology-Release/Wafer-Counter"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Publish",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "Publish AOT",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"publish", "publish",
"${workspaceFolder}/OI.Metrology.Wafer.Counter.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"--configuration", "--configuration",
"Release", "Release",
"--runtime", "--runtime",
@ -218,269 +121,53 @@
"-p:PublishAot=true", "-p:PublishAot=true",
"/property:GenerateFullPaths=true" "/property:GenerateFullPaths=true"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Publish AOT",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "old-watch",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"watch", "watch",
"run" "run",
"--project",
"${workspaceFolder}/OI.Metrology.Wafer.Counter.csproj"
], ],
"command": "dotnet", "problemMatcher": "$msCompile"
"label": "Old Watch",
"problemMatcher": "$msCompile",
"type": "process"
}, },
{ {
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [ "args": [
"watch", "watch",
"--launch-profile", "--launch-profile",
"http", "http",
"run", "run",
"--project",
"${workspaceFolder}/OI.Metrology.Wafer.Counter.csproj",
"--verbose" "--verbose"
], ],
"command": "dotnet",
"dependsOn": [
"Build"
],
"isBackground": true, "isBackground": true,
"label": "Watch", "dependsOn": [
"build"
],
"problemMatcher": { "problemMatcher": {
"fileLocation": "relative",
"pattern": {
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
"file": 1,
"location": 2,
"severity": 3,
"code": 4,
"message": 5
},
"background": { "background": {
"activeOnStart": true, "activeOnStart": true,
"beginsPattern": "^.*Shutdown requested.*", "beginsPattern": "^.*Shutdown requested.*",
"endsPattern": "^.*Application started.*" "endsPattern": "^.*Application started.*"
},
"fileLocation": "relative",
"pattern": {
"code": 4,
"file": 1,
"location": 2,
"message": 5,
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
"severity": 3
} }
},
"type": "process"
},
{
"command": "echo Assembly Title: ${input:AssemblyTitle} & echo Build Id: ${input:Build.BuildId} & echo Build Reason: ${input:Build.Reason} & echo Repo Id: ${input:Build.Repository.Id} & echo Repo Name: ${input:Build.Repository.Name} & echo Source Version: ${input:Build.SourceVersion} & echo Configuration: ${input:Configuration} & echo Core Version: ${input:CoreVersion} & echo Nuget Source: ${input:NugetSource} & echo Runtime: ${input:Runtime}",
"label": "Echo Check",
"problemMatcher": [],
"type": "shell"
},
{
"command": "dotnet user-secrets init & dotnet user-secrets set BuildNumber ${input:Build.BuildId} & dotnet user-secrets set GitCommit ${input:Build.SourceVersion} & dotnet user-secrets list",
"label": "Server - Safe storage of app secrets",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"build",
"--configuration",
"${input:Configuration}",
"--source",
"${input:NugetSource}"
],
"command": "dotnet",
"label": "App - Build",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"build",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}",
"--source",
"${input:NugetSource}"
],
"command": "dotnet",
"label": "Tests - Build",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"test",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "Tests - Test",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"publish",
"--configuration",
"${input:Configuration}",
"--runtime",
"${input:Runtime}",
"--self-contained"
],
"command": "dotnet",
"label": "App - Publish",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"publish",
"--configuration",
"${input:Configuration}",
"--runtime",
"${input:Runtime}",
"-p:PublishAot=true"
],
"command": "dotnet",
"label": "App - AOT Publish",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"command": "(robocopy /MIR \"bin/${input:Configuration}/${input:CoreVersion}/${input:Runtime}/publish\" \"D:/${input:CoreVersion}/${input:Runtime}/${input:Build.Repository.Name}/${input:Configuration}/${input:Build.BuildId}/${input:AssemblyTitle}\") ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Copy Files to: D:/",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"tool",
"restore"
],
"command": "dotnet",
"label": "Tool Restore",
"problemMatcher": [],
"type": "process"
},
{
"args": [
"ReportGenerator",
"-reports:${input:System.DefaultWorkingDirectory}/TestResults/**/coverage.cobertura.xml",
"-targetDir:${input:Build.ArtifactStagingDirectory}/Coverage",
"-reportTypes:Html_Dark"
],
"command": "dotnet",
"label": "Report Generator",
"problemMatcher": [],
"type": "process"
},
{
"args": [
"clean",
"${workspaceFolder}/../Tests/OI.Metrology.Tests.csproj",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "Tests - Clean",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"args": [
"clean",
"--configuration",
"${input:Configuration}"
],
"command": "dotnet",
"label": "App - Clean",
"problemMatcher": "$msCompile",
"type": "process"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe stop apppool /apppool.name:${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Stop Pool",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe stop site /site.name:${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Stop Website",
"problemMatcher": [],
"type": "shell"
},
{
"command": "rmdir D:/web-sites/${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Remove MKLink",
"problemMatcher": [],
"type": "shell"
},
{
"command": "mklink /J \"D:\\web-sites\\${input:AssemblyTitle}.${input:Configuration}\" \"D:\\$(CoreVersion)\\$(Runtime)\\$(Build.Repository.Name)\\$(Configuration)\\$(Build.BuildId)\\$(AssemblyTitle)\"",
"label": "Create MKLink",
"problemMatcher": [],
"type": "shell"
},
{
"command": "mkdir D:/web-sites/${input:AssemblyTitle}.${input:Configuration}/${input:AssemblyTitle}.${input:Configuration} & exit 0",
"label": "Make Directory",
"problemMatcher": [],
"type": "shell"
},
{
"command": "(robocopy /E /IS /IT /IM \"%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)\" \"D:/$(CoreVersion)/$(Runtime)/$(Build.Repository.Name)/$(Configuration)/$(Build.BuildId)/$(AssemblyTitle)\" secrets.json) ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Replace User Secrets Id File",
"problemMatcher": [],
"type": "shell"
},
{
"command": "(robocopy /E /IS /IT /IM \"%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)\" \"D:/$(CoreVersion)/$(Runtime)/$(Build.Repository.Name)/$(Configuration)/$(Build.BuildId)/$(AssemblyTitle)\" web.config) ^& IF %ERRORLEVEL% LEQ 7 exit 0",
"label": "Replace Web Configuration File",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe start apppool /apppool.name:${input:AssemblyTitle}.${input:Configuration}",
"label": "Start Pool",
"problemMatcher": [],
"type": "shell"
},
{
"command": "C:/Windows/system32/inetsrv/appcmd.exe start site /site.name:${input:AssemblyTitle}.${input:Configuration}",
"label": "Start Website",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"App - AOT Publish",
"Tool Restore",
"Report Generator"
],
"command": "echo",
"dependsOn": [
"Echo Check",
"Server - Safe storage of app secrets",
"App - Build",
"Tests - Build",
"Tests - Test",
"App - Publish",
"Copy Files to: D:/",
"Tests - Clean",
"App - Clean",
"Stop Pool",
"Stop Website",
"Remove MKLink",
"Create MKLink",
"Make Directory",
"Replace User Secrets Id File",
"Replace Web Configuration File",
"Start Pool",
"Start Website"
],
"dependsOrder": "sequence",
"label": "Pipeline",
"problemMatcher": [],
"type": "shell"
} }
], }
"version": "2.0.0" ]
} }

View File

@ -0,0 +1,26 @@
using Microsoft.AspNetCore.Mvc;
using OI.Metrology.Shared.Models;
using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Wafer.Counter.Helper;
namespace OI.Metrology.Wafer.Counter.ApiControllers;
[Route("api/v1/ado")]
public class AzureDevOpsController : Controller, IAzureDevOpsController<IResult>
{
private readonly IAzureDevOpsRepository _AzureDevOpsRepository;
public AzureDevOpsController(IAzureDevOpsRepository azureDevOpsRepository) =>
_AzureDevOpsRepository = azureDevOpsRepository;
[HttpPost("save")]
public IResult Save()
{
PollValue? pollValue = ParameterHelper.GetPollValue(Request.HttpContext.Connection?.RemoteIpAddress, Request.Body);
ArgumentNullException.ThrowIfNull(pollValue);
_AzureDevOpsRepository.Save(pollValue);
return Results.Ok();
}
}

View File

@ -2,7 +2,6 @@ using OI.Metrology.Shared.Models;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Net; using System.Net;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization;
using System.Web; using System.Web;
namespace OI.Metrology.Wafer.Counter.Helper; namespace OI.Metrology.Wafer.Counter.Helper;
@ -30,9 +29,7 @@ public class ParameterHelper
{ {
CharacterizationParameters? result; CharacterizationParameters? result;
Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(queryString); Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(queryString);
#pragma warning disable CS8620 string json = JsonSerializer.Serialize(keyValuePairs, new JsonSerializerOptions() { WriteIndented = true });
string json = JsonSerializer.Serialize(keyValuePairs, DictionaryStringStringSourceGenerationContext.Default.DictionaryStringString);
#pragma warning restore CS8620
result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, CharacterizationParametersSourceGenerationContext.Default.CharacterizationParameters); result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, CharacterizationParametersSourceGenerationContext.Default.CharacterizationParameters);
return result; return result;
} }
@ -71,9 +68,7 @@ public class ParameterHelper
PollValue? result; PollValue? result;
string? queryString = GetQueryString(stream); string? queryString = GetQueryString(stream);
Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(queryString); Dictionary<string, string?> keyValuePairs = GetKeyValuePairs(queryString);
#pragma warning disable CS8620 string json = JsonSerializer.Serialize(keyValuePairs, new JsonSerializerOptions() { WriteIndented = true });
string json = JsonSerializer.Serialize(keyValuePairs, DictionaryStringStringSourceGenerationContext.Default.DictionaryStringString);
#pragma warning restore CS8620
result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, PollValueSourceGenerationContext.Default.PollValue); result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, PollValueSourceGenerationContext.Default.PollValue);
if (result is not null) if (result is not null)
{ {
@ -85,9 +80,3 @@ public class ParameterHelper
} }
} }
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Dictionary<string, string>))]
public partial class DictionaryStringStringSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -3,7 +3,8 @@ using System.Text.Json.Serialization;
namespace OI.Metrology.Wafer.Counter.Models; namespace OI.Metrology.Wafer.Counter.Models;
public record AppSettings(string BuildNumber, public record AppSettings(string AzureDevOpsDestinationDirectory,
string BuildNumber,
string Company, string Company,
string EcCharacterizationSi, string EcCharacterizationSi,
string EcMesaFileShareCharacterizationSi, string EcMesaFileShareCharacterizationSi,
@ -36,7 +37,7 @@ public record AppSettings(string BuildNumber,
public static AppSettings Get(IConfigurationRoot configurationRoot) public static AppSettings Get(IConfigurationRoot configurationRoot)
{ {
AppSettings result; AppSettings result;
AppSettings? appSettings = configurationRoot.Get<AppSettings>(); AppSettings? appSettings = configurationRoot.GetSection(nameof(AppSettings)).Get<AppSettings>();
#pragma warning restore IL3050, IL2026 #pragma warning restore IL3050, IL2026
if (appSettings is null if (appSettings is null
|| appSettings?.Company is null) || appSettings?.Company is null)
@ -52,7 +53,8 @@ public record AppSettings(string BuildNumber,
} }
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
} }
result = new(appSettings.BuildNumber, result = new(appSettings.AzureDevOpsDestinationDirectory,
appSettings.BuildNumber,
appSettings.Company, appSettings.Company,
appSettings.EcCharacterizationSi, appSettings.EcCharacterizationSi,
appSettings.EcMesaFileShareCharacterizationSi, appSettings.EcMesaFileShareCharacterizationSi,

View File

@ -27,6 +27,7 @@ public class Program
_ = webApplicationBuilder.Services.AddHttpClient(); _ = webApplicationBuilder.Services.AddHttpClient();
_ = webApplicationBuilder.Services.AddSingleton(_ => appSettings); _ = webApplicationBuilder.Services.AddSingleton(_ => appSettings);
_ = webApplicationBuilder.Services.AddSingleton<IFileShareRepository, FileShareRepository>(); _ = webApplicationBuilder.Services.AddSingleton<IFileShareRepository, FileShareRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IAzureDevOpsRepository, AzureDevOpsRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IWaferCounterRepository, WaferCounterRepository>(); _ = webApplicationBuilder.Services.AddSingleton<IWaferCounterRepository, WaferCounterRepository>();
_ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository<AppSettings>>(_ => appSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton<IAppSettingsRepository<AppSettings>>(_ => appSettingsRepository);

View File

@ -0,0 +1,25 @@
using OI.Metrology.Shared.Models;
using OI.Metrology.Shared.Models.Stateless;
using OI.Metrology.Wafer.Counter.Models;
namespace OI.Metrology.Wafer.Counter.Repository;
public class AzureDevOpsRepository : IAzureDevOpsRepository
{
private readonly AppSettings _AppSettings;
public AzureDevOpsRepository(AppSettings appSettings) =>
_AppSettings = appSettings;
void IAzureDevOpsRepository.Save(PollValue pollValue)
{
ArgumentNullException.ThrowIfNull(pollValue.Id);
ArgumentNullException.ThrowIfNull(pollValue.Page);
string directory = Path.Combine(_AppSettings.AzureDevOpsDestinationDirectory, pollValue.Page, pollValue.Id.Value.ToString());
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
File.WriteAllText(Path.Combine(directory, $"{pollValue.Time}.json"), pollValue.Json is null ? string.Empty : pollValue.Json);
}
}

View File

@ -107,7 +107,7 @@ public class FileShareRepository : IFileShareRepository
private static ReadOnlyCollection<string> GetValidDirectories(string equipmentDirectory, DateTime startDateTime, DateTime endDateTime) private static ReadOnlyCollection<string> GetValidDirectories(string equipmentDirectory, DateTime startDateTime, DateTime endDateTime)
{ {
List<string> results = [equipmentDirectory]; List<string> results = [];
DateTime dateTime; DateTime dateTime;
string weekOfYear; string weekOfYear;
Calendar calendar = new CultureInfo("en-US").Calendar; Calendar calendar = new CultureInfo("en-US").Calendar;

View File

@ -1,199 +0,0 @@
trigger:
branches:
include:
- master
paths:
include:
- Wafer-Counter
variables:
runtime: 'win-x64'
coreVersion: 'net8.0'
nugetSource: 'https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/'
stages:
- stage: Development
displayName: Development
pool:
name: 'OpenInsight Metrology Viewer'
demands: OpenInsight-Metrology-Viewer-Wafer-Counter-Development
variables:
ASPNETCORE_ENVIRONMENT: 'Development'
assemblyTitle: 'OI.Metrology.Wafer.Counter'
configuration: 'Debug'
userSecretsId: '2a0acd34-8f61-47a3-8818-73fa8fe04902'
jobs:
- job: DebugDotnet
steps:
- script: |
echo Assembly Title: $(AssemblyTitle)
echo Build Id: $(Build.BuildId)
echo Build Reason: $(Build.Reason)
echo Repo Id: $(Build.Repository.Id)
echo Repo Name: $(Build.Repository.Name)
echo Source Version: $(Build.SourceVersion)
echo Configuration: $(Configuration)
echo Core Version: $(CoreVersion)
echo Nuget Source: $(NugetSource)
echo Runtime: $(Runtime)
echo UserSecretsId: $(UserSecretsId)
displayName: 'Echo Check'
- script: |
dotnet user-secrets init
dotnet user-secrets set BuildNumber $(Build.BuildId)
dotnet user-secrets set GitCommit $(Build.SourceVersion)
dotnet user-secrets list
workingDirectory: Wafer-Counter
displayName: 'App - Safe storage of app secrets'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Wafer-Counter
displayName: 'App - Build'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Tests
displayName: 'Tests - Build'
- script: dotnet test --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Test'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained
workingDirectory: Wafer-Counter
displayName: 'App - Publish'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true
workingDirectory: Wafer-Counter
displayName: 'App - AOT Publish'
enabled: false
- task: CopyFiles@2
displayName: 'Copy Files to: D:\'
inputs:
Contents: '*'
SourceFolder: 'Wafer-Counter\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish'
TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)'
OverWrite: true
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Clean'
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Wafer-Counter
displayName: 'App - Clean'
- script: C:/Windows/system32/inetsrv/appcmd.exe stop apppool /apppool.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Wafer-Counter
displayName: 'Stop Pool'
continueOnError: true
- script: C:/Windows/system32/inetsrv/appcmd.exe stop site /site.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Wafer-Counter
displayName: 'Stop Website'
continueOnError: true
- script: rmdir "D:\web-sites\$(AssemblyTitle).$(Configuration)"
workingDirectory: Wafer-Counter
displayName: 'Remove MKLink'
continueOnError: true
- script: mklink /J "D:\web-sites\$(AssemblyTitle).$(Configuration)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)"
workingDirectory: Wafer-Counter
displayName: 'Create MKLink'
- script: mkdir "D:\web-sites\$(AssemblyTitle).$(Configuration)\$(AssemblyTitle).$(Configuration)"
workingDirectory: Wafer-Counter
displayName: 'Make Directory'
continueOnError: true
- script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" secrets.json) ^& IF %ERRORLEVEL% LEQ 7 exit 0
workingDirectory: Wafer-Counter
displayName: 'Replace User Secrets Id File'
- script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" web.config) ^& IF %ERRORLEVEL% LEQ 7 exit 0
workingDirectory: Wafer-Counter
displayName: 'Replace Web Configuration File'
- script: C:/Windows/system32/inetsrv/appcmd.exe start apppool /apppool.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Wafer-Counter
displayName: 'Start Pool'
- script: C:/Windows/system32/inetsrv/appcmd.exe start site /site.name:$(AssemblyTitle).$(Configuration)
workingDirectory: Wafer-Counter
displayName: 'Start Website'
- stage: Release
displayName: Release
pool:
name: 'OpenInsight Metrology Viewer'
demands: OpenInsight-Metrology-Viewer-Wafer-Counter
variables:
ASPNETCORE_ENVIRONMENT: 'Production'
assemblyTitle: 'OI.Metrology.Wafer.Counter'
configuration: 'Release'
jobs:
- job: ReleaseDotnet
steps:
- script: |
echo Assembly Title: $(AssemblyTitle)
echo Build Id: $(Build.BuildId)
echo Build Reason: $(Build.Reason)
echo Repo Id: $(Build.Repository.Id)
echo Repo Name: $(Build.Repository.Name)
echo Source Version: $(Build.SourceVersion)
echo Configuration: $(Configuration)
echo Core Version: $(CoreVersion)
echo Nuget Source: $(NugetSource)
echo Runtime: $(Runtime)
displayName: 'Echo Check'
- script: |
dotnet user-secrets init
dotnet user-secrets set BuildNumber $(Build.BuildId)
dotnet user-secrets set GitCommit $(Build.SourceVersion)
dotnet user-secrets list
workingDirectory: Wafer-Counter
displayName: 'App - Safe storage of app secrets'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Wafer-Counter
displayName: 'App - Build'
- script: dotnet build --configuration $(Configuration) --source $(NugetSource)
workingDirectory: Tests
displayName: 'Tests - Build'
- script: dotnet test --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Test'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained
workingDirectory: Wafer-Counter
displayName: 'App - Publish'
- script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true
workingDirectory: Wafer-Counter
displayName: 'App - AOT Publish'
enabled: false
- task: CopyFiles@2
displayName: 'Copy Files to: D:\'
inputs:
Contents: '*'
SourceFolder: 'Wafer-Counter\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish'
TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)'
OverWrite: true
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Tests
displayName: 'Tests - Clean'
- script: dotnet clean --configuration $(Configuration)
workingDirectory: Wafer-Counter
displayName: 'App - Clean'
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
displayName: 'Force Fail'
enabled: false