Пример #1
0
 def test_experiment_with_jobs_config(self):
     config_dict = {
         'sequence':
         2,
         'config': {},
         'content':
         '',
         'uuid':
         uuid.uuid4().hex,
         'project':
         uuid.uuid4().hex,
         'group':
         uuid.uuid4().hex,
         'last_status':
         'Running',
         'num_jobs':
         1,
         'jobs': [
             ExperimentJobConfig(uuid.uuid4().hex,
                                 uuid.uuid4().hex,
                                 datetime.now(),
                                 definition={}).to_dict()
         ]
     }
     config = ExperimentConfig.from_dict(config_dict)
     assert config.to_dict() == config_dict
Пример #2
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'
Пример #3
0
 def get_job(self, job_uuid):
     request_url = self._build_url(self._get_http_url(), job_uuid)
     try:
         response = self.get(request_url)
         return ExperimentJobConfig.from_dict(response.json())
     except PolyaxonException as e:
         self.handle_exception(e=e,
                               log_message='Error while retrieving job')
         return None
 def test_experiment_job_config(self):
     config_dict = {
         'uuid': uuid.uuid4().hex,
         'experiment': uuid.uuid4().hex,
         'created_at': datetime.now().isoformat(),
         'definition': ''
     }
     config = ExperimentJobConfig.from_dict(config_dict)
     config_to_dict = config.to_dict()
     config_to_dict.pop('created_at')
     config_dict.pop('created_at')
     assert config_to_dict == config_dict
Пример #5
0
 def test_get_job(self):
     experiment_uuid = uuid.uuid4().hex
     object = ExperimentJobConfig(uuid=uuid.uuid4().hex,
                                  experiment=experiment_uuid,
                                  created_at=datetime.datetime.now(),
                                  definition='').to_dict()
     httpretty.register_uri(httpretty.GET,
                            JobClient._build_url(self.client.base_url,
                                                 JobClient.ENDPOINT,
                                                 'uuid'),
                            body=json.dumps(object),
                            content_type='application/json',
                            status=200)
     result = self.client.get_job('uuid')
     assert object == result.to_dict()
Пример #6
0
    def list_jobs(self, experiment_uuid, page=1):
        """Fetch list of jobs related to this experiment."""
        request_url = self._build_url(self._get_http_url(), experiment_uuid,
                                      'jobs')

        try:
            response = self.get(request_url, params=self.get_page(page=page))
            jobs = response.json()
            return [
                ExperimentJobConfig.from_dict(job)
                for job in jobs.get("results", [])
            ]
        except PolyaxonException as e:
            self.handle_exception(e=e,
                                  log_message='Error while retrieving jobs')
            return []
Пример #7
0
    def test_list_experiment_jobs(self):
        experiment_uuid = uuid.uuid4().hex
        job_uuid = uuid.uuid4().hex
        xps = [
            ExperimentJobConfig(uuid=job_uuid,
                                experiment=experiment_uuid,
                                created_at=datetime.datetime.now(),
                                definition={}).to_dict() for _ in range(10)
        ]
        httpretty.register_uri(httpretty.GET,
                               ExperimentClient._build_url(
                                   self.client.base_url,
                                   ExperimentClient.ENDPOINT,
                                   'username',
                                   'project_name',
                                   'experiments',
                                   1,
                                   'jobs',
                               ),
                               body=json.dumps({
                                   'results': xps,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        response = self.client.list_jobs('username', 'project_name', 1)
        assert len(response['results']) == 10

        # pagination

        httpretty.register_uri(
            httpretty.GET,
            ExperimentClient._build_url(
                self.client.base_url, ExperimentClient.ENDPOINT, 'username',
                'project_name', 'experiments', 1, 'jobs') + '?offset=2',
            body=json.dumps({
                'results': xps,
                'count': 10,
                'next': None
            }),
            content_type='application/json',
            status=200)

        response = self.client.list_jobs('username', 'project_name', 1, page=2)
        assert len(response['results']) == 10
 def test_experiment_with_jobs_config(self):
     config_dict = {
         'name':
         'test',
         'uuid':
         uuid.uuid4().hex,
         'project':
         uuid.uuid4().hex,
         'group':
         uuid.uuid4().hex,
         'jobs': [
             ExperimentJobConfig(uuid.uuid4().hex,
                                 uuid.uuid4().hex,
                                 datetime.now(),
                                 definition='').to_dict()
         ]
     }
     config = ExperimentConfig.from_dict(config_dict)
     assert config.to_dict() == config_dict
Пример #9
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'