@@ -42,8 +42,8 @@ The sample includes these modules:
4242- stepper, stepper_o, and stepper_a: three different steppers (also
4343 called test harnesses or adapters) that use the model program and
4444 scenarios to test actual sockets on localhost (via the Python
45- standard library socket module). Also, Sender.py, Receiver.py,
46- etc.: other code for exercising the standard library socket module .
45+ standard library socket module). Also, stepper_util, code used
46+ by all three steppers .
4747
4848- socket_simulator and socket_simulator_a: two simulators that can
4949 optionally replace the Python standard library socket module in the
@@ -343,7 +343,6 @@ synchronous msocket. It is a graph of the msocket model program
343343composed with the synchronous scenario machine, using the domains in
344344the deterministic module.
345345
346-
347346The stepper test harness
348347
349348The stepper module is a test harness (sometimes called an adapter)
@@ -394,6 +393,14 @@ discuss stepper_o and stepper_a, that support all model behaviors
394393correctly.
395394
396395
396+ The stepper_util test harness utilities
397+
398+ The stepper_util module defines constants and methods used by
399+ all three steppers, including methods to open and close sockets
400+ and to make a connection. The three stepper modules only
401+ handle the send and recv methods - that is their only difference.
402+
403+
397404The test_stepper script
398405
399406The test_stepper module is a test script with three test cases that
@@ -582,22 +589,25 @@ invoke send_call and recv_call.
582589
583590The first test case does not use the synchronous scenario so it often
584591blocks, times out, and fails. The second test case uses the
585- synchronous scenario so it never blocks and always succeeds. With
586- test_stepper, the second test case often fails, but here it always
592+ synchronous scenario so it never blocks and always succeeds. With our
593+ test_stepper, the second test case often failed because the results
594+ were nondeterministically chosen by the model, but here it always
587595succeeds because the return values are chosen by the implementation
588596rather than the model, and the test outcomes are determined by
589597checking those return values with the enabling conditions in the
590598model. The third case always succeeds for the same reason. The third
591599test case names the deterministic configuration, but it is not
592- necessary because here the return values are chosen by the implemenation,
593- not the model.
600+ necessary because here the return values are chosen by the
601+ implemenation, not the model.
594602
595603
596604The stepper_a asynchronous stepper module
597605
598- The stepper_a module supports nondeterminism and asynchrony. Each
599- call to the implementation runs in its own thread, so it can wait
600- without blocking the test run. ...
606+ The stepper_a module supports nondeterminism and asynchrony. It is
607+ similar to stepper_o, but here each call to the implementation runs in
608+ its own thread, so the implementation can block at that call
609+ without blocking the whole test run. This enables pmt to make another
610+ call that results in unblocking the earlier call.
601611
602612
603613The socket_simulator module
0 commit comments