Skip to content

Commit

Permalink
Associated to the issue #85 "LineIDs necessary?", it was concluded af…
Browse files Browse the repository at this point in the history
…ter discussion with Beckhoff support that the files LineIDs.dbg are not necessary to version control. Thus these are removed and added to the gitignore-file.

Solved issue #88 - "Ringbuffer size for ADS-logger should be increased and stored as user parameter".
  • Loading branch information
sagatowski committed Jan 25, 2020
1 parent 1f2da3a commit d90a219
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 13 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -14,6 +14,8 @@
*.project.~u
*.tsproj.bak
*.xti.bak
LineIDs.dbg
LineIDs.dbg.bak
_Boot/
_CompileInfo/
_Libraries/
Expand Down
Expand Up @@ -21,27 +21,27 @@ public FB_TestNumberOfAssertionsCalculation(IEnumerable<ErrorList.Error> errors,

private void TestMixed33SuccessulAnd9FailedAssertions()
{
AssertContainsMessage("| Test status=FAIL, No. of asserts=42", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
AssertContainsMessage("| Test status=FAIL, number of asserts=42", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
}

private void TestWith43SuccessfulAssertions()
{
AssertContainsMessage("| Test status=PASS, No. of asserts=43", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
AssertContainsMessage("| Test status=PASS, number of asserts=43", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
}

private void TestWith44FailedAssertions()
{
AssertContainsMessage("| Test status=FAIL, No. of asserts=44", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
AssertContainsMessage("| Test status=FAIL, number of asserts=44", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
}

private void TestWith45SuccessfulArrayAssertions()
{
AssertContainsMessage("| Test status=PASS, No. of asserts=45", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
AssertContainsMessage("| Test status=PASS, number of asserts=45", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
}

private void TestWith46FailedArrayAssertions()
{
AssertContainsMessage("| Test status=FAIL, No. of asserts=46", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
AssertContainsMessage("| Test status=FAIL, number of asserts=46", EnvDTE80.vsBuildErrorLevel.vsBuildErrorLevelLow);
}

}
Expand Down
Binary file not shown.
6 changes: 6 additions & 0 deletions TcUnit/TcUnit/GVLs/GVL_Param_TcUnit.TcGVL
Expand Up @@ -6,6 +6,12 @@ VAR_GLOBAL CONSTANT
MaxNumberOfTestSuites : UINT := 1000;
MaxNumberOfTestsForEachTestSuite : UINT := 100;
MaxNumberOfAssertsForEachTestSuite : UINT := 1000;
(* This is the maximum number of ADS-messages that can be stored for reporting at the same time.
Having a size of 2000 means that it's possible to report up to ~400 test cases in one single
PLC cycle. Each entry consumes around 500 bytes, so with an example of a ring buffer size of
2000 it means that TcUnit will consume around 1 MB of router memory. *)
AdsLogMessageFifoRingBufferSize : UINT := 2000;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>
Binary file removed TcUnit/TcUnit/LineIDs.dbg
Binary file not shown.
11 changes: 5 additions & 6 deletions TcUnit/TcUnit/POUs/FB_AdsLogStringMessageFifoQueue.TcPOU
Expand Up @@ -7,12 +7,11 @@
*)
FUNCTION_BLOCK FB_AdsLogStringMessageFifoQueue
VAR
ArrayBuffer : ARRAY[0..((RING_BUFFER_SIZE * (SIZEOF(ST_ADSLogStringMessage) + MEM_RING_BUFFER_INTERNAL_USE_PER_DATA_RECORD)) - 1)] OF BYTE;
ArrayBuffer : ARRAY[0..((GVL_Param_TcUnit.AdsLogMessageFifoRingBufferSize * (SIZEOF(ST_ADSLogStringMessage) + MEM_RING_BUFFER_INTERNAL_USE_PER_DATA_RECORD)) - 1)] OF BYTE;
MemRingBuffer : Tc2_Utilities.FB_MemRingBuffer;
TimerBetweenMessages : Tc2_Standard.TON := (IN := TRUE, PT := TIME_BETWEEN_MESSAGES);
END_VAR
VAR CONSTANT
RING_BUFFER_SIZE : UINT := 1000;
MEM_RING_BUFFER_INTERNAL_USE_PER_DATA_RECORD : USINT := 4;
TIME_BETWEEN_MESSAGES : TIME := T#10MS;
END_VAR
Expand All @@ -26,8 +25,8 @@ END_VAR]]></Declaration>
IF GetLogCount() > 0 THEN
// Timer has elapsed, print message
IF TimerBetweenMessages.Q THEN
GetLog(AdsLogStringMessage => MessageToBeSent,
Error => ErrorGet);
GetAndRemoveLogFromQueue(AdsLogStringMessage => MessageToBeSent,
Error => ErrorGet);
IF NOT ErrorGet THEN
ReturnValue := Tc2_System.ADSLOGSTR(msgCtrlMask := MessageToBeSent.MsgCtrlMask,
msgFmtStr := MessageToBeSent.MsgFmtStr,
Expand All @@ -38,9 +37,9 @@ IF GetLogCount() > 0 THEN
END_IF
END_IF]]></ST>
</Implementation>
<Method Name="GetLog" Id="{cf4219dc-c784-4d39-983c-1e64371c4d5f}">
<Method Name="GetAndRemoveLogFromQueue" Id="{cf4219dc-c784-4d39-983c-1e64371c4d5f}">
<Declaration><![CDATA[(* Reads and removes the oldest message *)
METHOD PRIVATE GetLog
METHOD PRIVATE GetAndRemoveLogFromQueue
VAR_OUTPUT
AdsLogStringMessage : ST_ADSLogStringMessage;
Error : BOOL; // Buffer empty
Expand Down
2 changes: 1 addition & 1 deletion TcUnit/TcUnit/POUs/FB_AdsTestResultLogger.TcPOU
Expand Up @@ -99,7 +99,7 @@ IF PrintingTestSuiteResultNumber <= GVL_TcUnit.NumberOfInitializedTestSuites AND
StringToPrint := Tc2_Standard.CONCAT(STR1 := '| Test status=', STR2 := TEST_STATUS_PASS);
END_IF
StringToPrint := Tc2_Standard.CONCAT(STR1 := StringToPrint, STR2 := ', No. of asserts=');
StringToPrint := Tc2_Standard.CONCAT(STR1 := StringToPrint, STR2 := ', number of asserts=');
StringToPrint := Tc2_Standard.CONCAT(STR1 := StringToPrint, STR2 :=
UINT_TO_STRING(TcUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].NumberOfAsserts));
GVL_TcUnit.AdsMessageQueue.WriteLog(MsgCtrlMask := Tc2_System.ADSLOG_MSGTYPE_HINT,
Expand Down
2 changes: 1 addition & 1 deletion TcUnit/TcUnit/POUs/FB_TestResults.TcPOU
Expand Up @@ -4,7 +4,7 @@
<Declaration><![CDATA[(* This function block holds results of the complete test run, i.e. results for all test suites *)
FUNCTION_BLOCK FB_TestResults IMPLEMENTS I_TestResults
VAR
(* Test results*)
(* Test results *)
TestSuiteResults : ST_TestSuiteResults;
(* Misc variables *)
Expand Down

0 comments on commit d90a219

Please sign in to comment.