The goal of animalFarm_02 is to show how a test platform operates, both visually and behaviorally. It does so without interfacing to an external “system under test”; animalFarm_02 is completely self-contained.
The following text duplicates some of the video.
Let’s talk about what’s going on in the program: We have farms that own animals; in this case the animals are cows and chickens.
At any point in time an animal can have one of two operations performed on it. The animal can be "tended to", or it can be "raised".
"Tending to" an animal causes it to produce according to the type of animal that it is: cows produce milk and chickens produce eggs. That’s what happens when you tend to an animal.
"Raising" an animal on the other hand causes another animal of the same type to be created (which happens most of the time) or, at times the selected animal is sent to market and eliminated from the farm. That’s what happens when you raise an animal.
The program lets the user generate “background tasks” that either tend to or raise animals. The program keeps track of the animals and their output, all on several farms, in several counties.
The program runs in either interactive or batch mode. If started with no command-line parameters it runs interactively however in interactive mode it can "make a test run" of some specified length. If started with command line parameters (identical to the interactive command set) it can be made to perform a test run of some specified length and with some specified set of animal tending / raising operations.
The test platform runs in cycles, counting how many animals it either creates or eliminates and how much milk or eggs are produced. At the end of the cycle it performs a verification check that (always) succeeds (this is not a real system with bugs in it). In order to occasionally fail a verification the user can "inject" an additional animal or animal product (milk or eggs) that then causes the verification to fail.
As animals are eliminated during a cycle they are not erased from the gDS data store. Instead they are marked as "Erased" under a system lock and purged at the end of a cycle after verification has completed.