Skip to content

Conversation

Copy link

Copilot AI commented Nov 15, 2025

Describe the Problem

No S3A tests run in CI to validate NooBaa's S3 API compatibility with Hadoop's S3A filesystem implementation.

Explain the Changes

  1. Test infrastructure in src/test/external_tests/s3a/

    • s3a_constants.js: Test configuration (credentials, Hadoop 3.4.2, bucket name)
    • configure_s3a.js: Sets up test account and hadoop bucket via NooBaa API
    • run_s3a_on_test_container.sh: Deploys NooBaa, installs Maven/JDK11, clones Hadoop, configures auth-keys.xml, runs test suite
  2. Makefile target test-s3a: Runs tests in Docker with Postgres backend, follows existing external test pattern

  3. GitHub Actions workflow s3a-tests.yaml: CI integration with 120min timeout, uploads test logs

  4. PR workflow integration: Added to run-pr-tests.yaml alongside Ceph/Mint/Warp tests

Test execution:

mvn clean verify -Dtest=TestS3A* -Dit.test=ITestS3A*

Configuration disables SSL, STS, encryption, storage classes, and ACLs per Hadoop testing guidelines. Uses path-style access against http://localhost:6001.

Issues: Fixed #9283

Testing Instructions:

  1. Tests run automatically in CI on PR
  2. Local execution: make test-s3a (requires Docker)
  3. Check uploaded s3a-test-logs artifact for results
  • Doc added/updated
  • Tests added
Original prompt

This section details on the original issue you should resolve

<issue_title>Hadoop S3A tests should be added to CI</issue_title>
<issue_description>### Environment info

  • NooBaa Version: 5.18.8
  • Platform: RHEL 9.4

Actual behavior

  1. No S3A tests run in the CI

Expected behavior

  1. https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/testing.html
  2. https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/third_party_stores.html

Steps to reproduce

# install
dnf install -y maven
git clone https://github.com/apache/hadoop
cd hadoop
git checkout rel/release-3.4.2
cd hadoop-tools/hadoop-aws

# configure
cat >src/test/resources/auth-keys.xml <<EOF
<configuration>
  <property>
    <name>test.fs.s3a.name</name>
    <value>s3a://hadoop/</value>
  </property>
  <property>
    <name>fs.contract.test.fs.s3a</name>
    <value>${test.fs.s3a.name}</value>
  </property>

  <property>
    <name>fs.s3a.endpoint</name>
    <value>http://10.1.0.1:6001</value>
  </property>
  <property>
    <name>fs.s3a.endpoint.region</name>
    <value>us-east-1</value>
  </property>

  <property>
    <name>fs.s3a.connection.ssl.enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>fs.s3a.path.style.access</name>
    <value>true</value>
  </property>
  <property>
    <name>test.fs.s3a.encryption.enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>test.fs.s3a.create.storage.class.enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>test.fs.s3a.sts.enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>test.fs.s3a.create.create.acl.enabled</name>
    <value>false</value>
  </property>

  <property>
    <name>fs.s3.awsAccessKeyId</name>
    <value>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</value>
  </property>
  <property>
    <name>fs.s3.awsSecretAccessKey</name>
    <value>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</value>
  </property>
  <property>
    <name>fs.s3n.awsAccessKeyId</name>
    <value>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</value>
  </property>
  <property>
    <name>fs.s3n.awsSecretAccessKey</name>
    <value>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</value>
  </property>
  <property>
    <name>fs.s3a.access.key</name>
    <description>AWS access key ID. Omit for Role-based authentication.</description>
    <value>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</value>
  </property>
  <property>
    <name>fs.s3a.secret.key</name>
    <description>AWS secret key. Omit for Role-based authentication.</description>
    <value>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</value>
  </property>

</configuration>
EOF

# run
mvn clean verify -Dtest=TestS3A* -Dit.test=ITestS3A* | tee s3a-tests.log

# summary line e.g. "[ERROR] Tests run: 1152, Failures: 1, Errors: 2, Skipped: 3"
grep "Tests run" s3a-tests.log | tail -1
# failures
grep FAILURE s3a-tests.log
```</issue_description>

## Comments on the Issue (you are @copilot in this section)

<comments>
<comment_new><author>@guymguym</author><body>
CC @nimrod-becker @tamireran </body></comment_new>
<comment_new><author>@guymguym</author><body>
<details>
<summary>Summary</summary>

```sh
[ERROR] Tests run: 1152, Failures: 33, Errors: 31, Skipped: 278
Failures
[ERROR] Tests run: 13, Failures: 2, Errors: 0, Skipped: 1, Time elapsed: 22.866 s <<< FAILURE! - in org.apache.hadoop.fs.contract.s3a.ITestS3AContractDistCp
[ERROR] testUpdateDeepDirectoryStructureNoChange(org.apache.hadoop.fs.contract.s3a.ITestS3AContractDistCp)  Time elapsed: 3.037 s  <<< FAILURE!
[ERROR] testUpdateDeepDirectoryStructureToRemote(org.apache.hadoop.fs.contract.s3a.ITestS3AContractDistCp)  Time elapsed: 2.544 s  <<< FAILURE!
[ERROR] Tests run: 46, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 3.024 s <<< FAILURE! - in org.apache.hadoop.fs.contract.s3a.ITestS3AContractAnalyticsStreamVectoredRead
[ERROR] Tests run: 32, Failures: 0, Errors: 2, Skipped: 8, Time elapsed: 20.32 s <<< FAILURE! - in org.apache.hadoop.fs.contract.s3a.ITestS3AContractCreate
[ERROR] Tests run: 8, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.947 s <<< FAILURE! - in org.apache.hadoop.fs.contract.s3a.ITestS3AContractMkdirWithCreatePerf
[ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.152 s <<< FAILURE! - in org.apache.hadoop.fs.s3a.ITestS3ARequesterPays
[ERROR] Tests run: 13, Failures: 0, Errors: 13, Skipped: 0, Time elapsed: 0.46 s <<< FAILURE! - in org.apache.hadoop.fs.s3a.commit.ITestS3ACommitterFactory
[ERROR] Tests run: 5, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 2.919 s <<< FAILURE! - in org.apache.hadoop.fs.s3a.ITestS3AFailureHandling
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.093 s <<< FAILURE! - in org.apache.hadoop.fs.s3a.ITestS3AContentEncoding
[ERROR] testCreatedObjectsHaveEncoding(org.apache.hadoop.fs.s3a.ITestS3AContentEncoding)  Time elapsed: 0.092 s  <<< FAILURE!
[ERROR] Tests run: 5, F...

</details>

- Fixes noobaa/noobaa-core#9282

<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for you](https://github.com/noobaa/noobaa-core/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo.

@coderabbitai
Copy link

coderabbitai bot commented Nov 15, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

- Create S3A test directory with configuration and run scripts
- Add test-s3a target to Makefile
- Create GitHub Actions workflow for S3A tests
- Integrate S3A tests into PR test workflow

Co-authored-by: guymguym <[email protected]>
Copilot AI changed the title [WIP] Add Hadoop S3A tests to continuous integration Add Hadoop S3A tests to CI Nov 15, 2025
Copilot AI requested a review from guymguym November 15, 2025 02:16
Copilot finished work on behalf of guymguym November 15, 2025 02:16
@guymguym guymguym linked an issue Nov 16, 2025 that may be closed by this pull request
Sign up for free to 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.

Hadoop S3A tests should be added to CI

2 participants