airbyte
airbyte copied to clipboard
Source Okta: add resource-sets (incremental supported)
What
- stop using the deprecated method get_updated_state, use state property and state setter instead
- the payload resource-sets is enveloped, _links.next.href contains the cursor
- add smallest_cursor property to handle various types of cursor in steams
How
Describe the solution
Recommended reading order
- source.python
🚨 User Impact 🚨
No impact, it's a new API stream
Pre-merge Checklist
Expand the relevant checklist and delete the others.
New Connector
Community member or Airbyter
- [x] Community member? Grant edit access to maintainers (instructions)
- [ ] Secrets in the connector's spec are annotated with
airbyte_secret
- [x] Unit & integration tests added and passing. Community members, please provide proof of success locally e.g: screenshot or copy-paste unit, integration, and acceptance test output. To run acceptance tests for a Python connector, follow instructions in the README. For java connectors run
./gradlew :airbyte-integrations:connectors:<name>:integrationTest
. - [ ] Code reviews completed
- [ ] Documentation updated
- [ ] Connector's
README.md
- [ ] Connector's
bootstrap.md
. See description and examples - [x]
docs/integrations/<source or destination>/<name>.md
including changelog. See changelog example - [ ]
docs/integrations/README.md
- [ ]
airbyte-integrations/builds.md
- [ ] Connector's
- [x] PR name follows PR naming conventions
Airbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
- [ ] Create a non-forked branch based on this PR and test the below items on it
- [ ] Build is successful
- [ ] If new credentials are required for use in CI, add them to GSM. Instructions.
- [ ]
/test connector=connectors/<name>
command is passing - [ ] New Connector version released on Dockerhub by running the
/publish
command described here - [ ] After the connector is published, connector added to connector index as described here
- [ ] Seed specs have been re-generated by building the platform and committing the changes to the seed spec files, as described here
Updating a connector
Community member or Airbyter
- [x] Grant edit access to maintainers (instructions)
- [ ] Secrets in the connector's spec are annotated with
airbyte_secret
- [x] Unit & integration tests added and passing. Community members, please provide proof of success locally e.g: screenshot or copy-paste unit, integration, and acceptance test output. To run acceptance tests for a Python connector, follow instructions in the README. For java connectors run
./gradlew :airbyte-integrations:connectors:<name>:integrationTest
. - [ ] Code reviews completed
- [ ] Documentation updated
- [ ] Connector's
README.md
- [ ] Connector's
bootstrap.md
. See description and examples - [x] Changelog updated in
docs/integrations/<source or destination>/<name>.md
including changelog. See changelog example
- [ ] Connector's
- [ ] PR name follows PR naming conventions
Airbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
- [ ] Create a non-forked branch based on this PR and test the below items on it
- [ ] Build is successful
- [ ] If new credentials are required for use in CI, add them to GSM. Instructions.
- [ ]
/test connector=connectors/<name>
command is passing - [ ] New Connector version released on Dockerhub and connector version bumped by running the
/publish
command described here
Connector Generator
- [ ] Issue acceptance criteria met
- [ ] PR name follows PR naming conventions
- [ ] If adding a new generator, add it to the list of scaffold modules being tested
- [ ] The generator test modules (all connectors with
-scaffold
in their name) have been updated with the latest scaffold by running./gradlew :airbyte-integrations:connector-templates:generator:testScaffoldTemplates
then checking in your changes - [ ] Documentation which references the generator is updated as needed
Tests
Unit
Put your unit tests output here.
Integration
Put your integration tests output here.
Acceptance
collecting ...
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_config_match_spec[inputs0] ✓ 4% ▌
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_match_expected[inputs0] ✓ 8% ▉
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_docker_env[inputs0] ✓ 12% █▍
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_oneof_usage[inputs0] ✓ 17% █▋
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_required[inputs0] ✓ 21% ██▏
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_optional[inputs0] ✓ 25% ██▌
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_has_secret[inputs0] ✓ 29% ██▉
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_secret_never_in_the_output[inputs0] ✓ 33% ███▍
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_defined_refs_exist_in_json_spec_file[inputs0] ✓ 38% ███▊
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestSpec.test_oauth_flow_parameters[inputs0] ✓ 42% ████▎
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestConnection.test_check[inputs0] ✓ 46% ████▋
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestConnection.test_check[inputs1] ✓ 50% █████
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_discover[inputs0] ✓ 54% █████▌
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_defined_cursors_exist_in_schema[inputs0] ✓ 58% █████▉
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_defined_refs_exist_in_schema[inputs0] ✓ 62% ██████▍
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_defined_keyword_exist_in_schema[inputs0-allOf] ✓ 67% ██████▋
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_defined_keyword_exist_in_schema[inputs0-not] ✓ 71% ███████▏
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestDiscovery.test_primary_keys_exist_in_schema[inputs0] ✓ 75% ███████▌
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestBasicRead.test_read[inputs0] ✓ 79% ███████▉ {"type": "LOG", "log": {"level": "ERROR", "message": "Docker container was failed, code 1, error:\n{\"type\": \"TRACE\", \"trace\": {\"type\": \"ERROR\", \"emitted_at\": 1657757361857.2422, \"error\": {\"message\": \"Something went wrong in the connector. See the logs for more details.\", \"internal_message\": \"2 validation errors for ConfiguredAirbyteCatalog\\nstreams -> 0 -> sync_mode\\n value is not a valid enumeration member; permitted: 'full_refresh', 'incremental' (type=type_error.enum; enum_values=[<SyncMode.full_refresh: 'full_refresh'>, <SyncMode.incremental: 'incremental'>])\\nstreams -> 0 -> destination_sync_mode\\n value is not a valid enumeration member; permitted: 'append', 'overwrite', 'append_dedup' (type=type_error.enum; enum_values=[<DestinationSyncMode.append: 'append'>, <DestinationSyncMode.overwrite: 'overwrite'>, <DestinationSyncMode.append_dedup: 'append_dedup'>])\", \"stack_trace\": \"Traceback (most recent call last):\\n File \\\"/airbyte/integration_code/main.py\\\", line 13, in <module>\\n launch(source, sys.argv[1:])\\n File \\\"/usr/local/lib/python3.9/site-packages/airbyte_cdk/entrypoint.py\\\", line 116, in launch\\n for message in source_entrypoint.run(parsed_args):\\n File \\\"/usr/local/lib/python3.9/site-packages/airbyte_cdk/entrypoint.py\\\", line 104, in run\\n config_catalog = self.source.read_catalog(parsed_args.catalog)\\n File \\\"/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/source.py\\\", line 54, in read_catalog\\n return ConfiguredAirbyteCatalog.parse_obj(self.read_config(catalog_path))\\n File \\\"/usr/local/lib/python3.9/site-packages/pydantic/main.py\\\", line 521, in parse_obj\\n return cls(**obj)\\n File \\\"/usr/local/lib/python3.9/site-packages/pydantic/main.py\\\", line 341, in __init__\\n raise validation_error\\npydantic.error_wrappers.ValidationError: 2 validation errors for ConfiguredAirbyteCatalog\\nstreams -> 0 -> sync_mode\\n value is not a valid enumeration member; permitted: 'full_refresh', 'incremental' (type=type_error.enum; enum_values=[<SyncMode.full_refresh: 'full_refresh'>, <SyncMode.incremental: 'incremental'>])\\nstreams -> 0 -> destination_sync_mode\\n value is not a valid enumeration member; permitted: 'append', 'overwrite', 'append_dedup' (type=type_error.enum; enum_values=[<DestinationSyncMode.append: 'append'>, <DestinationSyncMode.overwrite: 'overwrite'>, <DestinationSyncMode.append_dedup: 'append_dedup'>])\\n\", \"failure_type\": \"system_error\"}}}\n"}}
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py::TestBasicRead.test_airbyte_trace_message_on_failure[inputs0] ✓ 83% ████████▍
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_full_refresh.py::TestFullRefresh.test_sequential_reads[inputs0] ✓ 88% ████████▊
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_incremental.py::TestIncremental.test_two_sequential_reads[inputs0] ✓ 92% █████████▎
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_incremental.py::TestIncremental.test_read_sequential_slices[inputs0] ✓ 96% █████████▋
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_incremental.py::TestIncremental.test_state_with_abnormally_large_values[inputs0] ✓ 100% ██████████
{"type": "LOG", "log": {"level": "INFO", "message": "/Users/bartdev/Playground/airbyte/airbyte-integrations/connectors/source-okta - SAT run - 6ad1dbc6c4a896c6fcb6ee69dabc3577e1c095a4 - PASSED"}}
============================================================================================================================== warnings summary ==============================================================================================================================
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py: 17 warnings
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_full_refresh.py: 1 warning
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_incremental.py: 3 warnings
/Users/bartdev/Playground/airbyte/airbyte-integrations/connectors/source-okta/.venv/lib/python3.9/site-packages/docker/utils/utils.py:52: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
s1 = StrictVersion(v1)
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_core.py: 17 warnings
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_full_refresh.py: 1 warning
airbyte-integrations/bases/source-acceptance-test/source_acceptance_test/tests/test_incremental.py: 3 warnings
/Users/bartdev/Playground/airbyte/airbyte-integrations/connectors/source-okta/.venv/lib/python3.9/site-packages/docker/utils/utils.py:53: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
s2 = StrictVersion(v2)
-- Docs: https://docs.pytest.org/en/stable/warnings.html
Results (57.35s):
24 passed
@marcosmarxm, can you help review the PR? Thanks.
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2678415263 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2678415263 :bug: https://gradle.com/s/glp72c53rjwiu
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
======================== 1 failed, 23 passed in 21.56s =========================
I trggered the test but @sajarin will review it.
FAILED test_core.py::TestBasicRead::test_read[inputs0]
fails because there's no resource-set created in the test account. Can you follow the steps below to create one?
Under the admin portal, go to Security -> Administrators -> Resources tab, to create a new resource-set
In the following screenshot, I create a resource set for all slack app instances. You can pick users or groups. Creating a new resource set but not assigning it to a role doesn't play no effect on your account.
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2731796003 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2731796003 :bug: https://gradle.com/s/6z23r3c22cllm
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
FAILED test_core.py::TestBasicRead::test_read[inputs1] - AssertionError: All ...
======================== 2 failed, 27 passed in 39.58s =========================
/test connector=connectors/source-okta
🕑 connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2731796003 ❌ connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2731796003 🐛 https://gradle.com/s/6z23r3c22cllm
Build Failed
Test summary info:
=========================== short test summary info ============================ FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ... FAILED test_core.py::TestBasicRead::test_read[inputs1] - AssertionError: All ... ======================== 2 failed, 27 passed in 39.58s =========================
@marcosmarxm , the tests failed because of missing resource-set in the test account, can you help add one? I included some screenshots in the PR, let me know if you have a question, thanks.
/test connector=connectors/source-okta
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2775487630 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2775487630 :bug:
/test connector=connectors/source-okta
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2791197868 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2791197868 :bug: https://gradle.com/s/a6jl6hf2oh7vq
Build Failed
Test summary info:
Could not find result summary
rebased again, not sure why "Could not find result summary"
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2791515309 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2791515309 :bug: https://gradle.com/s/gxwf7snmibc46
Build Failed
Test summary info:
Could not find result summary
because the permission is merged (version 0.1.11), I rebased and addressed the conflicts. Can you help me kick off the tests again?
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2793396191 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2793396191 :bug: https://gradle.com/s/5qdmiyrssuwpa
Build Failed
Test summary info:
Could not find result summary
@YiyangLi I'll took a look at this tomorrow. Apologies for the delay.
@sajarin how can I help?
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2827193707 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2827193707 :bug: https://gradle.com/s/hykjt3hnrgtvk
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED unit_tests/test_streams.py::TestStreamGroupMembers::test_group_members
FAILED unit_tests/test_streams.py::TestStreamResourceSets::test_resource_sets
FAILED unit_tests/test_streams.py::TestStreamResourceSets::test_resource_sets_parse_response
FAILED unit_tests/test_streams.py::TestStreamResourceSets::test_resource_sets_next_page_token
FAILED unit_tests/test_streams.py::TestStreamResourceSets::test_resource_sets_request_params
[31m================== [31m[1m5 failed[0m, [32m55 passed[0m, [33m134 warnings[0m[31m in 0.90s[0m[31m ==================[0m
@YiyangLi I think one of the latest PRs for this connector added a start_date param which is causing some of your tests to no longer pass. If you have time, could you push a fix?
/test connector=connectors/source-okta
@YiyangLi I think one of the latest PRs for this connector added a start_date param which is causing some of your tests to no longer pass. If you have time, could you push a fix?
@sajarin I fixed the issue, and it passes both unit tests and acceptance tests in my local environment, can you help kick off the tests again? thanks.
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2832534188 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2832534188 :bug: https://gradle.com/s/kwwvprub2mn5a
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED test_core.py::TestConnection::test_check[inputs3] - docker.errors.Cont...
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
FAILED test_core.py::TestBasicRead::test_read[inputs1] - AssertionError: All ...
FAILED test_full_refresh.py::TestFullRefresh::test_sequential_reads[inputs0]
=================== 4 failed, 32 passed in 220.52s (0:03:40) ===================
@sajarin
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
FAILED test_core.py::TestBasicRead::test_read[inputs1] - AssertionError: All ...
I checked the logs, TestBasicRead is failed because there are no resource-sets entities in the test account. Can you help add one? I attached the screenshots above to illustrate the problem. Ping me in Slack if you have a question.
Meanwhile, I will work on the other 2 failures, and will get back to you in a few hours. Thanks.
@sajarin Are you able to access the secrets/config.json used to run the acceptance test?
full_refresh:
- config_path: "secrets/config.json"
configured_catalog_path: "integration_tests/configured_catalog.json"
I checked the logs regarding the FAILED test_full_refresh.py::TestFullRefresh::test_sequential_reads[inputs0]
. The test runs 2 full imports and compares the results. It's a very good test. I attached the difference below. The test runner gets a rate limit warning from the first run, which appends a log when the 2nd full import is run.
I wondered if you can help to adjust the config.json, so that it fetches less when full imports are run. It seems that the startDate is around 2021-03-21. The feature startDate
is added in the PR https://github.com/airbytehq/airbyte/pull/15050
{
"domain": "myOrg",
"start_date": "2022-08-09T00:00:00Z", // <-- can you add a date or modify here?
"credentials": {
"auth_type": "api_token",
"api_token": "yourToken"
}
}
The log difference between 2 full imports.
2022-08-10T12:28:24.1519329Z {
2022-08-10T12:28:24.1519462Z "actor": {
2022-08-10T12:28:24.1519607Z "id": "00umj7d1bEH95JjIE5d6",
2022-08-10T12:28:24.1519726Z "type": "User",
2022-08-10T12:28:24.1519974Z "alternateId": "[email protected]",
2022-08-10T12:28:24.1520121Z "displayName": "Shrif Nada",
2022-08-10T12:28:24.1520256Z "detailEntry": null
2022-08-10T12:28:24.1520514Z },
2022-08-10T12:28:24.1520640Z "client": {
2022-08-10T12:28:24.1520774Z "userAgent": {
2022-08-10T12:28:24.1521014Z "rawUserAgent": "python-requests/2.28.1",
2022-08-10T12:28:24.1521133Z "os": "Unknown",
2022-08-10T12:28:24.1521267Z "browser": "UNKNOWN"
2022-08-10T12:28:24.1521384Z },
2022-08-10T12:28:24.1521507Z "zone": "null",
2022-08-10T12:28:24.1521636Z "device": "Unknown",
2022-08-10T12:28:24.1521752Z "id": null,
2022-08-10T12:28:24.1521883Z "ipAddress": "3.143.7.192",
2022-08-10T12:28:24.1522036Z "geographicalContext": null
2022-08-10T12:28:24.1522158Z },
2022-08-10T12:28:24.1522284Z "device": null,
2022-08-10T12:28:24.1522440Z "authenticationContext": {
2022-08-10T12:28:24.1522600Z "authenticationProvider": null,
2022-08-10T12:28:24.1522748Z "credentialProvider": null,
2022-08-10T12:28:24.1522879Z "credentialType": null,
2022-08-10T12:28:24.1523004Z "issuer": null,
2022-08-10T12:28:24.1523134Z "interface": null,
2022-08-10T12:28:24.1523279Z "authenticationStep": 0,
2022-08-10T12:28:24.1523468Z "externalSessionId": "trsX0Y095K_SkabzZ3hx_h_Eg"
2022-08-10T12:28:24.1523585Z },
2022-08-10T12:28:24.1523743Z "displayMessage": "Rate limit warning",
2022-08-10T12:28:24.1523927Z "eventType": "system.org.rate_limit.warning",
2022-08-10T12:28:24.1524054Z "outcome": {
2022-08-10T12:28:24.1524185Z "result": "SUCCESS",
2022-08-10T12:28:24.1524309Z "reason": null
2022-08-10T12:28:24.1524424Z },
2022-08-10T12:28:24.1524632Z "published": "2022-08-10T12:25:09Z",
2022-08-10T12:28:24.1524888Z "securityContext": {
2022-08-10T12:28:24.1525014Z "asNumber": null,
2022-08-10T12:28:24.1525139Z "asOrg": null,
2022-08-10T12:28:24.1525264Z "isp": null,
2022-08-10T12:28:24.1525388Z "domain": null,
2022-08-10T12:28:24.1525514Z "isProxy": null
2022-08-10T12:28:24.1525627Z },
2022-08-10T12:28:24.1525751Z "severity": "WARN",
2022-08-10T12:28:24.1525888Z "debugContext": {
2022-08-10T12:28:24.1526018Z "debugData": {
2022-08-10T12:28:24.1526208Z "requestId": "YvOjpRl9PpbIUf9vvql73AAADE8",
2022-08-10T12:28:24.1526353Z "warningPercent": "60",
2022-08-10T12:28:24.1526618Z "dtHash": "ee75b9f0b0b90bc30b3a57aac75ce62134196d23b9a85aaecc14a077387c0cfd",
2022-08-10T12:28:24.1526783Z "rateLimitSecondsToReset": "45",
2022-08-10T12:28:24.1526912Z "threshold": "20",
2022-08-10T12:28:24.1527034Z "timeSpan": "1",
2022-08-10T12:28:24.1527190Z "rateLimitScopeType": "ORG",
2022-08-10T12:28:24.1527337Z "requestUri": "/api/v1/logs",
2022-08-10T12:28:24.1527497Z "userId": "00umj7d1bEH95JjIE5d6",
2022-08-10T12:28:24.1527848Z "url": "/api/v1/logs?limit=200&since=2021-03-21T20%3A49%3A13%2B00%3A00&after=1658513870546_1",
2022-08-10T12:28:24.1527983Z "timeUnit": "MINUTES"
2022-08-10T12:28:24.1528091Z {
2022-08-10T12:28:24.1528207Z },
2022-08-10T12:28:24.1528429Z "legacyEventType": "core.framework.ratelimit.warning",
2022-08-10T12:28:24.1528565Z "transaction": {
2022-08-10T12:28:24.1528692Z "type": "WEB",
2022-08-10T12:28:24.1528862Z "id": "YvOjpRl9PpbIUf9vvql73AAADE8",
2022-08-10T12:28:24.1528989Z "detail": {
2022-08-10T12:28:24.1529171Z "requestApiTokenId": "00T1f11psiA9Zb3hT5d6"
2022-08-10T12:28:24.1529278Z {
2022-08-10T12:28:24.1529393Z },
2022-08-10T12:28:24.1529642Z "uuid": "79364c9f-18a7-11ed-824c-f39c5aba5bdb",
2022-08-10T12:28:24.1529766Z "version": "0",
2022-08-10T12:28:24.1529892Z "request": {
2022-08-10T12:28:24.1530015Z "ipChain": [
2022-08-10T12:28:24.1530130Z {
2022-08-10T12:28:24.1530258Z "ip": "3.143.7.192",
2022-08-10T12:28:24.1530408Z "geographicalContext": null,
2022-08-10T12:28:24.1530539Z "version": "V4",
2022-08-10T12:28:24.1530661Z "source": null
2022-08-10T12:28:24.1530776Z {
2022-08-10T12:28:24.1530885Z ]
2022-08-10T12:28:24.1530996Z },
2022-08-10T12:28:24.1531111Z "target": [
2022-08-10T12:28:24.1531227Z {
2022-08-10T12:28:24.1531359Z "id": "/api/v1/logs",
2022-08-10T12:28:24.1531503Z "type": "URL Pattern",
2022-08-10T12:28:24.1531639Z "alternateId": null,
2022-08-10T12:28:24.1531774Z "displayName": null,
2022-08-10T12:28:24.1531909Z "detailEntry": null
2022-08-10T12:28:24.1532017Z },
2022-08-10T12:28:24.1532134Z {
2022-08-10T12:28:24.1532380Z "id": "b192d91c-b242-36da-9332-d97a5579f865",
2022-08-10T12:28:24.1532517Z "type": "Bucket Uuid",
2022-08-10T12:28:24.1532653Z "alternateId": null,
2022-08-10T12:28:24.1532789Z "displayName": null,
2022-08-10T12:28:24.1532912Z "detailEntry": null
2022-08-10T12:28:24.1533030Z }
2022-08-10T12:28:24.1533141Z ]
2022-08-10T12:28:24.1533255Z }
2022-08-10T12:28:24.1533368Z ]
/test connector=connectors/source-okta
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2841266067 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2841266067 :bug: https://gradle.com/s/t7nybhvib5tpm
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
=================== 1 failed, 35 passed in 95.99s (0:01:35) ====================
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2841463823 :x: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2841463823 :bug: https://gradle.com/s/6wx4b76tyzbu2
Build Failed
Test summary info:
=========================== short test summary info ============================
FAILED test_core.py::TestBasicRead::test_read[inputs0] - AssertionError: All ...
FAILED test_full_refresh.py::TestFullRefresh::test_sequential_reads[inputs0]
=================== 2 failed, 34 passed in 212.77s (0:03:32) ===================
/test connector=connectors/source-okta
/test connector=connectors/source-okta
:clock2: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2842884349 :white_check_mark: connectors/source-okta https://github.com/airbytehq/airbyte/actions/runs/2842884349 Python tests coverage:
Name Stmts Miss Cover
------------------------------------------------------------------------
source_acceptance_test/utils/__init__.py 6 0 100%
source_acceptance_test/tests/__init__.py 4 0 100%
source_acceptance_test/__init__.py 2 0 100%
source_acceptance_test/tests/test_full_refresh.py 52 2 96%
source_acceptance_test/utils/asserts.py 37 2 95%
source_acceptance_test/config.py 82 6 93%
source_acceptance_test/utils/json_schema_helper.py 105 13 88%
source_acceptance_test/tests/test_incremental.py 121 25 79%
source_acceptance_test/utils/common.py 77 17 78%
source_acceptance_test/tests/test_core.py 355 107 70%
source_acceptance_test/utils/compare.py 62 23 63%
source_acceptance_test/base.py 10 4 60%
source_acceptance_test/utils/connector_runner.py 110 48 56%
------------------------------------------------------------------------
TOTAL 1023 247 76%
Name Stmts Miss Cover
--------------------------------------------------
source_okta/utils.py 44 0 100%
source_okta/authenticator.py 14 0 100%
source_okta/__init__.py 2 0 100%
source_okta/source.py 194 7 96%
--------------------------------------------------
TOTAL 254 7 97%
Build Passed
Test summary info:
All Passed
is it ready to merge?
/publish connector=connectors/source-okta
:clock2: Publishing the following connectors:
connectors/source-okta
https://github.com/airbytehq/airbyte/actions/runs/2848036528
Connector | Did it publish? | Were definitions generated? |
---|---|---|
connectors/source-okta | :white_check_mark: | :white_check_mark: |
if you have connectors that successfully published but failed definition generation, follow step 4 here ▶️