Apache Hadoop Google Cloud Platform support – Testing the GCS filesystem client and its features

##### General

- Overview
- Single Node Setup
- Cluster Setup
- Commands Reference
- FileSystem Shell
- Compatibility Specification
- Downstream Developer's Guide
- Admin Compatibility Guide
- Interface Classification
- FileSystem Specification

##### Common

- CLI Mini Cluster
- Fair Call Queue
- Native Libraries
- Proxy User
- Rack Awareness
- Secure Mode
- Service Level Authorization
- HTTP Authentication
- Credential Provider API
- Hadoop KMS
- Tracing
- Unix Shell Guide
- Registry
- Async Profiler

##### HDFS

- Architecture
- User Guide
- Commands Reference
- NameNode HA With QJM
- NameNode HA With NFS
- Observer NameNode
- Federation
- ViewFs
- ViewFsOverloadScheme
- Snapshots
- Edits Viewer
- Image Viewer
- Permissions and HDFS
- Quotas and HDFS
- libhdfs (C API)
- WebHDFS (REST API)
- HttpFS
- Short Circuit Local Reads
- Centralized Cache Management
- NFS Gateway
- Rolling Upgrade
- Extended Attributes
- Transparent Encryption
- Multihoming
- Storage Policies
- Memory Storage Support
- Synthetic Load Generator
- Erasure Coding
- Disk Balancer
- Upgrade Domain
- DataNode Admin
- Router Federation
- Provided Storage

##### MapReduce

- Tutorial
- Commands Reference
- Encrypted Shuffle
- Pluggable Shuffle/Sort
- Distributed Cache Deploy
- Support for YARN Shared Cache

##### MapReduce REST APIs

- MR Application Master
- MR History Server

##### YARN

- Architecture
- Commands Reference
- Capacity Scheduler
- Fair Scheduler
- ResourceManager Restart
- ResourceManager HA
- Resource Model
- Node Labels
- Node Attributes
- Web Application Proxy
- Timeline Server
- Timeline Service V.2
- Writing YARN Applications
- YARN Application Security
- NodeManager
- Running Applications in Docker Containers
- Running Applications in runC Containers
- Using CGroups
- Secure Containers
- Reservation System
- Graceful Decommission
- Opportunistic Containers
- YARN Federation
- Shared Cache
- Using GPU
- Using FPGA
- Placement Constraints
- YARN UI2

##### YARN REST APIs

- Introduction
- Resource Manager
- Node Manager
- Timeline Server
- Timeline Service V.2

##### YARN Service

- Overview
- QuickStart
- Concepts
- Yarn Service API
- Service Discovery
- System Services

##### Hadoop Compatible File Systems

- Aliyun OSS
- Amazon S3
- Azure Blob Storage
- Azure Data Lake Storage
- Tencent COS
- Huaweicloud OBS
- VolcanoEngine TOS

##### Auth

- Overview
- Examples
- Configuration
- Building

##### Tools

- Hadoop Streaming
- Hadoop Archives
- Hadoop Archive Logs
- DistCp
- HDFS Federation Balance
- GridMix
- Rumen
- Resource Estimator Service
- Scheduler Load Simulator
- Hadoop Benchmarking
- Dynamometer

##### Reference

- Changelog and Release Notes
- Java API docs
- Unix Shell API
- Metrics

##### Configuration

- core-default.xml
- hdfs-default.xml
- hdfs-rbf-default.xml
- mapred-default.xml
- yarn-default.xml
- kms-default.xml
- httpfs-default.xml
- Deprecated Properties

# Testing the GCS filesystem client and its features

- Setting up the tests
  - File core-site.xml
  - File auth-keys.xml
- Running the Tests

This module includes both unit tests, which can run in isolation without connecting to the GCS service, and integration tests, which require a working connection to GCS to interact with a bucket. Unit test suites follow the naming convention `Test*.java`. Integration tests follow the naming convention `ITest*.java`.

## Setting up the tests

To integration test the GCS filesystem client, you need to provide `auth-keys.xml` which passes in authentication details to the test runner.

It is a Hadoop XML configuration file, which must be placed into `hadoop-tools/hadoop-gcp/src/test/resources`.

### File `core-site.xml`

This file pre-exists and sources the configurations created under `auth-keys.xml`.

For most purposes you will not need to edit this file unless you need to apply a specific, non-default property change during the tests.

### File `auth-keys.xml`

The presence of this file triggers the testing of the GCS classes.

Without this file, none of the integration tests in this module will be executed.

- `fs.contract.test.fs.gs` : the URL of the bucket for GCS filesystem contract tests

Example:

    <configuration>
        <property>
          <name>fs.gs.auth.type</name>
          <value>SERVICE_ACCOUNT_JSON_KEYFILE</value>
        </property>
        <property>
          <name>fs.gs.auth.service.account.json.keyfile</name>
          <value>YOUR_JSON_KEY_FILE</value>
        </property>
        <property>
          <name>fs.gs.project.id</name>
          <value>YOUR_PROJECT_ID_HERE</value>
        </property>
        <property>
          <name>fs.contract.test.fs.gs</name>
          <value>gs://your_bucket</value>
        </property>
    </configuration>

## Running the Tests

After completing the configuration, execute the test run through Maven.

    mvn clean verify