def setup_module():
module_seed_str = os.getenv('<STR_LIT>')<EOL>logger = default_logger()<EOL>if module_seed_str is None:<EOL><INDENT>seed = np.random.randint(<NUM_LIT:0>, np.iinfo(np.int32).max)<EOL><DEDENT>else:<EOL><INDENT>seed = int(module_seed_str)<EOL>logger.warn('<STR_LIT>')<EOL><DEDENT>logger.info('<STR_LIT>', seed)<EOL>np.random.seed(seed)<EOL>mx.random.seed(seed)<EOL>random.seed(seed)<EOL>if os.getenv('<STR_LIT>') is not None:<EOL><INDENT>logger.warn('<STR_LIT>')<EOL><DEDENT>
A function with a 'magic name' executed automatically before each nosetests module
(file of tests) that helps reproduce a test segfault by setting and outputting the rng seeds.

The segfault-debug procedure on a module called test_module.py is:

1. run "nosetests --verbose test_module.py".  A seg-faulting output might be:

   [INFO] np, mx and python random seeds = 4018804151
   test_module.test1 ... ok
   test_module.test2 ... Illegal instruction (core dumped)

2. Copy the module-starting seed into the next command, then run:

   MXNET_MODULE_SEED=4018804151 nosetests --logging-level=DEBUG --verbose test_module.py

   Output might be:

   [WARNING] **** module-level seed is set: all tests running deterministically ****
   [INFO] np, mx and python random seeds = 4018804151
   test_module.test1 ... [DEBUG] np and mx random seeds = 3935862516
   ok
   test_module.test2 ... [DEBUG] np and mx random seeds = 1435005594
   Illegal instruction (core dumped)

3. Copy the segfaulting-test seed into the command:
   MXNET_TEST_SEED=1435005594 nosetests --logging-level=DEBUG --verbose test_module.py:test2
   Output might be:

   [INFO] np, mx and python random seeds = 2481884723
   test_module.test2 ... [DEBUG] np and mx random seeds = 1435005594
   Illegal instruction (core dumped)

3. Finally reproduce the segfault directly under gdb (might need additional os packages)
   by editing the bottom of test_module.py to be

   if __name__ == '__main__':
       logging.getLogger().setLevel(logging.DEBUG)
       test2()

   MXNET_TEST_SEED=1435005594 gdb -ex r --args python test_module.py

4. When finished debugging the segfault, remember to unset any exported MXNET_ seed
   variables in the environment to return to non-deterministic testing (a good thing).