Commit Graph

189 Commits

Author SHA1 Message Date
Shreyas Goenka a0e6f8f635
pull latest 2025-02-24 15:56:05 +01:00
Shreyas Goenka 8cfbb335c8
Merge remote-tracking branch 'origin' into async-logger-clean 2025-02-24 15:55:17 +01:00
Shreyas Goenka 0d37654735
add test for timeout 2025-02-24 15:26:31 +01:00
Shreyas Goenka f11f5895ff
toml files 2025-02-24 14:54:39 +01:00
Denis Bilenko 4881fd873b
acc: Write out.requests.txt immediately (#2368)
## Changes
- Instead of collecting requests in memory and writing them at the end
of the test, write them right away. Then test authors can do filtering
with jq in 'script' or collect individual files per different command.
- testserver is now simpler - it just calls a caller-provided function.
The logging logic is moved to acceptance_test.go.

See https://github.com/databricks/cli/pull/2359/files#r1967591173

## Tests
Existing tests.
2025-02-24 13:37:05 +00:00
Lennart Kats (databricks) f99716b0a5
Remove `run_as` from the built-in templates (#2044)
## Changes

This removes the `run-as` property from the default templates. It's a
useful property but it still only works for jobs and it makes the
default databricks.yml a bit longer. It seems like users can just learn
about it from the docs and/or vary their deployment identity.

Depends on https://github.com/databricks/cli/pull/1712.
2025-02-24 08:31:46 +00:00
Shreyas Goenka 69f5b037e6
remove log line 2025-02-21 18:08:00 +01:00
Shreyas Goenka 68646a583d
remove leaking logs 2025-02-21 18:05:42 +01:00
Shreyas Goenka ae8ebaa757
add acc test for oauth' 2025-02-21 16:58:45 +01:00
Shreyas Goenka 5056070d11
remove user agent from telemetry tests 2025-02-21 16:48:30 +01:00
Shreyas Goenka d7abb3bd97
remove daemon acceptance tests 2025-02-21 15:56:28 +01:00
Shreyas Goenka 18748f7879
rename 2025-02-18 17:26:16 +01:00
Shreyas Goenka 3cfeb640e1
add skip functionality 2025-02-18 16:47:47 +01:00
Shreyas Goenka 520f06905b
use daemon 2025-02-18 16:30:50 +01:00
Shreyas Goenka f48fbb950b
merge daemon 2025-02-18 16:06:24 +01:00
Shreyas Goenka 8a0b359f8f
Merge remote-tracking branch 'origin' into async-logger-clean 2025-02-18 16:04:50 +01:00
Shreyas Goenka c59b11f7c1
- 2025-02-18 14:52:25 +01:00
Shreyas Goenka 608f0ad94f
- 2025-02-18 14:51:03 +01:00
Shreyas Goenka 8eb454da14
- 2025-02-18 14:50:02 +01:00
Shreyas Goenka f6bd82d68f
add readme 2025-02-18 14:49:24 +01:00
Shreyas Goenka f6a02237cf
extend timeout to 1 minute 2025-02-18 14:13:01 +01:00
Shreyas Goenka 50308f25a1
- 2025-02-18 13:17:14 +01:00
Shreyas Goenka a4009ed6fa
use script to wait 2025-02-18 13:14:29 +01:00
Shreyas Goenka 2c7126991b
- 2025-02-17 19:39:18 +01:00
Shreyas Goenka ecbbee1bb3
more test 2025-02-17 19:38:33 +01:00
Shreyas Goenka 3c4443c13f
cleanup 2025-02-17 19:27:53 +01:00
Shreyas Goenka e970a129af
- 2025-02-17 19:26:06 +01:00
Shreyas Goenka d15ff75f3b
- 2025-02-17 19:24:51 +01:00
Shreyas Goenka de6ebdb44e
Merge remote-tracking branch 'origin' into daemon-library 2025-02-17 19:24:31 +01:00
Shreyas Goenka 6148681ed1
implement 2025-02-17 19:23:02 +01:00
Lennart Kats (databricks) bc30d44097
Provide instructions for testing in the default-python template (#2355)
## Changes
Adds instructions for testing to the default-python template.

## Tests
- Unit & acceptance tests.
2025-02-17 12:38:03 +00:00
Denis Bilenko c0a56a93fb
acc: add a helper to diff with replacements (#2352)
## Changes

diff.py is like "diff -r -U2" but it applies replacements first to the
argument.

This allows comparing different output files and directories but ignore
differences that are going to be replaced by placeholders.

This is useful for tests that record large amount of files, specifically
"bundle init" with standard templates. In those tests, changing one
parameter results in a small diff so recording the full directory is not
helpful, because it's hard to see what changed there. I'm using it in
implementation of serverless mode for templates that need it: #2348 The
serverless templates are slightly different from classic, capturing the
diff helps to see exactly where.

Related small changes:
- Add [TESTROOT] replacement for absolute path to acceptance directory
in git repo.
- Add $TESTDIR env var for absolute path to a given test in git repo.

## Tests
- New test acceptance/selftest/diff to test the helper.
- Via #2348 which makes use of this feature.
2025-02-14 11:02:12 +00:00
Denis Bilenko 2d09636611
acc: do not show diff for missing output file (#2350)
It's not interesting since it just dumps what is in the repo. This is
especially annoying with bundle/templates tests with a lot of files.
2025-02-13 07:31:04 +00:00
Denis Bilenko fac9bcf1af
acc: Set X-Databricks-Org-Id on scim/v2/Me endpoint (#2349)
This is needed for b.WorkspaceClient().CurrentWorkspaceID(ctx) which is
used by initialize_urls.go mutator ("bundle summary") #2316

It also also needed for to call serverless detection endpoint #2348

Builds on top of #2338
2025-02-13 07:26:22 +00:00
Pieter Noordhuis 96302c7415
Revert changes related to basename check for local libraries (#2345)
## Changes

These changes break the use of non-local libraries (such as PyPI
libraries).

This reverts the set so we can cut a patch release and take a closer
look later.

Original PRs are #2297 and #2341.

Issue reported in #2343.

## Tests

Manually confirmed that a bundle with PyPI package in libraries now
deploys fine.
2025-02-12 20:05:49 +01:00
Andrew Nester ac439f8c1a
Fix for regression deploying resources with PyPi and Maven library types (#2341)
## Changes

The CheckForSameNameLibraries mutator incorrectly assumed all resource
libraries define libraries as paths of the `string` type, but some
libraries, such as PyPi and Maven, define them as objects.

This PR addresses this issue. It was introduced in #2297.

## Tests

Added regression test.
2025-02-12 17:14:30 +01:00
Denis Bilenko 4034766c93
acc: Simplify writing handlers; support headers in responses (#2338)
## Changes

Handlers now receive testserver.Request and return any which could be
- string or []byte (returns it as is but sets content-type to json or
plain text depending on content)
- struct (encodes it as json and sets content-type to json)
- testserver.Response (full control over status and headers)

Note if testserver.Response is returned from the handler, it's Body
attribute can still be an object. In that case, it'll be serialized and
appropriate content-type header will be added.

The config is now using the same testserver.Response struct, the same
logic applies both configured responses and responses returned from
handlers.

As a result, one can set headers both in Golang handlers and in
test.toml.

This also fixes a bug with RecordRequest not seeing the body if it was
already consumed by the handler.

## Tests
- Existing rests. 
- acceptance/selftest/server is extended to set response header.
2025-02-12 13:00:57 +00:00
Denis Bilenko bfde3585b9
acc: Fix priority of stubs in test.toml (#2339)
## Changes
Reverse the order of stubs to match expectation (leaf configuration
takes precedence over parent configuration).
Follow up to #2334 .

## Tests
acceptance/selftest/server is extended with duplicate handler
2025-02-12 11:45:01 +00:00
Shreyas Goenka 4cdcbd6b12
Merge remote-tracking branch 'origin' into async-logger-clean 2025-02-11 17:00:43 +01:00
shreyas-goenka 24ac8d8d59
Add acceptance tests for auth resolution (#2285)
## Changes

This PR adds acceptance tests for native Databricks auth methods: basic,
oauth, and pat.

In the future we could compare this with auth credentials used by
downstream tools like TF or the telemetry process to ensure consistent
auth credentials are picked up and used.

Note: 
We do not add acceptance tests for other auth methods like Azure because
they communicate with external endpoints. To test them locally, we would
need to set up a reverse proxy server, which is out of scope for this
change.

## Tests
N/A
2025-02-11 15:50:03 +00:00
Denis Bilenko 5d392acbef
acc: Allow mixing custom stubs with default server impl (#2334)
## Changes
- Currently if you define [[Server]] block, you disable the default
server implementation. With this change [[Server]] block takes
precedence over default server but default server remains.
- Switched mux implementation to
[gorilla/mux](https://github.com/gorilla/mux) -- unlike built-in it does
not panic if you set two handlers on the same part (instead the earliest
one wins). It also does not have any dependencies.
- Move acceptance/selftest into acceptance/selftest/basic and added
acceptance/selftest/server that demoes server override.
- Rewrite server set up to ensure that env vars and replacements are set
up correctly. Previously replacements for DATABRICKS_HOST referred to
default server, not to the custom server.
- Avoid calling CurrentUser.Me() in the local case. This allows
overriding /api/2.0/preview/scim/v2/Me, which we use in some tests (e.g.
bundle/templates-machinery/helpers-error). Previously the test passed
because CurrentUser.Me() was calling default server which is incorrect
but it happened to make the tests pass.
- The default server is now available on DATABRICKS_DEFAULT_HOST env
var.
- Rewrite "not found" handler in local test to handle error better (do
not raise http500 when header is already written).

## Tests
New acceptance test selftest/server specifically tests that both custom
and default handlers are available in a single test.
2025-02-11 15:03:41 +00:00
Denis Bilenko 272ce61302
acc: Fix singleTest option to support forward slashes (#2336)
The filtering of tests needs to see forward slashes otherwise it is
OS-dependent.

I've also switched to filepath.ToSlash but it should be a no-op.
2025-02-11 15:26:46 +01:00
Denis Bilenko 8d849fe868
acc: Disable custom server on CLOUD_ENV (#2332)
We're not using local server when CLOUD_ENV is enabled, no need to set
up a custom one.
2025-02-11 10:37:48 +00:00
Denis Bilenko f2096eddcc
acc: Do not show all replacements on every failure (#2331)
## Changes
- Only print replacements if VERBOSE_TEST flag is set.
- This is set on CI but not when you do "go test" or "make test".

Note, env var is used, so that it can be set in Makefile.

## Tests
Manually.
2025-02-11 09:38:53 +00:00
Shreyas Goenka c8ac08c24b
consolidate test.toml 2025-02-10 15:59:24 +01:00
Shreyas Goenka 9d65761122
pretty print 2025-02-10 15:55:31 +01:00
Shreyas Goenka 23b42e9f8f
Merge remote-tracking branch 'origin' into async-logger-clean 2025-02-10 15:53:57 +01:00
Andrew Nester f7a45d0c7e
Upgrade to TF provider 1.65.1 (#2328)
## Changes
Upgrade to TF provider 1.65.1

Notable changes:
- Now it's possible to use `run_as` field in `pipelines` definition
- Added support for `performance_target` for `jobs`
2025-02-10 14:06:02 +00:00
shreyas-goenka 6953a84db6
Serialize recorded requests with indentation in acceptance tests (#2329)
## Changes
This PR indents the recorded requests to make them easier to review.
They can still be parsed using jq.

## Tests
Existing tests.
2025-02-10 19:03:27 +05:30
Denis Bilenko d282f33a22
Append newline to "-o json" for validate/summary/run (#2326)
## Changes
- Insert newline after rendering indented JSON in bundle
validate/summary/run.
- This prevents "No newline at end of file" message in various cases,
for example when switching between recording raw output of the command
to output processed by jq, since jq does add a newline or when running
diff in acceptance tests.

## Tests
Manually running validate:

```
~/work/dabs_cuj_brickfood % ../cli/cli-main bundle validate -o json | tail -n 2  # without change
Error: root_path must start with '~/' or contain the current username to ensure uniqueness when using 'mode: development'

  }
}%
~/work/dabs_cuj_brickfood % ../cli/cli bundle validate -o json | tail -n 2  # with change
Error: root_path must start with '~/' or contain the current username to ensure uniqueness when using 'mode: development'

  }
}
~/work/dabs_cuj_brickfood %
```

Via #2316 -- see cleaner output there.
2025-02-10 14:00:49 +01:00