コード例 #1
0
    def test_submit_cancel_reply(self):
        """Handle a response for a canceled job."""
        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.post = lambda a, _: choose_reply(
                a, {'/problems/': '[%s]' % cancel_reply('123', 'abc123')})
            solver = dwave_micro_client.Solver(con, solver_data('abc123'))

            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            results = solver.sample_ising(linear, quad, num_reads=100)

            #
            with self.assertRaises(dwave_micro_client.CanceledFutureError):
                results.samples
コード例 #2
0
    def test_submit_null_reply(self):
        """Get an error when the server's response is incomplete."""
        # con = mock.Mock()
        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.post = lambda a, _: choose_reply(a, {'/problems/': ''})
            solver = dwave_micro_client.Solver(con, solver_data('abc123'))

            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            results = solver.sample_ising(linear, quad, num_reads=100)

            #
            with self.assertRaises(ValueError):
                results.samples
コード例 #3
0
    def test_submit_error_reply(self):
        """Handle an error on problem submission."""
        error_body = 'An error message'
        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.post = lambda a, _: choose_reply(
                a, {
                    '/problems/': '[%s]' % error_reply('123', 'abc123',
                                                       error_body)
                })
            solver = dwave_micro_client.Solver(con, solver_data('abc123'))

            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            results = solver.sample_ising(linear, quad, num_reads=100)

            #
            with self.assertRaises(dwave_micro_client.SolverFailureError):
                results.samples
コード例 #4
0
    def test_submit_ok_reply(self):
        """Handle a normal query and response."""
        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.post = lambda a, _: choose_reply(
                a, {
                    '/problems/':
                    '[%s]' % complete_no_answer_reply('123', 'abc123')
                })
            con.session.get = lambda a: choose_reply(
                a, {'/problems/123/': complete_reply('123', 'abc123')})
            solver = dwave_micro_client.Solver(con, solver_data('abc123'))

            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            results = solver.sample_ising(linear, quad, num_reads=100)

            #
            self._check(results, linear, quad, 100)
コード例 #5
0
    def test_cancel_without_id(self):
        """Make sure the cancel method submits to the right endpoint.

        When cancel is called before the submission has returned the problem id.
        """
        submission_id = 'test-id'
        reply_body = '[%s]' % continue_reply(submission_id, 'solver')

        release_reply = threading.Event()

        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.get = lambda a: choose_reply(
                a, {'/problems/?id={}'.format(submission_id): reply_body})

            def post(a, _):
                release_reply.wait()
                return choose_reply(
                    a, {'/problems/'.format(submission_id): reply_body})

            con.session.post = post
            con.session.delete = DeleteEvent.handle

            solver = dwave_micro_client.Solver(con, solver_data('abc123'))
            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            future = solver.sample_ising(linear, quad)
            future.cancel()

            try:
                release_reply.set()
                future.samples
                self.fail()
            except DeleteEvent as event:
                if event.url == '/problems/':
                    self.assertEqual(event.body,
                                     '["{}"]'.format(submission_id))
                else:
                    self.assertEqual(event.url,
                                     '/problems/{}/'.format(submission_id))
コード例 #6
0
    def test_submit_continue_then_error_reply(self):
        """Handle polling for an error message."""
        with dwave_micro_client.Connection('', '') as con:
            con.session = mock.Mock()
            con.session.post = lambda a, _: choose_reply(
                a, {'/problems/': '[%s]' % continue_reply('123', 'abc123')})
            con.session.get = lambda a: choose_reply(
                a, {
                    '/problems/?id=123':
                    '[%s]' % error_reply('123', 'abc123', "error message")
                })
            solver = dwave_micro_client.Solver(con, solver_data('abc123'))

            # Build a problem
            linear = {index: 1 for index in solver.nodes}
            quad = {key: -1 for key in solver.undirected_edges}
            results = solver.sample_ising(linear, quad, num_reads=100)

            #
            with self.assertRaises(dwave_micro_client.SolverFailureError):
                self._check(results, linear, quad, 100)