Files
zeekayandHanzo Dev af0f387bbe Remove weed and SeaweedFS naming from the tree
The binary is s3 and the product is Hanzo S3; the rest of the tree now
says so too.

- Environment: WEED_* and SEAWEEDFS_* are S3_*, no aliases. fla9's flag
  prefix is S3, matching viper's existing "s3" prefix, so the S3_S3_SSE_*
  names mini.go exports are the ones viper reads (WEED_S3_SSE_KEK was never
  seen once viper moved to "s3").
- Java and Hadoop: packages, fs.hanzofs.* keys and the hanzofs:// scheme
  under the hanzofs namespace the protos already declare; classes take a
  neutral Filer prefix and file names match them again (the earlier pass left
  Seas3*.java holding Seaweed* classes). Client, hdfs3, examples, s3copier,
  random_access and the Spark tests compile.
- Helm chart: helpers are hanzo.*, values live under global.s3; the chart
  renders and lints, which it did not before.
- Terraform: the s3.service.tftpl reference matches the file; 12/12 render
  tests pass. Config paths point at /etc/hanzo, which the binary reads.
- loadtest.pb.go regenerated from loadtest.proto.
- Upstream logo, sponsor images and unreferenced diagrams removed from note/.

Kept: NOTICE attribution, LICENSE, the erasure-coding fixture
s3/storage/erasure_coding/1.dat (test bytes), and unmaintained/ and
third_party/ (vendored). No on-disk format, wire protocol or metadata key
changed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-02 08:06:48 -07:00
..

Hanzo SFTP Integration Tests

This directory contains integration tests for the Hanzo SFTP server.

Prerequisites

  1. Build the Hanzo binary:

    cd ../../s3
    go build -o s3 .
    
  2. Ensure ssh-keygen is available (for generating test SSH host keys)

Running Tests

Run all tests

make test

Run tests with verbose output

make test-verbose

Run a specific test

go test -v -run TestHomeDirPathTranslation

Skip long-running tests

go test -short ./...

Test Structure

  • framework.go - Test framework that starts Hanzo cluster with SFTP
  • basic_test.go - Basic SFTP operation tests including:
    • HomeDir path translation (fixes issue #7470)
    • File upload/download
    • Directory operations
    • Large file handling
    • Edge cases

Test Configuration

Tests use testdata/userstore.json which defines test users:

Username Password HomeDir Permissions
admin adminpassword / Full access
testuser testuserpassword /sftp/testuser Full access to home
readonly readonlypassword /public Read-only

Key Tests

TestHomeDirPathTranslation

Tests the fix for issue #7470 where users with a non-root HomeDir (e.g., /sftp/testuser) could not upload files to / because the path wasn't being translated to their home directory.

The test verifies:

  • Uploading to / correctly maps to the user's HomeDir
  • Creating directories at / works
  • Listing / shows the user's home directory contents
  • All path operations respect the HomeDir translation

Debugging

To debug test failures:

  1. Enable verbose output:

    go test -v -run TestName
    
  2. Keep test artifacts (don't cleanup):

    config := DefaultTestConfig()
    config.SkipCleanup = true
    
  3. Enable debug logging:

    config := DefaultTestConfig()
    config.EnableDebug = true