Skip to content

Feature/pc latency diagnostics #470

New issue

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

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

Already on GitHub? Sign in to your account

Open
wants to merge 48 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
116cc02
[PresentMon][Provider] Fix for 32bit apps (#72)
wdebkows-intel Nov 29, 2024
8471563
Changes to enable Trace Logging and add in support for tracking PC La…
markgalvan-intel Feb 11, 2025
26f52e1
Removed items used for debugging
markgalvan-intel Feb 12, 2025
d89bfb5
Added support for PCL dropped frames. Also cleaned up metrics gatheri…
markgalvan-intel Feb 13, 2025
c598328
Added Reflex Stats support
markgalvan-intel Feb 13, 2025
c018d42
Updated CSVs to include PCLatency. All ULTs passing. Minor variable u…
markgalvan-intel Feb 14, 2025
697c854
Updated target block list to include the IDSA application.
markgalvan-intel Feb 14, 2025
0c13f33
Missed the command line help file change for pc latency. Also updated…
markgalvan-intel Feb 15, 2025
d2a3886
PCL logging changes
planetchili Feb 27, 2025
8f5c629
refactor ema calc
planetchili Feb 27, 2025
a05db15
remove extraneous returns
planetchili Feb 27, 2025
475a5b2
Updated EMA code. Removed invalid debug asserts. Added in control flo…
markgalvan-intel Mar 4, 2025
744a728
Update for Animation Error and Animation Time
markgalvan-intel Mar 7, 2025
d363ca8
Changes to enable Trace Logging and add in support for tracking PC La…
markgalvan-intel Feb 11, 2025
41cdadd
Removed items used for debugging
markgalvan-intel Feb 12, 2025
2757d4f
Added support for PCL dropped frames. Also cleaned up metrics gatheri…
markgalvan-intel Feb 13, 2025
cf61128
Added Reflex Stats support
markgalvan-intel Feb 13, 2025
0914a2a
Updated CSVs to include PCLatency. All ULTs passing. Minor variable u…
markgalvan-intel Feb 14, 2025
964480a
Updated target block list to include the IDSA application.
markgalvan-intel Feb 14, 2025
c95d12a
Missed the command line help file change for pc latency. Also updated…
markgalvan-intel Feb 15, 2025
eacca8f
PCL logging changes
planetchili Feb 27, 2025
5fb0472
refactor ema calc
planetchili Feb 27, 2025
648edb7
remove extraneous returns
planetchili Feb 27, 2025
ba793ba
Updated EMA code. Removed invalid debug asserts. Added in control flo…
markgalvan-intel Mar 4, 2025
29c49d5
Update for Animation Error and Animation Time
markgalvan-intel Mar 7, 2025
aa2ff4d
Various MsBetweenSimulationStart and MsPCLatency fixes
markgalvan-intel May 22, 2025
a78664d
Fixed column mismatch and added additional logic to PCLatency calcula…
markgalvan-intel May 22, 2025
fb3c774
Fixed ETL test build error and enabled PC Latency on overlay
markgalvan-intel May 22, 2025
79bdec8
Enable tracking of PC Latency in mock pm session
markgalvan-intel May 23, 2025
4a2c77d
Enable correct printing of pcl frame id
markgalvan-intel May 23, 2025
70db6d4
Added in msBetweenSimulationStarts and fixed bug in PCLatency
markgalvan-intel May 23, 2025
e608511
Adjusted count decimal function to ignore trailing zeros
markgalvan-intel Jun 3, 2025
504f448
Adding in new PCL etl test
markgalvan-intel Jun 3, 2025
25936dc
Added PCL support
markgalvan-intel Jun 3, 2025
b4ea134
Consistent selection for pcl and app provided events
markgalvan-intel Jun 9, 2025
d2038ce
Added additional logic for PCL
markgalvan-intel Jun 10, 2025
6189865
Updated PCL data and Present attachment point
markgalvan-intel Jun 12, 2025
32b7d08
Added new pcl test and fix for pcl animation error
markgalvan-intel Jun 12, 2025
0e37cbe
Merge remote-tracking branch 'public-gtd/feature/pc-latency-diagnosti…
markgalvan-intel Jun 12, 2025
78c9d34
Merge branch 'main' into feature/pc-latency-diagnostics
markgalvan-intel Jun 13, 2025
6849638
Added in FrameDelay metric.
markgalvan-intel Jun 24, 2025
cab947f
Merge remote-tracking branch 'public-gtd/main' into feature/pc-latenc…
markgalvan-intel Jun 24, 2025
e00d256
Updating frame timing data structure and added pruning of old data
markgalvan-intel Jun 24, 2025
176347c
Merge branch 'main' into feature/pc-latency-diagnostics
markgalvan-intel Jul 3, 2025
62ee134
Merge branch 'main' into feature/pc-latency-diagnostics
planetchili Jul 4, 2025
2bee0a8
reducing warnings in production build
planetchili Jul 8, 2025
f595412
Merge branch 'fix/opm-win32-build' into feature/pc-latency-diagnostics
planetchili Jul 8, 2025
37d144a
fixing botched git merge
planetchili Jul 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ETLTrimmer/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,8 @@ int main(int argc, const char** argv)
traceConsumer.mTrackGPUVideo = true; // ... GPU video work (separately from non-video GPU work).
traceConsumer.mTrackInput = true; // ... keyboard/mouse latency.
traceConsumer.mTrackFrameType = true; // ... the frame type communicated through the Intel-PresentMon provider.
traceConsumer.mTrackAppTiming = true; // ... app timing data communicated through the Intel-PresentMon provider.
traceConsumer.mTrackPcLatency = true; // ... Nvidia PCL stats.
EnableProvidersListing(0, nullptr, &traceConsumer, true, true, pFilter);
}

