Esempio n. 1
0
def test_failure():

    #XXX also test the Bandit.exceptions mechanism that actually catches them
    class BanditE(Exception):
        pass

    class DummyBandit(Bandit):
        param_gen = {"loss": 10}
        def __init__(self):
            super(DummyBandit, self).__init__(self.param_gen)

        def evaluate(self, config, ctrl):
            raise BanditE()

    trials = Trials()
    bandit_algo = Random(DummyBandit())
    exp = Experiment(trials, bandit_algo, async=False)

    exp.run(1)
    trials.refresh()
    assert len(trials) == 0
    assert len(trials._dynamic_trials) == 1
    assert trials._dynamic_trials[0]['state'] == JOB_STATE_ERROR
    assert trials._dynamic_trials[0]['misc']['error'] != None

    exp.catch_bandit_exceptions = False
    nose.tools.assert_raises(BanditE, exp.run, 1)
    trials.refresh()
    assert len(trials) == 0
    assert len(trials._dynamic_trials) == 2
    assert trials._dynamic_trials[1]['state'] == JOB_STATE_ERROR
    assert trials._dynamic_trials[1]['misc']['error'] != None