def setUp(self):
     self.client = ProjectClient(host='localhost',
                                 http_port=8000,
                                 ws_port=1337,
                                 version='v1',
                                 token=faker.uuid4(),
                                 reraise=True)
 def test_delete_project(self):
     project_uuid = uuid.uuid4().hex
     httpretty.register_uri(httpretty.DELETE,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT, project_uuid),
                            content_type='application/json',
                            status=204)
     result = self.client.delete_project(project_uuid)
     assert result.status_code == 204
 def test_create_project(self):
     object = ProjectConfig(faker.word())
     httpretty.register_uri(httpretty.POST,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT),
                            body=json.dumps(object.to_dict()),
                            content_type='application/json',
                            status=200)
     result = self.client.create_project(object)
     assert result.to_dict() == object.to_dict()
 def test_get_project(self):
     object = ProjectConfig(faker.word()).to_dict()
     httpretty.register_uri(httpretty.GET,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT, 'uuid'),
                            body=json.dumps(object),
                            content_type='application/json',
                            status=200)
     result = self.client.get_project('uuid')
     assert object == result.to_dict()
 def test_update_project(self):
     object = ProjectConfig(faker.word())
     project_uuid = uuid.uuid4().hex
     httpretty.register_uri(httpretty.PATCH,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT, project_uuid),
                            body=json.dumps(object.to_dict()),
                            content_type='application/json',
                            status=200)
     result = self.client.update_project(project_uuid, {'name': 'new'})
     assert result.to_dict() == object.to_dict()
    def test_list_experiments(self):
        project_uuid = uuid.uuid4().hex
        xp_uuid = uuid.uuid4().hex
        xps = [
            ExperimentConfig(name='xp', uuid=xp_uuid,
                             project=project_uuid).to_dict() for _ in range(10)
        ]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiments'),
                               body=json.dumps({
                                   'results': xps,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        xps_results = self.client.list_experiments(project_uuid)
        assert len(xps_results) == 10

        # pagination

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

        xps_results = self.client.list_experiments(project_uuid, page=2)
        assert len(xps_results) == 10
 def test_create_experiment(self):
     project_uuid = uuid.uuid4().hex
     object = ExperimentConfig(name=faker.word(), project=project_uuid)
     httpretty.register_uri(httpretty.POST,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT, project_uuid,
                                'experiments'),
                            body=json.dumps(object.to_dict()),
                            content_type='application/json',
                            status=200)
     result = self.client.create_experiment(project_uuid, object)
     assert result.to_dict() == object.to_dict()
 def test_upload_repo(self):
     project_uuid = uuid.uuid4().hex
     httpretty.register_uri(httpretty.PUT,
                            ProjectClient._build_url(
                                self.client.base_url,
                                ProjectClient.ENDPOINT, project_uuid,
                                'repo', 'upload'),
                            content_type='application/json',
                            status=204)
     files = [('code', ('repo',
                        open('./tests/fixtures_static/repo.tar.gz',
                             'rb'), 'text/plain'))]
     result = self.client.upload_repo(project_uuid,
                                      files=files,
                                      files_size=10)
     assert result.status_code == 204
    def test_list_projects(self):
        projects = [ProjectConfig(faker.word).to_dict() for _ in range(10)]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT),
                               body=json.dumps({
                                   'results': projects,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        projects = self.client.list_projects()
        assert len(projects) == 10
    def test_list_experiment_groups(self):
        project_uuid = uuid.uuid4().hex
        experiment_groups = [
            ExperimentGroupConfig(content=faker.word,
                                  project=project_uuid).to_dict()
            for _ in range(10)
        ]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiment_groups'),
                               body=json.dumps({
                                   'results': experiment_groups,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        experiment_groups = self.client.list_experiment_groups(project_uuid)
        assert len(experiment_groups) == 10
class TestProjectClient(TestCase):
    def setUp(self):
        self.client = ProjectClient(host='localhost',
                                    http_port=8000,
                                    ws_port=1337,
                                    version='v1',
                                    token=faker.uuid4(),
                                    reraise=True)

    @httpretty.activate
    def test_list_projects(self):
        projects = [ProjectConfig(faker.word).to_dict() for _ in range(10)]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT),
                               body=json.dumps({
                                   'results': projects,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        projects = self.client.list_projects()
        assert len(projects) == 10

    @httpretty.activate
    def test_get_project(self):
        object = ProjectConfig(faker.word()).to_dict()
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, 'uuid'),
                               body=json.dumps(object),
                               content_type='application/json',
                               status=200)
        result = self.client.get_project('uuid')
        assert object == result.to_dict()

    @httpretty.activate
    def test_create_project(self):
        object = ProjectConfig(faker.word())
        httpretty.register_uri(httpretty.POST,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT),
                               body=json.dumps(object.to_dict()),
                               content_type='application/json',
                               status=200)
        result = self.client.create_project(object)
        assert result.to_dict() == object.to_dict()

    @httpretty.activate
    def test_update_project(self):
        object = ProjectConfig(faker.word())
        project_uuid = uuid.uuid4().hex
        httpretty.register_uri(httpretty.PATCH,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid),
                               body=json.dumps(object.to_dict()),
                               content_type='application/json',
                               status=200)
        result = self.client.update_project(project_uuid, {'name': 'new'})
        assert result.to_dict() == object.to_dict()

    @httpretty.activate
    def test_delete_project(self):
        project_uuid = uuid.uuid4().hex
        httpretty.register_uri(httpretty.DELETE,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid),
                               content_type='application/json',
                               status=204)
        result = self.client.delete_project(project_uuid)
        assert result.status_code == 204

    @httpretty.activate
    def test_upload_repo(self):
        project_uuid = uuid.uuid4().hex
        httpretty.register_uri(httpretty.PUT,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'repo', 'upload'),
                               content_type='application/json',
                               status=204)
        files = [('code', ('repo',
                           open('./tests/fixtures_static/repo.tar.gz',
                                'rb'), 'text/plain'))]
        result = self.client.upload_repo(project_uuid,
                                         files=files,
                                         files_size=10)
        assert result.status_code == 204

    @httpretty.activate
    def test_list_experiment_groups(self):
        project_uuid = uuid.uuid4().hex
        experiment_groups = [
            ExperimentGroupConfig(content=faker.word,
                                  project=project_uuid).to_dict()
            for _ in range(10)
        ]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiment_groups'),
                               body=json.dumps({
                                   'results': experiment_groups,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        experiment_groups = self.client.list_experiment_groups(project_uuid)
        assert len(experiment_groups) == 10

    @httpretty.activate
    def test_create_experiment_group(self):
        project_uuid = uuid.uuid4().hex
        object = ExperimentGroupConfig(content=faker.word(),
                                       project=project_uuid)
        httpretty.register_uri(httpretty.POST,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiment_groups'),
                               body=json.dumps(object.to_dict()),
                               content_type='application/json',
                               status=200)
        result = self.client.create_experiment_group(project_uuid, object)
        assert result.to_dict() == object.to_dict()

    @httpretty.activate
    def test_list_experiments(self):
        project_uuid = uuid.uuid4().hex
        xp_uuid = uuid.uuid4().hex
        xps = [
            ExperimentConfig(name='xp', uuid=xp_uuid,
                             project=project_uuid).to_dict() for _ in range(10)
        ]
        httpretty.register_uri(httpretty.GET,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiments'),
                               body=json.dumps({
                                   'results': xps,
                                   'count': 10,
                                   'next': None
                               }),
                               content_type='application/json',
                               status=200)

        xps_results = self.client.list_experiments(project_uuid)
        assert len(xps_results) == 10

        # pagination

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

        xps_results = self.client.list_experiments(project_uuid, page=2)
        assert len(xps_results) == 10

    @httpretty.activate
    def test_create_experiment(self):
        project_uuid = uuid.uuid4().hex
        object = ExperimentConfig(name=faker.word(), project=project_uuid)
        httpretty.register_uri(httpretty.POST,
                               ProjectClient._build_url(
                                   self.client.base_url,
                                   ProjectClient.ENDPOINT, project_uuid,
                                   'experiments'),
                               body=json.dumps(object.to_dict()),
                               content_type='application/json',
                               status=200)
        result = self.client.create_experiment(project_uuid, object)
        assert result.to_dict() == object.to_dict()
Exemple #12
0
 def project(self):
     return ProjectClient(**self.params)