Project

General

Profile

Actions

Task #2975

open

convert unittests to new FAIL/PASS API

Added by Victor Julien over 2 years ago. Updated 18 days ago.

Status:
Assigned
Priority:
Normal
Target version:
Effort:
Difficulty:
Label:

Description

Convert existing tests to use the FAIL/PASS API. The idea is that every step in a test is checked and that the test should not leak memory on its success path.

There are many tests, some of which have lots of duplication. Consider per test whether the test can be improved (cleaned up) further.
This is not something meant to be done in one step. A commit per source file is ok. PRs can include multiple commits.

More explanations and context:

Initially, a lot of tests were written just like any other method: there were multiple conditionals for failure (return 0) and one pass condition (return 1), e.g. https://github.com/OISF/suricata/blob/master/src/detect-mark.c#L259.
While there was nothing wrong with this approach, we found it would be much cleaner if we used conditional macros that clearly say whether the test "fails" or "passes" on a certain condition. So, we introduced a lot of well-defined macros (see https://github.com/OISF/suricata/blob/master/src/util-unittest.h) to make the tests more legible and clear.

There are macros for almost all failing conditionals e.g., fail if something is null (FAIL_IF_NULL), fail if something
exists (>0) (FAIL_IF), etc. There are also macros PASS and PASS_IF which mean all the conditionals were met properly and the test has passed.

Your job as a part of this task is to remove the old style of tests, i.e. returning values on failure/passing
conditionals, and use this FAIL/PASS API instead. One good example could be
https://github.com/OISF/suricata/commit/3cf8b4629f2cf523c3f82604d93b8fd4a0888109:

There, all the conditionals were converted to the FAIL/PASS API in a manner that there is NO memory leak on the success path (PASS). It is OK to have memleaks on failure paths.


Subtasks 40 (34 open6 closed)

Task #4019: Convert unittests to new FAIL/PASS API - detect-detection-filter.cNewCommunity TicketActions
Task #4020: Convert unittests to new FAIL/PASS API - detect-distance.cNewCommunity TicketActions
Task #4021: Convert unittests to new FAIL/PASS API - detect-dsize.cNewCommunity TicketActions
Task #4022: Convert unittests to new FAIL/PASS API - detect-engine-address-ipv4.cNewCommunity TicketActions
Task #4023: Convert unittests to new FAIL/PASS API: detect-engine-address-ipv6.cNewCommunity TicketActions
Task #4024: Convert unittests to new FAIL/PASS API: detect-engine.cNewCommunity TicketActions
Task #4025: Convert unittests to new FAIL/PASS API: detect-engine-event.cNewCommunity TicketActions
Task #4026: Convert unittests to new FAIL/PASS API: detect-engine-payload.cNewCommunity TicketActions
Task #4027: Convert unittests to new FAIL/PASS API: detect-engine-proto.cNewCommunity TicketActions
Task #4028: Convert unittests to new FAIL/PASS API: detect-engine-siggroup.cNewCommunity TicketActions
Task #4029: Convert unittests to new FAIL/PASS API: detect-engine-sigorder.cNewCommunity TicketActions
Task #4030: Convert unittests to new FAIL/PASS API: detect-engine-tag.cNewCommunity TicketActions
Task #4031: Convert unittests to new FAIL/PASS API: detect-fast-pattern.cNewCommunity TicketActions
Task #4032: Convert unittests to new FAIL/PASS API: detect-file-data.cNewCommunity TicketActions
Task #4033: Convert unittests to new FAIL/PASS API: detect-fileext.cNewCommunity TicketActions
Task #4034: Convert unittests to new FAIL/PASS API: detect-filemagic.cNewCommunity TicketActions
Task #4035: Convert unittests to new FAIL/PASS API: detect-filemd5.cNewCommunity TicketActions
Task #4036: Convert unittests to new FAIL/PASS API: detect-filename.cNewCommunity TicketActions
Task #4037: Convert unittests to new FAIL/PASS API: detect-filesha1.cNewSumera PriyadarsiniActions
Task #4038: Convert unittests to new FAIL/PASS API: detect-filesha256.cNewCommunity TicketActions
Task #4039: Convert unittests to new FAIL/PASS API: detect-filesize.cNewCommunity TicketActions
Task #4040: Convert unittests to new FAIL/PASS API: detect-fragoffset.cNewCommunity TicketActions
Task #4041: Convert unittests to new FAIL/PASS API: detect-gid.cNewCommunity TicketActions
Task #4042: Convert unittests to new FAIL/PASS API: detect-icmp-id.cNewCommunity TicketActions
Task #4043: Convert unittests to new FAIL/PASS API: detect-icmp-seq.cNewCommunity TicketActions
Task #4044: Convert unittests to new FAIL/PASS API: detect-icmp-seq.cClosedCommunity TicketActions
Task #4045: Convert unittests to new FAIL/PASS API: detect-icode.cNewCommunity TicketActions
Task #4046: Convert unittests to new FAIL/PASS API: detect-id.cNewCommunity TicketActions
Task #4047: Convert unittests to new FAIL/PASS API: detect-ipopts.cNewCommunity TicketActions
Task #4048: Convert unittests to new FAIL/PASS API: detect-iprep.cClosedJuliana Fajardini ReichowActions
Task #4049: Convert unittests to new FAIL/PASS API: detect-itype.cNewCommunity TicketActions
Task #4050: Convert unittests to new FAIL/PASS API: detect-l3proto.cNewCommunity TicketActions
Task #4051: Convert unittests to new FAIL/PASS API: detect-lua.cNewCommunity TicketActions
Task #4052: Convert unittests to new FAIL/PASS API: detect-mark.cClosedJanani RamjeeActions
Task #4053: Convert unittests to new FAIL/PASS API: detect-msg.cClosedJuliana Fajardini ReichowActions
Task #4054: Convert unittests to new FAIL/PASS API: detect-replace.cNewCommunity TicketActions
Task #4055: Convert unittests to new FAIL/PASS API: detect-rfb-secresult.cNewCommunity TicketActions
Task #4056: Convert unittests to new FAIL/PASS API: detect-rpc.cClosedJuliana Fajardini ReichowActions
Task #4057: Convert unittests to new FAIL/PASS API: detect-sameip.cNewCommunity TicketActions
Task #4058: Convert unittests to new FAIL/PASS API: detect-sid.cClosedJuliana Fajardini ReichowActions

Related issues

Related to Feature #1025: seperate #ifdef UNITTEST code into their own filesNewOISF DevActions
Actions

Also available in: Atom PDF