-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
🎉 Source Google Workspace Admin: use SAT #6878
Merged
Merged
Changes from 8 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
452b3cd
Add SAT
gaart 1b62e8f
Upd changelog
gaart 6846a58
Refactor
gaart 04fdd81
Upd acceptance-test-config: validate basic_read schema
gaart e16c433
Upd schemas: replace dynamic fields with object type
gaart 3cff46f
Updates after review
gaart 801a317
Upd schemas
gaart 14602bf
Upd schema
gaart 7c19379
Update docs/integrations/sources/google-workspace-admin-reports.md
gaart 478a600
Merge branch 'master' into gaart/6820-source-gwa-add-sat
gaart File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
...-integrations/connectors/source-google-workspace-admin-reports/acceptance-test-config.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# See [Source Acceptance Tests](https://docs.airbyte.io/connector-development/testing-connectors/source-acceptance-tests-reference) | ||
# for more information about how to configure these tests | ||
connector_image: airbyte/source-google-workspace-admin-reports:dev | ||
tests: | ||
spec: | ||
- spec_path: "source_google_workspace_admin_reports/spec.json" | ||
connection: | ||
- config_path: "secrets/config.json" | ||
status: "succeed" | ||
- config_path: "integration_tests/invalid_config.json" | ||
status: "failed" | ||
discovery: | ||
- config_path: "secrets/config.json" | ||
basic_read: | ||
- config_path: "secrets/config.json" | ||
configured_catalog_path: "integration_tests/configured_catalog.json" | ||
empty_streams: ["admin"] | ||
full_refresh: | ||
- config_path: "secrets/config.json" | ||
configured_catalog_path: "integration_tests/configured_catalog.json" | ||
incremental: | ||
- config_path: "secrets/config.json" | ||
configured_catalog_path: "integration_tests/configured_catalog.json" | ||
future_state_path: "integration_tests/abnormal_state.json" |
16 changes: 16 additions & 0 deletions
16
...e-integrations/connectors/source-google-workspace-admin-reports/acceptance-test-docker.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#!/usr/bin/env sh | ||
|
||
# Build latest connector image | ||
docker build . -t $(cat acceptance-test-config.yml | grep "connector_image" | head -n 1 | cut -d: -f2):dev | ||
|
||
# Pull latest acctest image | ||
docker pull airbyte/source-acceptance-test:latest | ||
|
||
# Run | ||
docker run --rm -it \ | ||
-v /var/run/docker.sock:/var/run/docker.sock \ | ||
-v /tmp:/tmp \ | ||
-v $(pwd):/test_input \ | ||
airbyte/source-acceptance-test \ | ||
--acceptance-test-config /test_input | ||
|
11 changes: 2 additions & 9 deletions
11
airbyte-integrations/connectors/source-google-workspace-admin-reports/build.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,14 @@ | ||
plugins { | ||
id 'airbyte-python' | ||
id 'airbyte-docker' | ||
id 'airbyte-standard-source-test-file' | ||
id 'airbyte-source-acceptance-test' | ||
} | ||
|
||
airbytePython { | ||
moduleDirectory 'source_google_workspace_admin_reports' | ||
} | ||
|
||
airbyteStandardSourceTestFile { | ||
specPath = "source_google_workspace_admin_reports/spec.json" | ||
configPath = "secrets/config.json" | ||
configuredCatalogPath = "sample_files/configured_catalog.json" | ||
} | ||
|
||
|
||
dependencies { | ||
implementation files(project(':airbyte-integrations:bases:base-standard-source-test-file').airbyteDocker.outputs) | ||
implementation files(project(':airbyte-integrations:bases:source-acceptance-test').airbyteDocker.outputs) | ||
implementation files(project(':airbyte-integrations:bases:base-python').airbyteDocker.outputs) | ||
} |
Empty file.
17 changes: 17 additions & 0 deletions
17
...ns/connectors/source-google-workspace-admin-reports/integration_tests/abnormal_state.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"drive": { | ||
"time": "2121-04-04T22:01:22.313Z" | ||
}, | ||
"oauth_tokens": { | ||
"time": "2121-04-05T03:06:30.849Z" | ||
}, | ||
"admin": { | ||
"time": "2121-04-05T03:06:30.849Z" | ||
}, | ||
"logins": { | ||
"time": "2121-04-05T03:06:30.849Z" | ||
}, | ||
"mobile": { | ||
"time": "2121-04-05T03:06:30.849Z" | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
...grations/connectors/source-google-workspace-admin-reports/integration_tests/acceptance.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# | ||
# Copyright (c) 2021 Airbyte, Inc., all rights reserved. | ||
# | ||
|
||
|
||
import pytest | ||
|
||
pytest_plugins = ("source_acceptance_test.plugin",) | ||
|
||
|
||
@pytest.fixture(scope="session", autouse=True) | ||
def connector_setup(): | ||
"""This fixture is a placeholder for external resources that acceptance test might require.""" | ||
yield |
64 changes: 64 additions & 0 deletions
64
...onnectors/source-google-workspace-admin-reports/integration_tests/configured_catalog.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
{ | ||
"streams": [ | ||
{ | ||
"stream": { | ||
"name": "admin", | ||
"json_schema": {}, | ||
"supported_sync_modes": ["incremental"], | ||
"source_defined_cursor": true, | ||
"default_cursor_field": ["time"] | ||
}, | ||
"sync_mode": "incremental", | ||
"cursor_field": ["time"], | ||
"destination_sync_mode": "append" | ||
}, | ||
{ | ||
"stream": { | ||
"name": "drive", | ||
"json_schema": {}, | ||
"supported_sync_modes": ["incremental"], | ||
"source_defined_cursor": true, | ||
"default_cursor_field": ["time"] | ||
}, | ||
"sync_mode": "incremental", | ||
"cursor_field": ["time"], | ||
"destination_sync_mode": "append" | ||
}, | ||
{ | ||
"stream": { | ||
"name": "logins", | ||
"json_schema": {}, | ||
"supported_sync_modes": ["incremental"], | ||
"source_defined_cursor": true, | ||
"default_cursor_field": ["time"] | ||
}, | ||
"sync_mode": "incremental", | ||
"cursor_field": ["time"], | ||
"destination_sync_mode": "append" | ||
}, | ||
{ | ||
"stream": { | ||
"name": "mobile", | ||
"json_schema": {}, | ||
"supported_sync_modes": ["incremental"], | ||
"source_defined_cursor": true, | ||
"default_cursor_field": ["time"] | ||
}, | ||
"sync_mode": "incremental", | ||
"cursor_field": ["time"], | ||
"destination_sync_mode": "append" | ||
}, | ||
{ | ||
"stream": { | ||
"name": "oauth_tokens", | ||
"json_schema": {}, | ||
"supported_sync_modes": ["incremental"], | ||
"source_defined_cursor": true, | ||
"default_cursor_field": ["time"] | ||
}, | ||
"sync_mode": "incremental", | ||
"cursor_field": ["time"], | ||
"destination_sync_mode": "append" | ||
} | ||
] | ||
} |
5 changes: 5 additions & 0 deletions
5
...ns/connectors/source-google-workspace-admin-reports/integration_tests/invalid_config.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"credentials_json": "{\n \"type\": \"service_account\"}\n", | ||
"email": "test_email", | ||
"lookback": 0 | ||
} |
1 change: 1 addition & 0 deletions
1
airbyte-integrations/connectors/source-google-workspace-admin-reports/requirements.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
# This file is autogenerated -- only edit if you know what you are doing. Use setup.py for declaring dependencies. | ||
-e ../../bases/airbyte-protocol | ||
-e ../../bases/base-python | ||
-e ../../bases/source-acceptance-test | ||
-e . |
8 changes: 0 additions & 8 deletions
8
...egrations/connectors/source-google-workspace-admin-reports/sample_files/sample_state.json
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,8 +20,7 @@ | |
"customerId": { | ||
"type": "string" | ||
} | ||
}, | ||
"required": ["time", "uniqueQualifier", "applicationName", "customerId"] | ||
} | ||
}, | ||
"actor": { | ||
"type": "object", | ||
|
@@ -38,8 +37,7 @@ | |
"key": { | ||
"type": "string" | ||
} | ||
}, | ||
"required": ["callerType", "email", "profileId", "key"] | ||
} | ||
}, | ||
"ownerDomain": { | ||
"type": "string" | ||
|
@@ -49,19 +47,20 @@ | |
}, | ||
"events": { | ||
"type": "array", | ||
"items": [ | ||
{ | ||
"type": "object", | ||
"properties": { | ||
"type": { | ||
"type": "string" | ||
}, | ||
"name": { | ||
"type": "string" | ||
}, | ||
"parameters": { | ||
"type": "array", | ||
"items": [ | ||
"items": { | ||
"type": "object", | ||
"properties": { | ||
"type": { | ||
"type": "string" | ||
}, | ||
"name": { | ||
"type": "string" | ||
}, | ||
"parameters": { | ||
"type": "array", | ||
"items": { | ||
"type": "object", | ||
"anyOf": [ | ||
{ | ||
"type": "object", | ||
"properties": { | ||
|
@@ -70,22 +69,53 @@ | |
}, | ||
"value": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
{ | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
}, | ||
"intValue": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
{ | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
}, | ||
"boolValue": { | ||
"type": "boolean" | ||
} | ||
} | ||
}, | ||
{ | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
}, | ||
"multiValue": { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💪🏼 |
||
"type": "array", | ||
"items": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
"required": ["name", "value", "intValue", "boolValue"] | ||
} | ||
} | ||
] | ||
} | ||
}, | ||
"required": ["type", "name", "parameters"] | ||
} | ||
} | ||
] | ||
} | ||
}, | ||
"time": { | ||
"type": "string" | ||
} | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and below the events field has a dynamic structure, that is, this field is returned as an array of objects with different subfields and variable nesting. Is this okay to replace it with an
object
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could explain more about "dynamic" schema? Just asking because we are losing a lot of specificity in the data which makes it harder to consume. Are these essentially
oneOf
s? Was the existing schema incorrect?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sherifnada The
parameters
field has a list of objects with variable payload (different objects within the same array at the same point of time), in some cases there are deeply nested structures, and the inner items are different from each other, so theoneOf
is not applicable, theanyOf
possibly could workThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am just worried this will cause breaking changes to the schema. This is a pretty important stream (events are potentially the most important resource in this stream) so like described in UX handbook sections
Describe output schemas as completely and reliably as possible
andBe very cautious about breaking changes to output schemas
, it is probably worth attempting to describe the schema as completely as possible. Do you have any insight into how doable this is? @gaartThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sherifnada schema updated, nested fields added