# Speed Test
## Goals:
- Allows users to specify the S3 bucket, AWS region, and file size for testing.
- Provides the results (elapsed time and speed) in the custom resource’s status field.
## Requirments:
- Define a custom resource S3UploadSpeedTest to represent a test for uploading a file to an S3 bucket.
- The CRD will allow users to specify:
- S3 bucket name
- AWS region
- File size for the test
- (Optional) AWS profile for authentication
- The status of the CR will be updated with:
- Elapsed time for the upload.
- Upload speed (in MB/s).
- Upload status (Success or Failure).
## Workflow
- User creates the CR and supplies the spec fields
- Controller triggers upload
- A test File is uploaded to S3
- Controller Calculates upload speed
- Status update of CRD reflects the time and speed
## Sample CR
```yaml
apiVersion: oadp.openshift.io/v1
kind: S3UploadSpeedTest
metadata:
name: test-upload-speed
spec:
# This is just a sample CR
# Most likely we will pull in the whole BSL spec here and use whatever we need
bucketName: "my-test-bucket"
region: "us-east-1"
fileSizeMB: 100
status:
elapsedTime: 5
uploadSpeed: 20
uploadStatus: "Success"
```
## Wes's Alternative CR
```yaml=
apiVersion: oadp.openshift.io/v1
kind: S3UploadSpeedTest
metadata:
name: test-upload-speed
spec:
# upload folder should be static a reserved name
backupstoragelocation: default [user provided name]
fileSize: 100Mib [kb,mib,gib,tb]
status:
elapsedTime: 5
transferSpeed: 20[kb,mib,gib,tb]/s
uploadStatus: "Success"
```
## potential enhancements
* run on a specified node
* run on all nodes
*