Changeset 3

Show
Ignore:
Timestamp:
08/06/07 13:59:03 (1 year ago)
Author:
akhavr
Message:

ticket:1:

  • init_seed ok
  • working on load_page
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bin/tests.py

    r2 r3  
    44 
    55from inject import * 
     6import time 
    67import wanderer 
    78 
    89def should_call(mock, call, message, numcalls=1): 
     10    assert str(mock.__class__) == 'mock.Mock', \ 
     11           'Wrong mock type: ' + str(mock.__class__) 
    912    assert len(mock.getNamedCalls(call)) == numcalls, \ 
    1013           message % mock.getAllCalls() 
    1114 
    12 @inject_dependency('load_configs', wanderer, {'__call__' : {}}) 
    13 @inject_dependency('init_seed', wanderer) 
    14 def test_main(): 
     15def should_call_with_param(mock, call, param_idx, assertor, message): 
     16    assert str(mock.__class__) == 'mock.Mock', \ 
     17           'Wrong mock type: ' + str(mock.__class__) 
     18    should_call(mock, call, "Haven't called %s: %%s" % call) 
     19    param = mock.getNamedCalls(call)[0].params[param_idx] 
     20    assert assertor(param), message % param 
     21 
     22 
     23class TestMain(object): 
    1524    'test main' 
    16     wanderer.main() 
    17     should_call(wanderer.load_configs, '__call__', "Haven't load configs: %s") 
    18     should_call(wanderer.init_seed, '__call__', "Haven't initialized seed: %s") 
    19     call = wanderer.init_seed.getNamedCalls('__call__')[0] 
    20     assert len(call.params) == 1, call.params 
    21     assert type(call.params[0]) == type({}), call.params[0] 
     25    @inject_dependency('load_configs', wanderer, {'__call__' : { 
     26        'starturl' : 'http://some.server/page' 
     27        }}) 
     28    @inject_dependency('init_seed', wanderer) 
     29    @inject_dependency('load_page', wanderer) 
     30    def test_main(self): 
     31        'test main' 
     32        wanderer.main() 
     33        should_call(wanderer.load_configs, '__call__', 
     34                    "Haven't load configs: %s") 
     35        should_call(wanderer.init_seed, '__call__', 
     36                    "Haven't initialized seed: %s") 
     37        call = wanderer.init_seed.getNamedCalls('__call__')[0] 
     38        assert len(call.params) == 1, call.params 
     39        assert type(call.params[0]) == type({}), call.params[0] 
     40        should_call(wanderer.load_page, '__call__', 
     41                    "Haven't called load_page: %s") 
     42         
    2243 
    2344class TestLoadConfigs(object): 
     
    4667        wanderer.load_module.__call__ = raise_ioerror 
    4768        res = wanderer.load_configs() 
    48         should_call(wanderer.sys.stderr, 'write', 'Failed to log: %s') 
    49         stderr_calls = wanderer.sys.stderr.getNamedCalls('write') 
    50         assert stderr_calls[0].params[0].startswith( 
    51             'Failed to load config'), stderr_calls[0].params[0] 
    52         should_call(wanderer.sys.exit, '__call__', 'Failed to exit: %s') 
    53         exit_calls = wanderer.sys.exit.getNamedCalls('__call__') 
    54         assert exit_calls[0].params[0] == 1, \ 
    55                'Wrong exit code: %s' % exit_calls[0].params 
     69        should_call_with_param( 
     70            wanderer.sys.stderr, 'write', 0, 
     71            lambda p: p.startswith('Failed to load config'), 
     72            'Wrong error message: %s' 
     73            ) 
     74        should_call_with_param(wanderer.sys.exit, '__call__', 0, 
     75                               lambda p: p == 1, 'Wrong exit code: %s') 
    5676 
     77class TestInitSeed(object): 
     78    'init_seed test' 
     79 
     80    @inject_dependency('random', wanderer) 
     81    def test_no_seed(self): 
     82        'no seed specified, init from current datetime' 
     83        options = {} 
     84        wanderer.init_seed(options) 
     85        should_call_with_param(wanderer.random, 'seed', 0, 
     86                               lambda p: (time.time() - p) < 5, 
     87                               'Wrong seed: %s') 
     88 
     89    @inject_dependency('random', wanderer) 
     90    def test_with_seed(self): 
     91        'seed specified' 
     92        options = {'seed' : 0} 
     93        wanderer.init_seed(options) 
     94        should_call_with_param(wanderer.random, 'seed', 0, 
     95                               lambda p: p == options['seed'], 
     96                               'Wrong seed: %s') 
     97 
     98 
     99class TestLoadPage(object): 
     100    'load_page tests' 
     101 
     102    @inject_dependency('urllib2', wanderer) 
     103    def test_connection_timeout(self): 
     104        'connection timeout' 
     105        url = 'http://some.server/page' 
     106        wanderer.load_page(url) 
     107        should_call_with_param(wanderer.urllib2, 'urlopen', 0, 
     108                               lambda p: p == url, 'Wrong url opened: %s') 
     109        assert 0, 'todo' 
     110         
     111 
     112         
     113 
     114 
  • trunk/bin/wanderer.py

    r2 r3  
    77 
    88import imp 
     9import urllib2 
     10import random 
    911import sys 
     12import time 
    1013 
    1114def load_module(name): 
     
    3235             } 
    3336 
    34 def init_seed(): 
     37def init_seed(options): 
    3538    'init random seed' 
     39    try: 
     40        random.seed(options['seed']) 
     41    except KeyError: 
     42        random.seed(time.time()) 
     43    return 
     44 
     45def load_page(url): 
     46    'loads specified page' 
     47    page = urllib2.urlopen(url) 
    3648    return 
    3749 
     
    4052    options = load_configs() 
    4153    init_seed(options) 
     54    load_page(options['starturl']) 
    4255 
    4356