Exemple #1
0
    def test_run_w_mixed_udfs(self):
        from google.cloud.bigquery._helpers import UDFResource
        RESOURCE_URI = 'gs://some-bucket/js/lib.js'
        INLINE_UDF_CODE = 'var someCode = "here";'
        PATH = 'projects/%s/queries' % self.PROJECT
        RESOURCE = self._makeResource(complete=False)
        conn = _Connection(RESOURCE)
        client = _Client(project=self.PROJECT, connection=conn)
        query = self._makeOne(self.QUERY, client)
        query.udf_resources = [
            UDFResource("resourceUri", RESOURCE_URI),
            UDFResource("inlineCode", INLINE_UDF_CODE)
        ]

        query.run()

        self.assertEqual(len(conn._requested), 1)
        req = conn._requested[0]
        self.assertEqual(req['method'], 'POST')
        self.assertEqual(req['path'], '/%s' % PATH)
        self.assertEqual(query.udf_resources, [
            UDFResource("resourceUri", RESOURCE_URI),
            UDFResource("inlineCode", INLINE_UDF_CODE)
        ])
        SENT = {
            'query':
            self.QUERY,
            'userDefinedFunctionResources': [{
                'resourceUri': RESOURCE_URI
            }, {
                "inlineCode": INLINE_UDF_CODE
            }]
        }
        self.assertEqual(req['data'], SENT)
        self._verifyResourceProperties(query, RESOURCE)
Exemple #2
0
    def test_from_query_job(self):
        from google.cloud.bigquery.dataset import Dataset
        from google.cloud.bigquery.job import QueryJob
        from google.cloud.bigquery._helpers import UDFResource
        DS_NAME = 'DATASET'
        RESOURCE_URI = 'gs://some-bucket/js/lib.js'
        client = _Client(self.PROJECT)
        job = QueryJob(
            self.JOB_NAME,
            self.QUERY,
            client,
            udf_resources=[UDFResource("resourceUri", RESOURCE_URI)])
        dataset = job.default_dataset = Dataset(DS_NAME, client)
        job.use_query_cache = True
        job.use_legacy_sql = True
        klass = self._getTargetClass()

        query = klass.from_query_job(job)

        self.assertEqual(query.name, self.JOB_NAME)
        self.assertEqual(query.query, self.QUERY)
        self.assertIs(query._client, client)
        self.assertIs(query._job, job)
        self.assertEqual(query.udf_resources, job.udf_resources)
        self.assertIs(query.default_dataset, dataset)
        self.assertTrue(query.use_query_cache)
        self.assertTrue(query.use_legacy_sql)
    def test_run_w_udf_resource_uri(self):
        from google.cloud.bigquery._helpers import UDFResource
        RESOURCE_URI = 'gs://some-bucket/js/lib.js'
        PATH = 'projects/%s/queries' % self.PROJECT
        RESOURCE = self._makeResource(complete=False)
        RESOURCE['userDefinedFunctionResources'] = [
            {
                'resourceUri': RESOURCE_URI
            },
        ]
        conn = _Connection(RESOURCE)
        client = _Client(project=self.PROJECT, connection=conn)
        query = self._make_one(self.QUERY, client)
        query.udf_resources = [UDFResource("resourceUri", RESOURCE_URI)]

        query.run()

        self.assertEqual(len(conn._requested), 1)
        req = conn._requested[0]
        self.assertEqual(req['method'], 'POST')
        self.assertEqual(req['path'], '/%s' % PATH)
        SENT = {
            'query': self.QUERY,
            'userDefinedFunctionResources': [{
                'resourceUri': RESOURCE_URI
            }]
        }
        self.assertEqual(req['data'], SENT)
        self._verifyResourceProperties(query, RESOURCE)
    def test_run_w_inline_udf(self):
        from google.cloud.bigquery._helpers import UDFResource
        INLINE_UDF_CODE = 'var someCode = "here";'
        PATH = 'projects/%s/queries' % self.PROJECT
        RESOURCE = self._makeResource(complete=False)
        RESOURCE['userDefinedFunctionResources'] = [
            {
                'inlineCode': INLINE_UDF_CODE
            },
        ]
        conn = _Connection(RESOURCE)
        client = _Client(project=self.PROJECT, connection=conn)
        query = self._make_one(self.QUERY, client)
        query.udf_resources = [UDFResource("inlineCode", INLINE_UDF_CODE)]

        query.run()

        self.assertEqual(len(conn._requested), 1)
        req = conn._requested[0]
        self.assertEqual(req['method'], 'POST')
        self.assertEqual(req['path'], '/%s' % PATH)
        SENT = {
            'query': self.QUERY,
            'userDefinedFunctionResources': [{
                'inlineCode': INLINE_UDF_CODE
            }]
        }
        self.assertEqual(req['data'], SENT)
        self._verifyResourceProperties(query, RESOURCE)
 def test_ctor_w_udf_resources(self):
     from google.cloud.bigquery._helpers import UDFResource
     RESOURCE_URI = 'gs://some-bucket/js/lib.js'
     udf_resources = [UDFResource("resourceUri", RESOURCE_URI)]
     client = _Client(self.PROJECT)
     query = self._make_one(self.QUERY, client, udf_resources=udf_resources)
     self.assertEqual(query.udf_resources, udf_resources)
