ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output. - #9846

Closed
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143
Closed

ARROW-12143: [CI] R builds should timeout and fail after some threshold and dump the output.#9846
westonpace wants to merge 10 commits into
apache:masterfrom
westonpace:feature/arrow-12143

Conversation

@westonpace

Copy link
Copy Markdown
Member

This adds a one hour timeout to the R builds. It changes the R CI test script to use reporter="location" by default. It adds a dump test logs step to the end of the build that will always dump the test output regardless of success/failure.

These three changes combined will make it much easier to debug test failures in R tests.

ARROW-12143: More changes to dump tests on timeout
ARROW-12143: Adding 'Dump test logs' step to non-ubuntu builds

@jonkeanejonkeane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! A few suggestions for improving this.

One thing I've done elsewhere is also upload the artifacts. It's not required, but I find it nice to be able to download these and look at them in a text editor (

- name: Save the test output
uses: actions/upload-artifact@v2
with:
name: test-output
path: arrow-tests/testthat.Rout*
)

Could we also add the test log dumps to the templates used in crossbow too: https://github.com/apache/arrow/tree/8e43f23dcc6a9e630516228f110c48b64d13cec6/dev/tasks/r

Most of those should have the same directory structure so it should be "just" a copy paste.

Comment threadr/tests/testthat.R Outdated
library(tibble)

test_check("arrow")
test_check("arrow", reporter="location")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will probably want to make this change only happen on CI so that the standard reporter is used when we submit to CRAN. We could have this trigger on ARROW_R_DEV which is (almost?) always set on CI and isn't a terrible overloading of the meaning.

We also could use reporter = MultiReporter("check", "location") which should give us decent info in the check log, but also more detailed information for the artifact (this config basically concatenates the two reporter outputs in the output, but in reverse order)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The environment variable check could be something like:

if (identical(tolower(Sys.getenv("ARROW_R_DEV", FALSE)), "true")) {
arrow_reporter <- MultiReporter("check", "location")
} else {
arrow_reporter <- check_reporter()
}
test_check("arrow", reporter = arrow_reporter)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, thanks!

Comment threadci/scripts/r_test.sh Outdated
rcmdcheck::rcmdcheck(build_args = '--no-build-vignettes', args = c('--no-manual', '--ignore-vignettes', '--run-donttest'), error_on = 'warning', check_dir = 'check')
}"
echo "$SCRIPT" | ${R_BIN} --no-save
echo "$SCRIPT" | timeout -k 3600 3600 ${R_BIN} --no-save

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is better or if we should add to line 74 the argument timeout = 3600 which will timeout at the check level (and will mark the build as failed if the timeout happens).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is much better. My initial searching on rcmdcheck didn't find any timeout arg otherwise I would have gone this route originally.

Comment thread.github/workflows/r.yml Outdated
run: cat r/check/arrow.Rcheck/00install.out
if: always()
- name: Dump test logs
run: cat r/check/arrow.Rcheck/tests/testthat.Rout

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
run: cat r/check/arrow.Rcheck/tests/testthat.Rout
run: cat r/check/arrow.Rcheck/tests/testthat.Rout*

it turns out that if there's a test failure, the output is written to r/check/arrow.Rcheck/tests/testthat.Rout.fail

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good catch. Fixed.

@westonpace

Copy link
Copy Markdown
MemberAuthor

@jonkeane I think I've added the save test log step to all of the crossbow tasks but I'm not sure how to run those so haven't verified that at all.

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@jonkeane

Copy link
Copy Markdown
Member

That should (if I haven't mis-spelled something!) run all of the r crossbow tests.

You can also run a single crossbow test with @github-actions crossbow submit {test name as found in arrow/dev/tasks/tasks.yaml}

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Revision: 85a06c8

Submitted crossbow builds: ursacomputing/crossbow @ actions-250

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

@jonkeane

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@westonpace

westonpace commented Mar 31, 2021

Copy link
Copy Markdown
MemberAuthor

Thanks for adding those builds I missed. Those changes look good to me. @jonkeane

@github-actions

Copy link
Copy Markdown

Revision: 73641ab

Submitted crossbow builds: ursacomputing/crossbow @ actions-251

TaskStatus
conda-linux-gcc-py36-cpu-r36Azure
conda-linux-gcc-py37-cpu-r40Azure
conda-osx-clang-py36-r36Azure
conda-osx-clang-py37-r40Azure
conda-win-vs2017-py36-r36Azure
conda-win-vs2017-py37-r40Azure
homebrew-r-autobrewGithub Actions
test-r-install-localGithub Actions
test-r-linux-as-cranGithub Actions
test-r-minimal-buildAzure
test-r-rhub-ubuntu-gcc-releaseAzure
test-r-rocker-r-base-latestAzure
test-r-rstudio-r-base-3.6-bionicAzure
test-r-rstudio-r-base-3.6-centos7-devtoolset-8Azure
test-r-rstudio-r-base-3.6-centos8Azure
test-r-rstudio-r-base-3.6-opensuse15Azure
test-r-rstudio-r-base-3.6-opensuse42Azure
test-r-version-compatibilityGithub Actions
test-r-versionsGithub Actions
test-ubuntu-18.04-r-sanitizerAzure

Comment threadr/tests/testthat.R Outdated
Co-authored-by: Ian Cook <ianmcook@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@westonpace@jonkeane@ianmcook