Skip to content

Commit

Permalink
Instantiate adapter even if empty
Browse files Browse the repository at this point in the history
Why:

When handling the configured experiment, we expect the adapter to be
instiantiated even if it does nothing (empty CompositeAdapter).
  • Loading branch information
bouthilx committed Oct 9, 2019
1 parent 4f2698f commit 55664b6
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/orion/core/worker/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ def configure(self, config, enable_branching=True, enable_update=True):
if self.refers['parent_id'] is None:
log.debug('update refers (name: %s)', config['name'])
self.refers['root_id'] = self._id
self._storage.update_experiment(self, refers=self.refers)
self._storage.update_experiment(self, refers=self.configuration['refers'])

else:
# Writing the final config to an already existing experiment raises
Expand Down Expand Up @@ -605,7 +605,7 @@ def _instantiate_config(self, config):
self.refers.setdefault('parent_id', None)
self.refers.setdefault('root_id', self._id)
self.refers.setdefault('adapter', [])
if self.refers['adapter'] and not isinstance(self.refers.get('adapter'), BaseAdapter):
if not isinstance(self.refers.get('adapter'), BaseAdapter):
self.refers['adapter'] = Adapter.build(self.refers['adapter'])

if not self.producer.get('strategy'):
Expand Down Expand Up @@ -716,7 +716,7 @@ def __init__(self, name, user=None, version=None):
self.refers.setdefault('parent_id', None)
self.refers.setdefault('root_id', self._id)
self.refers.setdefault('adapter', [])
if self.refers['adapter'] and not isinstance(self.refers.get('adapter'), BaseAdapter):
if not isinstance(self.refers.get('adapter'), BaseAdapter):
self.refers['adapter'] = Adapter.build(self.refers['adapter'])

# try:
Expand Down
16 changes: 16 additions & 0 deletions tests/unittests/core/worker/test_experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import pytest

from orion.algo.base import BaseAlgorithm
from orion.algo.space import Space
import orion.core
from orion.core.evc.adapters import BaseAdapter
from orion.core.io.database import DuplicateKeyError
import orion.core.utils.backward as backward
from orion.core.utils.exceptions import RaceCondition
Expand Down Expand Up @@ -390,6 +392,19 @@ def test_get_after_init_plus_hit_no_diffs(self, exp_config):
assert exp.configuration == exp_config[0][0]
assert experiment_count_before == count_experiment(exp)

def test_instantiation_after_init(self, exp_config):
"""Verify that algo, space and refers was instanciated properly"""
exp = Experiment('supernaedo2-dendi')
assert not isinstance(exp.algorithms, BaseAlgorithm)
assert not isinstance(exp.space, Space)
assert not isinstance(exp.refers['adapter'], BaseAdapter)
# Deliver an external configuration to finalize init
exp.configure(exp_config[0][0])
assert exp._init_done is True
assert isinstance(exp.algorithms, BaseAlgorithm)
assert isinstance(exp.space, Space)
assert isinstance(exp.refers['adapter'], BaseAdapter)

def test_try_set_after_init(self, exp_config):
"""Cannot set a configuration after init (currently)."""
exp = Experiment('supernaedo2')
Expand Down Expand Up @@ -1001,6 +1016,7 @@ def test_existing_experiment_view(self, create_db_instance, exp_config):
assert exp.pool_size == exp_config[0][0]['pool_size']
assert exp.max_trials == exp_config[0][0]['max_trials']
assert exp.version == exp_config[0][0]['version']
assert isinstance(exp.refers['adapter'], BaseAdapter)
# TODO: Views are not fully configured until configuration is refactored
# assert exp.algorithms.configuration == exp_config[0][0]['algorithms']

Expand Down

0 comments on commit 55664b6

Please sign in to comment.