Exemple #6
0
    def test_instance_getter_w_non_empty_list(self):
        from google.cloud.bigquery._helpers import UDFResource
        RESOURCE_URI = 'gs://some-bucket/js/lib.js'
        udf_resources = [UDFResource("resourceUri", RESOURCE_URI)]
        _, klass = self._descriptor_and_klass()
        instance = klass()
        instance._udf_resources = tuple(udf_resources)

        self.assertEqual(instance.udf_resources, udf_resources)
 def test_run_sync_query_w_udf_resources(self):
     from google.cloud.bigquery._helpers import UDFResource
     from google.cloud.bigquery.query import QueryResults
     RESOURCE_URI = 'gs://some-bucket/js/lib.js'
     PROJECT = 'PROJECT'
     QUERY = 'select count(*) from persons'
     creds = _make_credentials()
     http = object()
     client = self._make_one(project=PROJECT, credentials=creds, http=http)
     udf_resources = [UDFResource("resourceUri", RESOURCE_URI)]
     query = client.run_sync_query(QUERY, udf_resources=udf_resources)
     self.assertIsInstance(query, QueryResults)
     self.assertIs(query._client, client)
     self.assertIsNone(query.name)
     self.assertEqual(query.query, QUERY)
     self.assertEqual(query.udf_resources, udf_resources)
     self.assertEqual(query.query_parameters, [])
 def test_run_async_w_udf_resources(self):
     from google.cloud.bigquery._helpers import UDFResource
     from google.cloud.bigquery.job import QueryJob
     RESOURCE_URI = 'gs://some-bucket/js/lib.js'
     PROJECT = 'PROJECT'
     JOB = 'job_name'
     QUERY = 'select count(*) from persons'
     creds = _make_credentials()
     http = object()
     client = self._make_one(project=PROJECT, credentials=creds, http=http)
     udf_resources = [UDFResource("resourceUri", RESOURCE_URI)]
     job = client.run_async_query(JOB, QUERY, udf_resources=udf_resources)
     self.assertIsInstance(job, QueryJob)
     self.assertIs(job._client, client)
     self.assertEqual(job.name, JOB)
     self.assertEqual(job.query, QUERY)
     self.assertEqual(job.udf_resources, udf_resources)
     self.assertEqual(job.query_parameters, [])
    def test_from_query_job_wo_default_dataset(self):
        from google.cloud.bigquery.job import QueryJob
        from google.cloud.bigquery._helpers import UDFResource
        RESOURCE_URI = 'gs://some-bucket/js/lib.js'
        client = _Client(self.PROJECT)
        job = QueryJob(
            self.JOB_NAME, self.QUERY, client,
            udf_resources=[UDFResource("resourceUri", RESOURCE_URI)])
        klass = self._getTargetClass()

        query = klass.from_query_job(job)

        self.assertEqual(query.query, self.QUERY)
        self.assertTrue(query._client is client)
        self.assertTrue(query._job is job)
        self.assertEqual(query.udf_resources, job.udf_resources)
        self.assertIsNone(query.default_dataset)
        self.assertIsNone(query.use_query_cache)
        self.assertIsNone(query.use_legacy_sql)