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.