def test_experiment_config(self): config_dict = { 'uuid': uuid.uuid4().hex, 'project': uuid.uuid4().hex, 'project_name': 'name.name', 'experiment_group': uuid.uuid4().hex, 'experiment_group_name': 'name.name.1', 'unique_name': 'user.proj.1', 'last_status': 'Running', 'description': 'description', 'content': 'content', 'config': { 'k': 'v' }, 'num_jobs': 1, 'created_at': local_now().isoformat(), 'updated_at': local_now().isoformat(), } config = ExperimentConfig.from_dict(config_dict) config_to_dict = config.to_dict() config_to_dict.pop('declarations') config_to_dict.pop('finished_at') config_to_dict.pop('is_clone') config_to_dict.pop('is_done') config_to_dict.pop('is_running') config_to_dict.pop('jobs') config_to_dict.pop('last_metric') config_to_dict.pop('resources') config_to_dict.pop('sequence') config_to_dict.pop('started_at') config_to_dict.pop('total_run') config_to_dict.pop('user') assert config_to_dict == config_dict config_to_dict = config.to_light_dict() config_dict.pop('uuid') config_dict.pop('description') config_dict.pop('content') config_dict.pop('config') config_dict.pop('project') config_dict.pop('experiment_group') config_dict.pop('updated_at') config_dict.pop('project_name') config_to_dict.pop('finished_at') config_to_dict.pop('is_done') config_to_dict.pop('is_running') config_to_dict.pop('sequence') config_to_dict.pop('started_at') config_to_dict.pop('total_run') config_to_dict.pop('user') assert config_to_dict == config_dict config_to_dict = config.to_light_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago' assert config_to_dict.pop('started_at') is None
def test_experiment_group_config(self): uuid_value = uuid.uuid4().hex config_dict = { 'sequence': 1, 'content': 'some content', 'uuid': uuid_value, 'project': uuid_value, 'project_name': 'user.name', 'num_experiments': 0, 'created_at': local_now().isoformat(), 'updated_at': local_now().isoformat(), 'experiments': [ ExperimentConfig(config={}, uuid=uuid_value, experiment_group=uuid_value, project=uuid_value).to_dict() ] } config = ExperimentGroupConfig.from_dict(config_dict) config_to_dict = config.to_dict() config_to_dict.pop('concurrency', None) config_to_dict.pop('description', None) config_to_dict.pop('num_failed_experiments', None) config_to_dict.pop('num_pending_experiments', None) config_to_dict.pop('num_running_experiments', None) config_to_dict.pop('num_scheduled_experiments', None) config_to_dict.pop('num_stopped_experiments', None) config_to_dict.pop('num_succeeded_experiments', None) config_to_dict.pop('unique_name', None) config_to_dict.pop('user', None) assert config_to_dict == config_dict config_dict.pop('content') config_dict.pop('uuid') config_dict.pop('project') config_dict.pop('updated_at') config_dict.pop('sequence') config_dict.pop('experiments') config_dict.pop('project_name') assert_equal_dict(config_dict, config.to_light_dict()) config_to_dict = config.to_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago' assert config_to_dict.pop('updated_at') == 'a few seconds ago' config_to_dict = config.to_light_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago'
def test_experiment_job_config(self): config_dict = { 'uuid': uuid.uuid4().hex, 'experiment': uuid.uuid4().hex, 'experiment_name': 'name.name', 'created_at': local_now().isoformat(), 'updated_at': local_now().isoformat(), 'started_at': local_now().isoformat(), 'finished_at': local_now().isoformat(), 'definition': {}, 'role': 'master', 'sequence': 1, 'unique_name': 'project.1.1.master' } config = ExperimentJobConfig.from_dict(config_dict) config_to_dict = config.to_dict() assert config_to_dict.pop('total_run') == '0s' config_to_dict.pop('is_done') config_to_dict.pop('is_running') config_to_dict.pop('last_status') config_to_dict.pop('resources') assert config_to_dict == config_dict config_dict.pop('definition') config_dict.pop('experiment') config_dict.pop('updated_at') config_dict.pop('uuid') config_to_dict = config.to_light_dict() assert config_to_dict.pop('total_run') == '0s' config_dict.pop('unique_name') config_to_dict.pop('is_done') config_to_dict.pop('is_running') config_to_dict.pop('last_status') assert config_to_dict == config_dict config_to_dict = config.to_light_dict(humanize_values=True) assert config_to_dict.pop('total_run') == '0s' assert config_to_dict.pop('created_at') == 'a few seconds ago' assert config_to_dict.pop('started_at') == 'a few seconds ago' assert config_to_dict.pop('finished_at') == 'a few seconds ago'
def test_experiment_with_jobs_config(self): config_dict = { 'sequence': 2, 'config': {}, 'content': '', 'unique_name': 'adam.proj.1', 'uuid': uuid.uuid4().hex, 'project': uuid.uuid4().hex, 'project_name': 'user.name', 'experiment_group': uuid.uuid4().hex, 'experiment_group_name': 'user.name.1', 'last_status': 'Running', 'num_jobs': 1, 'created_at': local_now().isoformat(), 'updated_at': local_now().isoformat(), 'started_at': local_now().isoformat(), 'finished_at': local_now().isoformat(), 'jobs': [ ExperimentJobConfig(uuid=uuid.uuid4().hex, experiment=uuid.uuid4().hex, experiment_name='name.name.1', created_at=local_now(), updated_at=local_now(), definition={}).to_dict() ] } config = ExperimentConfig.from_dict(config_dict) config_to_dict = config.to_dict() assert config_to_dict.pop('total_run') == '0s' config_to_dict.pop('declarations') config_to_dict.pop('description') config_to_dict.pop('is_clone') config_to_dict.pop('is_done') config_to_dict.pop('is_running') config_to_dict.pop('last_metric') config_to_dict.pop('resources') config_to_dict.pop('user') assert config_to_dict == config_dict config_to_dict = config.to_light_dict(humanize_values=True) assert config_to_dict.pop('total_run') == '0s' assert config_to_dict.pop('created_at') == 'a few seconds ago' assert config_to_dict.pop('started_at') == 'a few seconds ago' assert config_to_dict.pop('finished_at') == 'a few seconds ago'
def create_pod_state(cls): event_type = 'ADDED' phase = 'Running' labels = cls.create_pod_labels() deletion_timestamp = local_now().isoformat() pod_conditions = {} container_statuses = {} return { 'event_type': event_type, 'phase': phase, 'labels': labels, 'deletion_timestamp': deletion_timestamp, 'pod_conditions': pod_conditions, 'container_statuses': container_statuses, }
def test_project_config(self): config_dict = { 'name': 'test', 'description': '', 'is_public': True, 'has_code': True, 'has_tensorboard': True, 'num_experiments': 0, 'num_independent_experiments': 0, 'num_experiment_groups': 0, 'created_at': local_now().isoformat(), 'updated_at': local_now().isoformat() } config = ProjectConfig.from_dict(config_dict) config_to_dict = config.to_dict() config_to_dict.pop('experiment_groups', None) config_to_dict.pop('experiments', None) config_to_dict.pop('has_notebook', None) config_to_dict.pop('unique_name', None) config_to_dict.pop('user', None) config_to_dict.pop('uuid', None) assert config_to_dict == config_dict config_dict.pop('description') config_dict.pop('updated_at') config_dict.pop('has_code') config_to_dict = config.to_light_dict() config_to_dict.pop('has_notebook', None) config_to_dict.pop('unique_name', None) assert config_to_dict == config_dict config_to_dict = config.to_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago' assert config_to_dict.pop('updated_at') == 'a few seconds ago' config_to_dict = config.to_light_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago'
def test_experiment_status_config(self): config_dict = { 'uuid': uuid.uuid4().hex, 'experiment': uuid.uuid4().hex, 'created_at': local_now().isoformat(), 'status': 'Running', 'message': None } config = ExperimentStatusConfig.from_dict(config_dict) config_to_dict = config.to_dict() assert config_to_dict == config_dict config_dict.pop('experiment', None) config_dict.pop('uuid', None) config_to_dict = config.to_light_dict() assert config_to_dict == config_dict config_to_dict = config.to_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago'
def test_experiment_metric_config(self): config_dict = { 'uuid': uuid.uuid4().hex, 'experiment': uuid.uuid4().hex, 'created_at': local_now().isoformat(), 'values': { 'accuracy': 0.9 } } config = ExperimentMetricConfig.from_dict(config_dict) config_to_dict = config.to_dict() assert config_to_dict == config_dict config_dict.pop('experiment', None) config_dict.pop('uuid', None) config_to_dict = config.to_light_dict() assert config_to_dict == config_dict config_to_dict = config.to_dict(humanize_values=True) assert config_to_dict.pop('created_at') == 'a few seconds ago'
def test_data_config(self): config_dict = { 'uuid': uuid.uuid4().hex, 'name': 'foo', 'created_at': local_now().isoformat(), 'description': 'foo data', 'details': DataDetailsConfig(state='state', size=1.4, uri='http://www.foo.com/data').to_dict(), 'version': None, 'resource_id': '1' } config = DataConfig.from_dict(config_dict) config_to_dict = config.to_dict() assert config_to_dict == config_dict
def test_humanize_timesince_few_seconds(self): self.assertEqual(u'Last update: ' + humanize_timesince(local_now()), u'Last update: a few seconds ago')
def test_humanize_times_in_the_future(self): self.assertEqual( humanize_timesince(local_now() + datetime.timedelta(minutes=1)), 'a few seconds ago')
def test_humanize_timesince(self): self.assertEqual(humanize_timesince(local_now()), 'a few seconds ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(minutes=1)), '1 minute ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(minutes=10)), '10 minutes ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(hours=1)), '1 hour ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(hours=10)), '10 hours ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(hours=24)), '1 day ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(hours=72)), '3 days ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(hours=168)), '1 week ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(weeks=1)), '1 week ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(weeks=3)), '3 weeks ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(weeks=53)), '1 year ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(days=365)), '1 year ago') self.assertEqual( humanize_timesince(local_now() - datetime.timedelta(days=800)), '2 years ago')