Expand Down
4 changes: 2 additions & 2 deletions IntelPresentMon/AppCef/CefNano.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>Cef\Lib\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libcef.lib;libcef_dll_wrapper.lib;Dwrite.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>libcef.lib;libcef_dll_wrapper.lib;Dwrite.lib;shcore.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Message>Executing Post Build</Message>
Expand Down Expand Up @@ -200,7 +200,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>Cef\Lib\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libcef.lib;libcef_dll_wrapper.lib;Dwrite.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>libcef.lib;libcef_dll_wrapper.lib;Dwrite.lib;shcore.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Message>Executing Post Build</Message>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ bethesdanethelper.exe
bethesdanetlauncher.exe
blend.exe
blender.exe
bootstrapperui_v2.exe
bsglauncher.exe
calculator.exe
calculatorapp.exe
Expand Down
16 changes: 10 additions & 6 deletions IntelPresentMon/CommonUtilities/CommonUtilities.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -216,20 +216,22 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>..\..\build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
<IntDir>..\..\build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)build\lib\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>..\..\build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
<IntDir>..\..\build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)build\lib\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\obj\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<CustomBuildBeforeTargets>
</CustomBuildBeforeTargets>
<OutDir>$(SolutionDir)build\lib\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<CustomBuildBeforeTargets>
</CustomBuildBeforeTargets>
<OutDir>$(SolutionDir)build\lib\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Label="Vcpkg" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
Expand Down Expand Up @@ -294,7 +296,8 @@
</Outputs>
</CustomBuildStep>
<Lib>
<AdditionalDependencies>shcore.lib</AdditionalDependencies>
<AdditionalDependencies>
</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
Expand Down Expand Up @@ -327,7 +330,8 @@
</Outputs>
</CustomBuildStep>
<Lib>
<AdditionalDependencies>shcore.lib</AdditionalDependencies>
<AdditionalDependencies>
</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,6 @@
<ClInclude Include="log\TimePoint.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Math.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="log\Subsystem.h">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -234,6 +231,9 @@
<ClInclude Include="ref\GeneratedReflectionHelpers.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Math.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="win\MessageBox.h">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down Expand Up @@ -395,6 +395,9 @@
<ClCompile Include="win\ProcessMapBuilder.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Math.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="vcpkg.json" />
Expand Down
6 changes: 6 additions & 0 deletions IntelPresentMon/CommonUtilities/Math.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once
#include <cmath>
#include <limits>
#include <algorithm>

