Table Of Contents
Table Of Contents

Removing Events

Some changes in the model removes events from the simulation, resulting in changed fingerprints, but doesn’t necessarily invalidate the model. The methods described in the previous steps involving new events are applicable in this case as well. The workflow is the following:

  • Create fingerprints which are not sensitive to the removal of the event/doesnt contain the event (such as filter the module the event takes place in, use ingredients which only take into account network communication, or filter only the event itself)

  • Make the change in the model

  • Run the fingerprint tests again

As a simplistic example, we’ll delete the removeNonInterferingTransmissions self message from the RadioMedium module. This message schedules a timer to remove those transmissions from the radio medium which can no longer cause any interference. This change doesn’t alter the simulation, but deletes events from it, thus it would change the baseline fingerprints.

First, we create alternate fingerprints by filtering out the removeNonInterferingTransmissions events:

$ inet_fingerprinttest -m RemovingEvent -a --fingerprint-events='"not fullName=~removeNonInterferingTransmissions"'
. -f omnetpp.ini -c Wifi -r 0 ... : FAILED

Now, we can update the .csv file with the new fingerprints:

$ mv baseline.csv.UPDATED baseline.csv

We remove the nonInterferingTransmissions message from the code of RadioMedium.cc; we delete the declaration, and all instances of its scheduling. We build INET and run the fingerprint tests again with the filter expression:

$ inet_fingerprinttest -m RemoveEvent -a --fingerprint-events='"not fullName=~removeNonInterferingTransmissions"'
. -f omnetpp.ini -c Wifi -r 0 ... : PASS

We can restore the baseline fingerprints by re-running the tests without filtering and accept the new values. This process is described in more detail in the Accepting Fingerprint Changes step.