Beispiel #1
0
    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
Beispiel #2
0
    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'
Beispiel #3
0
    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'
Beispiel #4
0
    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'
Beispiel #5
0
 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,
     }
Beispiel #6
0
    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'
Beispiel #7
0
    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'
Beispiel #8
0
    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'
Beispiel #9
0
 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
Beispiel #10
0
 def test_humanize_timesince_few_seconds(self):
     self.assertEqual(u'Last update: ' + humanize_timesince(local_now()),
                      u'Last update: a few seconds ago')
Beispiel #11
0
 def test_humanize_times_in_the_future(self):
     self.assertEqual(
         humanize_timesince(local_now() + datetime.timedelta(minutes=1)),
         'a few seconds ago')
Beispiel #12
0
 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')