namespace pmon::util
{
Expand Down Expand Up @@ -53,4 +54,9 @@ namespace pmon::util
const auto conversionFactor = srcFactor / dstFactor;
return To(fromExtended * conversionFactor);
}
template<typename T>
T CalculateEma(T prevEma, T newSample, T alpha)
{
return prevEma + alpha * (newSample - prevEma);
}
}
4 changes: 4 additions & 0 deletions IntelPresentMon/CommonUtilities/Meta.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

namespace pmon::util
{
// Helper: dependent_false for static_assert in templates.
template<typename T>
struct dependent_false : std::false_type {};

// deconstruct member pointer into the object type the pointer works with and the member type
template <typename T> struct MemberPointerInfo;
template <typename S, typename M>
Expand Down
2 changes: 2 additions & 0 deletions IntelPresentMon/Core/source/pmon/RawFrameDataMetricList.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,12 @@ namespace p2c::pmon
Element{.metricId = PM_METRIC_GPU_BUSY, .deviceId = 0 },
Element{.metricId = PM_METRIC_GPU_WAIT, .deviceId = 0 },
Element{.metricId = PM_METRIC_ANIMATION_ERROR, .deviceId = 0 },
Element{.metricId = PM_METRIC_FLIP_DELAY, .deviceId = 0 },
Element{.metricId = PM_METRIC_ANIMATION_TIME, .deviceId = 0 },
Element{.metricId = PM_METRIC_ALL_INPUT_TO_PHOTON_LATENCY, .deviceId = 0 },
Element{.metricId = PM_METRIC_CLICK_TO_PHOTON_LATENCY, .deviceId = 0 },
Element{.metricId = PM_METRIC_INSTRUMENTED_LATENCY, .deviceId = 0 },
Element{.metricId = PM_METRIC_PC_LATENCY, .deviceId = 0 },

Element{.metricId = PM_METRIC_GPU_POWER, .deviceId = activeDeviceId },
Element{.metricId = PM_METRIC_GPU_VOLTAGE, .deviceId = activeDeviceId },
Expand Down
2 changes: 2 additions & 0 deletions IntelPresentMon/Core/source/win/HotkeyListener.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include <CommonUtilities/Exception.h>
#include <CommonUtilities/ref/WrapReflect.h>
#include <ranges>
// disable faulty warnings on lock
#pragma warning(disable: 26117 26110)

namespace rn = std::ranges;
namespace vi = rn::views;
Expand Down
1 change: 1 addition & 0 deletions IntelPresentMon/Interprocess/source/metadata/MetricList.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,4 @@
X_(PM_METRIC_DISPLAYED_FRAME_TIME, PM_METRIC_TYPE_DYNAMIC, PM_UNIT_MILLISECONDS, PM_DATA_TYPE_DOUBLE, PM_DATA_TYPE_DOUBLE, 0, PM_DEVICE_TYPE_INDEPENDENT, FULL_STATS) \
X_(PM_METRIC_PRESENTED_FRAME_TIME, PM_METRIC_TYPE_DYNAMIC, PM_UNIT_MILLISECONDS, PM_DATA_TYPE_DOUBLE, PM_DATA_TYPE_DOUBLE, 0, PM_DEVICE_TYPE_INDEPENDENT, FULL_STATS) \
X_(PM_METRIC_BETWEEN_APP_START, PM_METRIC_TYPE_FRAME_EVENT, PM_UNIT_MILLISECONDS, PM_DATA_TYPE_DOUBLE, PM_DATA_TYPE_DOUBLE, 0, PM_DEVICE_TYPE_INDEPENDENT, FULL_STATS) \
X_(PM_METRIC_FLIP_DELAY, PM_METRIC_TYPE_FRAME_EVENT, PM_UNIT_MILLISECONDS, PM_DATA_TYPE_DOUBLE, PM_DATA_TYPE_DOUBLE, 0, PM_DEVICE_TYPE_INDEPENDENT, FULL_STATS) \
1 change: 1 addition & 0 deletions IntelPresentMon/PresentMonAPI2/PresentMonAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ extern "C" {
PM_METRIC_DISPLAYED_FRAME_TIME,
PM_METRIC_BETWEEN_APP_START,
PM_METRIC_PRESENTED_FRAME_TIME,
PM_METRIC_FLIP_DELAY,
};

enum PM_METRIC_TYPE
Expand Down
54 changes: 33 additions & 21 deletions IntelPresentMon/PresentMonAPI2Tests/CsvHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,18 +306,22 @@ void CharConvert<T>::Convert(const std::string data, T& convertedData, Header co
}

size_t countDecimalPlaces(double value) {
// Convert double to string
std::string str = std::to_string(value);
auto dotPos = str.find('.');
if (dotPos == std::string::npos) return 0;

char const* a = str.c_str();
// Get the decimal part
std::string decimals = str.substr(dotPos + 1);

double testNumber = 0.0;
double goldNumber = 0.0;
int testSucceededCount = sscanf_s(a, "%lf", &testNumber);
// Remove trailing zeros
decimals.erase(decimals.find_last_not_of('0') + 1);

const char* testDecimalAddr = strchr(a, '.');
size_t testDecimalNumbersCount = testDecimalAddr == nullptr ? 0 : ((a + strlen(a)) - testDecimalAddr - 1);
return testDecimalNumbersCount;
// Count non-zero decimal digits
size_t count = 0;
for (char c : decimals) {
if (c != '0') ++count;
}
return count;
}

template<typename T>
Expand Down Expand Up @@ -357,7 +361,7 @@ std::optional<std::ofstream> CreateCsvFile(std::string& output_dir, std::string&
",MsBetweenDisplayChange,MsInPresent,MsRenderPresentLatency"
",MsUntilDisplayed,MsPCLatency,CPUStartQPC,MsBetweenAppStart"
",MsCPUBusy,MsCPUWait,MsGPULatency,MsGPUTime,MsGPUBusy,MsGPUWait"
",MsVideoBusy,MsAnimationError,AnimationTime,MsAllInputToPhotonLatency"
",MsVideoBusy,MsAnimationError,AnimationTime,MsFlipDelay,MsAllInputToPhotonLatency"
",MsClickToPhotonLatency,MsInstrumentedLatency";
csvFile << std::endl;
return csvFile;
Expand Down Expand Up @@ -416,7 +420,7 @@ std::string TranslateFrameType(PM_FRAME_TYPE frameType) {
}

void WriteToCSV(std::optional<std::ofstream>& debugCsvFile, const std::string& processName, const unsigned int& processId,
PM_QUERY_ELEMENT(&queryElements)[28], pmapi::BlobContainer& blobs)
PM_QUERY_ELEMENT(&queryElements)[29], pmapi::BlobContainer& blobs)
{

if (!debugCsvFile.has_value()) {
Expand Down Expand Up @@ -449,9 +453,10 @@ void WriteToCSV(std::optional<std::ofstream>& debugCsvFile, const std::string& p
const auto msGpuWait = *reinterpret_cast<const double*>(&pBlob[queryElements[22].dataOffset]);
const auto msAnimationError = *reinterpret_cast<const double*>(&pBlob[queryElements[23].dataOffset]);
const auto animationTime = *reinterpret_cast<const double*>(&pBlob[queryElements[24].dataOffset]);
const auto msAllInputToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[25].dataOffset]);
const auto msClickToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[26].dataOffset]);
const auto msInstrumentedLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[27].dataOffset]);
const auto msFlipDelay = *reinterpret_cast<const double*>(&pBlob[queryElements[25].dataOffset]);
const auto msAllInputToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[26].dataOffset]);
const auto msClickToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[27].dataOffset]);
const auto msInstrumentedLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[28].dataOffset]);
*debugCsvFile << processName << ",";
*debugCsvFile << processId << ",";
*debugCsvFile << std::hex << "0x" << std::dec << swapChain << ",";
Expand Down Expand Up @@ -480,6 +485,7 @@ void WriteToCSV(std::optional<std::ofstream>& debugCsvFile, const std::string& p
*debugCsvFile << 0 << ",";
*debugCsvFile << msAnimationError << ",";
*debugCsvFile << animationTime << ",";
*debugCsvFile << msFlipDelay << ",";
*debugCsvFile << msAllInputToPhotonLatency << ",";
*debugCsvFile << msClickToPhotonLatency << ",";
*debugCsvFile << msInstrumentedLatency << std::endl;
Expand All @@ -497,7 +503,7 @@ class CsvParser {
bool Open(std::wstring const& path, uint32_t processId);
void Close();
bool VerifyBlobAgainstCsv(const std::string& processName, const unsigned int& processId,
PM_QUERY_ELEMENT(&queryElements)[28], pmapi::BlobContainer& blobs, std::optional<std::ofstream>& debugCsvFile);
PM_QUERY_ELEMENT(&queryElements)[29], pmapi::BlobContainer& blobs, std::optional<std::ofstream>& debugCsvFile);
bool ResetCsv();

private:
Expand Down Expand Up @@ -526,7 +532,7 @@ CsvParser::CsvParser()
{}

bool CsvParser::VerifyBlobAgainstCsv(const std::string& processName, const unsigned int& processId,
PM_QUERY_ELEMENT(&queryElements)[28], pmapi::BlobContainer& blobs, std::optional<std::ofstream>& debugCsvFile)
PM_QUERY_ELEMENT(&queryElements)[29], pmapi::BlobContainer& blobs, std::optional<std::ofstream>& debugCsvFile)
{
if (debugCsvFile.has_value()) {
WriteToCSV(debugCsvFile, processName, processId, queryElements, blobs);
Expand Down Expand Up @@ -559,11 +565,10 @@ bool CsvParser::VerifyBlobAgainstCsv(const std::string& processName, const unsig
const auto msGpuWait = *reinterpret_cast<const double*>(&pBlob[queryElements[22].dataOffset]);
const auto msAnimationError = *reinterpret_cast<const double*>(&pBlob[queryElements[23].dataOffset]);
const auto animationTime = *reinterpret_cast<const double*>(&pBlob[queryElements[24].dataOffset]);
const auto msAllInputToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[25].dataOffset]);
const auto msClickToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[26].dataOffset]);
const auto msInstrumentedLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[27].dataOffset]);


