def test_do_sparql_status_and_cancel_silently(self):
        query = "SELECT * WHERE { ?s ?p ?o . ?s2 ?p2 ?o2 .?s3 ?p3 ?o3 .} ORDER BY DESC(?s) LIMIT 100"
        query_res = {}
        sparql_query_thread = threading.Thread(target=self.do_sparql_query_save_result, args=(query, query_res,))
        sparql_query_thread.start()
        time.sleep(3)

        query_id = ''
        request_generator = create_request_generator(AuthModeEnum.DEFAULT)
        status_res = do_sparql_status(self.host, self.port, self.ssl, request_generator, query_id)
        self.assertEqual(type(status_res), dict)
        self.assertTrue('acceptedQueryCount' in status_res)
        self.assertTrue('runningQueryCount' in status_res)
        self.assertEqual(1, status_res['runningQueryCount'])
        self.assertTrue('queries' in status_res)

        query_id = ''
        for q in status_res['queries']:
            if query in q['queryString']:
                query_id = q['queryId']

        self.assertNotEqual(query_id, '')

        cancel_res = do_sparql_cancel(self.host, self.port, self.ssl, request_generator, query_id, True)
        self.assertEqual(type(cancel_res), dict)
        self.assertTrue('acceptedQueryCount' in cancel_res)
        self.assertTrue('runningQueryCount' in cancel_res)
        self.assertTrue('queries' in cancel_res)

        sparql_query_thread.join()
        self.assertEqual(type(query_res['result']), dict)
        self.assertTrue('s3' in query_res['result']['head']['vars'])
        self.assertTrue('p3' in query_res['result']['head']['vars'])
        self.assertTrue('o3' in query_res['result']['head']['vars'])
        self.assertEqual([], query_res['result']['results']['bindings'])
Пример #2
0
    def sparql_status(self, line='', local_ns: dict = None):
        parser = argparse.ArgumentParser()
        parser.add_argument('-q', '--queryId', default='',
                            help='The ID of a running SPARQL query. Only displays the status of the specified query.')
        parser.add_argument('-c', '--cancelQuery', action='store_true',
                            help='Tells the status command to cancel a query. This parameter does not take a value')
        parser.add_argument('-s', '--silent', action='store_true',
                            help='If silent=true then the running query is cancelled and the HTTP response code is 200. If silent is not present or silent=false, the query is cancelled with an HTTP 500 status code.')
        parser.add_argument('--store-to', type=str, default='', help='store query result to this variable')
        args = parser.parse_args(line.split())

        request_generator = create_request_generator(self.graph_notebook_config.auth_mode,
                                                     self.graph_notebook_config.iam_credentials_provider_type)

        if not args.cancelQuery:
            res = do_sparql_status(self.graph_notebook_config.host, self.graph_notebook_config.port,
                                   self.graph_notebook_config.ssl, request_generator, args.queryId)

        else:
            if args.queryId == '':
                print(SPARQL_CANCEL_HINT_MSG)
                return
            else:
                res = do_sparql_cancel(self.graph_notebook_config.host, self.graph_notebook_config.port,
                                       self.graph_notebook_config.ssl, request_generator, args.queryId, args.silent)

        store_to_ns(args.store_to, res, local_ns)
        print(json.dumps(res, indent=2))
 def test_do_sparql_status_nonexistent(self):
     query_id = "ac7d5a03-00cf-4280-b464-edbcbf51ffce"
     request_generator = create_request_generator(AuthModeEnum.DEFAULT)
     res = do_sparql_status(self.host, self.port, self.ssl, request_generator, query_id)
     self.assertEqual(type(res), dict)
     self.assertTrue('acceptedQueryCount' in res)
     self.assertTrue('runningQueryCount' in res)
     self.assertTrue('queries' in res)
 def setUp(self) -> None:
     request_generator = create_request_generator(
         AuthModeEnum.IAM, IAMAuthCredentialsProvider.ENV)
     res = do_sparql_status(self.host, self.port, self.ssl,
                            request_generator)
     for q in res['queries']:
         do_sparql_cancel(self.host, self.port, self.ssl, request_generator,
                          q['queryId'], False)
    def test_do_sparql_status_and_cancel(self):
        query = "SELECT * WHERE { ?s ?p ?o . ?s2 ?p2 ?o2 .?s3 ?p3 ?o3 .} ORDER BY DESC(?s) LIMIT 100"
        query_res = {}
        sparql_query_thread = threading.Thread(
            target=self.do_sparql_query_save_result, args=(
                query,
                query_res,
            ))
        sparql_query_thread.start()
        time.sleep(1)

        query_id = ''
        request_generator = create_request_generator(
            AuthModeEnum.IAM, IAMAuthCredentialsProvider.ENV)
        status_res = do_sparql_status(self.host, self.port, self.ssl,
                                      self.request_generator, query_id)
        self.assertEqual(type(status_res), dict)
        self.assertTrue('acceptedQueryCount' in status_res)
        self.assertTrue('runningQueryCount' in status_res)
        self.assertTrue('queries' in status_res)

        time.sleep(1)

        query_id = ''
        for q in status_res['queries']:
            if query in q['queryString']:
                query_id = q['queryId']

        self.assertNotEqual(query_id, '')

        cancel_res = do_sparql_cancel(self.host, self.port, self.ssl,
                                      request_generator, query_id, False)
        self.assertEqual(type(cancel_res), dict)
        self.assertTrue('acceptedQueryCount' in cancel_res)
        self.assertTrue('runningQueryCount' in cancel_res)
        self.assertTrue('queries' in cancel_res)

        sparql_query_thread.join()
        self.assertFalse('result' in query_res)
        self.assertTrue('error' in query_res)
        self.assertTrue('code' in query_res['error'])
        self.assertTrue('requestId' in query_res['error'])
        self.assertTrue('detailedMessage' in query_res['error'])
        self.assertEqual('CancelledByUserException',
                         query_res['error']['code'])
 def setUp(self) -> None:
     request_generator = create_request_generator(AuthModeEnum.DEFAULT)
     res = do_sparql_status(self.host, self.port, self.ssl, request_generator)
     for q in res['queries']:
         do_sparql_cancel(self.host, self.port, self.ssl, request_generator, q['queryId'], False)