Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix broken push tests #27

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions test/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@
import os
from functools import wraps
from unittest import SkipTest
from typing import Tuple
from typing import Tuple, Optional

from qiskit.test.testing_options import get_test_options
from qiskit_ibm_runtime import least_busy
from qiskit_ibm_runtime import IBMRuntimeService
from qiskit_ibm_runtime.credentials import (Credentials,
discover_credentials)
from qiskit_ibm_runtime.hub_group_project import HubGroupProject


def requires_qe_access(func):
Expand Down Expand Up @@ -88,7 +89,9 @@ def _wrapper(*args, **kwargs):
qe_url = kwargs.pop('qe_url')
service = IBMRuntimeService(qe_token, qe_url)
# Get open access hgp
open_hgp = service._get_hgp()
open_hgp = _get_open_hgp(service)
if not open_hgp:
raise SkipTest('Requires open access hub/group/project.')
# Get a premium hgp
premium_hub, premium_group, premium_project = _get_custom_hgp()
if not all([premium_hub, premium_group, premium_project]):
Expand Down Expand Up @@ -278,6 +281,19 @@ def _get_credentials():
raise Exception('Unable to locate valid credentials.')


def _get_open_hgp(service: IBMRuntimeService) -> Optional[HubGroupProject]:
"""Get open hub/group/project

Returns:
Open hub/group/project or ``None``.
"""
hgps = service._get_hgps()
for hgp in hgps:
if hgp.is_open:
return hgp
return None


def _get_custom_hgp() -> Tuple[str, str, str]:
"""Get a custom hub/group/project

Expand Down
2 changes: 1 addition & 1 deletion test/ibm/test_basic_server_paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@ def test_device_status_and_job_limit(self):
with self.subTest(desc=desc, backend=backend):
self.assertTrue(backend.status())
job_limit = backend.job_limit()
if desc == 'public_provider':
if desc == 'open_hgp':
self.assertIsNotNone(job_limit.maximum_jobs)
self.assertTrue(job_limit)
27 changes: 10 additions & 17 deletions test/ibm/test_ibm_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from unittest import skipIf, mock
from configparser import ConfigParser
from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister
from qiskit.test import providers
from qiskit.providers.exceptions import QiskitBackendNotFoundError
from qiskit.providers.models.backendproperties import BackendProperties

Expand Down Expand Up @@ -317,30 +316,24 @@ def test_get_hgps_no_filter(self):
self.assertIn(self.service._default_hgp, hgps)


class TestIBMProviderServices(IBMTestCase, providers.ProviderTestCase):
class TestIBMProviderServices(IBMTestCase):
"""Tests for services provided by the IBMRuntimeService class."""

provider_cls = IBMRuntimeService
backend_name = 'ibmq_qasm_simulator'

def setUp(self):
@requires_provider
def setUp(self, service, hub, group, project):
"""Initial test setup."""
# pylint: disable=arguments-differ
super().setUp()
self.service = service
self.hub = hub
self.group = group
self.project = project
qr = QuantumRegister(1)
cr = ClassicalRegister(1)
self.qc1 = QuantumCircuit(qr, cr, name='circuit0')
self.qc1.h(qr[0])
self.qc1.measure(qr, cr)

@requires_provider
def _get_provider(self, provider, hub, group, project):
"""Return an instance of a provider."""
# pylint: disable=arguments-differ
self.hub = hub
self.group = group
self.project = project
return provider

def test_remote_backends_exist_real_device(self):
"""Test if there are remote backends that are devices."""
remotes = self.service.backends(simulator=False, hub=self.hub,
Expand Down Expand Up @@ -420,7 +413,7 @@ def test_remote_backend_properties_filter_date(self):

def test_provider_backends(self):
"""Test provider_backends have correct attributes."""
provider_backends = {back for back in dir(self.service.backend)
if isinstance(getattr(self.service.backend, back), IBMBackend)}
provider_backends = {back for back in dir(self.service)
if isinstance(getattr(self.service, back), IBMBackend)}
backends = {back.name().lower() for back in self.service._backends.values()}
self.assertEqual(provider_backends, backends)
4 changes: 2 additions & 2 deletions test/ibm/test_jupyter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ class TestBackendInfo(IBMTestCase):

@classmethod
@requires_provider
def setUpClass(cls, provider, hub, group, project):
def setUpClass(cls, service, hub, group, project):
# pylint: disable=arguments-differ
super().setUpClass()
cls.hub = hub
cls.group = group
cls.project = project
cls.backends = _get_backends(provider)
cls.backends = _get_backends(service)

def test_config_tab(self):
"""Test config tab."""
Expand Down