Merge branch 'master' into feature/AnonymousTypeTests

This commit is contained in:
Quajak 2020-10-01 14:24:20 +02:00 committed by GitHub
commit dcff090d15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 90 additions and 75 deletions

View file

@ -216,7 +216,7 @@ namespace Cosmos.TestRunner.Core
"EnableDebug:True",
"EnableStackCorruptionDetection:" + EnableStackCorruptionChecks,
"StackCorruptionDetectionLevel:" + StackCorruptionDetectionLevel,
"DebugMode:Source",
"DebugMode:" + DebugMode,
"TraceAssemblies:" + TraceAssembliesLevel,
"DebugCom:1",
"TargetAssembly:" + kernelFileName,

View file

@ -19,6 +19,7 @@ namespace Cosmos.TestRunner.Core
protected TraceAssemblies TraceAssembliesLevel => mConfiguration.TraceAssembliesLevel;
protected bool EnableStackCorruptionChecks => mConfiguration.EnableStackCorruptionChecks;
protected StackCorruptionDetectionLevel StackCorruptionDetectionLevel => mConfiguration.StackCorruptionDetectionLevel;
protected DebugMode DebugMode => mConfiguration.DebugMode;
protected bool RunWithGDB => mConfiguration.RunWithGDB;
protected bool StartBochsDebugGui => mConfiguration.StartBochsDebugGUI;

View file

@ -28,6 +28,7 @@ namespace Cosmos.TestRunner.Core
TraceAssemblies TraceAssembliesLevel { get; }
bool EnableStackCorruptionChecks { get; }
StackCorruptionDetectionLevel StackCorruptionDetectionLevel { get; }
DebugMode DebugMode { get; }
/// <summary>
/// An enumerable of kernel assemblies which will be run.

View file

@ -28,6 +28,7 @@ namespace Cosmos.TestRunner.Full
public virtual TraceAssemblies TraceAssembliesLevel => TraceAssemblies.User;
public virtual bool EnableStackCorruptionChecks => true;
public virtual StackCorruptionDetectionLevel StackCorruptionDetectionLevel => StackCorruptionDetectionLevel.AllInstructions;
public virtual DebugMode DebugMode => DebugMode.Source;
public virtual IEnumerable<string> KernelAssembliesToRun
{

View file

@ -20,6 +20,7 @@ namespace Cosmos.TestRunner.TestAdapter
public TraceAssemblies TraceAssembliesLevel { get; }
public bool EnableStackCorruptionChecks { get; }
public StackCorruptionDetectionLevel StackCorruptionDetectionLevel { get; }
public DebugMode DebugMode { get; }
public IEnumerable<string> KernelAssembliesToRun { get; }

View file

@ -97,6 +97,13 @@ namespace Cosmos.TestRunner.UI.ViewModels
set => SetProperty(ref mStackCorruptionDetectionLevel, value);
}
private DebugMode mDebugMode = defaultEngineConfiguration.DebugMode;
public DebugMode DebugMode
{
get => mDebugMode;
set => SetProperty(ref mDebugMode, value);
}
public IEnumerable<string> KernelAssembliesToRun
{
get

View file

@ -1,25 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/netcoreapp2.0/Cosmos.TestRunner.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}

View file

@ -1,42 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Cosmos.TestRunner.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/Cosmos.TestRunner.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"${workspaceFolder}/Cosmos.TestRunner.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}

View file

@ -36,6 +36,14 @@ namespace ProcessorTests
}
}
public void TestBrandStringBlank()
{
string brandString = CPU.GetCPUBrandString();
mDebugger.Send("Brand String: " + brandString);
bool isBrandStringBlank = string.IsNullOrWhiteSpace(brandString);
Assert.IsFalse(isBrandStringBlank, "Processor brand string is blank.");
}
public void TestVendorNameIsNotBlank()
{
string vendorName = CPU.GetCPUVendorName();

View file

@ -110,6 +110,8 @@ namespace Cosmos.Core
return xResult;
}
/// <summary>
/// Get CPU vendor name.
/// </summary>
@ -179,15 +181,15 @@ namespace Cosmos.Core
{
ReadCPUID(0x80000002 + i, ref eax, ref ebx, ref ecx, ref edx);
s += (char)(ebx % 256);
s += (char)((ebx >> 8) % 256);
s += (char)((ebx>> 16) % 256);
s += (char)((ebx >> 24) % 256);
s += (char)((ebx >> 8) % 256);
s += (char)((ebx >> 16) % 256);
s += (char)((ebx >> 24) % 256);
s += (char)(edx % 256);
s += (char)((edx >> 8) % 256);
s += (char)((edx >> 16) % 256);
s += (char)((edx >> 24) % 256);
s += (char)((edx >> 8) % 256);
s += (char)((edx >> 16) % 256);
s += (char)((edx >> 24) % 256);
s += (char)(ecx % 256);
s += (char)((ecx >> 8) % 256);
s += (char)((ecx >> 8) % 256);
s += (char)((ecx >> 16) % 256);
s += (char)((ecx >> 24) % 256);
}
@ -247,6 +249,67 @@ namespace Cosmos.Core
throw new NotSupportedException();
}
/// <summary>
/// Get CPU cycle speed.
/// </summary>
/// <returns>long value.</returns>
/// <exception cref="NotImplementedException">Thrown on fatal error, contact support.</exception>
/// <exception cref="NotSupportedException">Thrown if can not read CPU ID.</exception>
public static string GetCPUBrandString()
{
if (CanReadCPUID() != 0)
{
// See https://c9x.me/x86/html/file_module_x86_id_45.html
int eax = 0;
int ebx = 0;
int ecx = 0;
int edx = 0;
int[] s = new int[64];
string rs = "";
for (uint i = 0; i < 3; i++)
{
ReadCPUID(0x80000002 + i, ref eax, ref ebx, ref ecx, ref edx);
s[(i * 16) + 0] = (eax % 256);
s[(i * 16) + 1] = ((eax >> 8) % 256);
s[(i * 16) + 2] = ((eax >> 16) % 256);
s[(i * 16) + 3] = ((eax >> 24) % 256);
s[(i * 16) + 4] = (ebx % 256);
s[(i * 16) + 5] = ((ebx >> 8) % 256);
s[(i * 16) + 6] = ((ebx >> 16) % 256);
s[(i * 16) + 7] = ((ebx >> 24) % 256);
s[(i * 16) + 8] = (ecx % 256);
s[(i * 16) + 9] = ((ecx >> 8) % 256);
s[(i * 16) + 10] = ((ecx >> 16) % 256);
s[(i * 16) + 11] = ((ecx >> 24) % 256);
s[(i * 16) + 12] = (edx % 256);
s[(i * 16) + 13] = ((edx >> 8) % 256);
s[(i * 16) + 14] = ((edx >> 16) % 256);
s[(i * 16) + 15] = ((edx >> 24) % 256);
}
for (int i = 0; i < s.Length; i++)
{
if (s[i] == 0x00)
{
continue;
}
rs += (char)s[i];
}
if (!(rs == ""))
{
return rs;
} else
{
throw new NotSupportedException();
}
}
throw new NotSupportedException();
}
/// <summary>
/// Check if can read CPU ID. Plugged.
/// </summary>