const auto msFrameDelay = *reinterpret_cast<const double*>(&pBlob[queryElements[25].dataOffset]);
const auto msAllInputToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[26].dataOffset]);
const auto msClickToPhotonLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[27].dataOffset]);
const auto msInstrumentedLatency = *reinterpret_cast<const double*>(&pBlob[queryElements[28].dataOffset]);

// Read rows until we find one with the process we are interested in
// or we are out of data.
Expand Down Expand Up @@ -689,6 +694,9 @@ bool CsvParser::VerifyBlobAgainstCsv(const std::string& processName, const unsig
case Header_MsPCLatency:
if (v2MetricRow_.msPcLatency.has_value()) {
columnsMatch = Validate(v2MetricRow_.msPcLatency.value(), msPcLatency);
if (!columnsMatch) {
OutputDebugStringA("What!?\n");
}
}
else
{
Expand Down Expand Up @@ -780,6 +788,11 @@ bool CsvParser::VerifyBlobAgainstCsv(const std::string& processName, const unsig
columnsMatch = true;
break;
}
if (columnsMatch == false) {
// If the columns do not match, create an error string
// and assert failure.
Assert::Fail(CreateErrorString(pair.second, line_).c_str());
}
Assert::IsTrue(columnsMatch, CreateErrorString(pair.second, line_).c_str());
}
}
Expand Down Expand Up @@ -1185,7 +1198,6 @@ void CsvParser::ConvertToMetricDataType(const char* data, Header columnId)
}
}
break;

default:
Assert::Fail(CreateErrorString(UnknownHeader, line_).c_str());
}
Expand Down
Loading