github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/docs/development/INTEGRATION_TESTING.md (about) 1 # Integration Testing 2 3 Kismatic is tested using public cloud infrastructure providers. We support running tests 4 on the following providers: 5 - AWS 6 - Packet.net 7 8 The integration test framework will skip any infrastructure-dependent test if the 9 required provider-specific environment variables have not been defined. 10 11 ## AWS 12 In order to run tests against AWS, you'll need two sets of AWS credentials: 13 - An AWS User with access 14 - This can be any user account; you should have a personal one. 15 - You will need to set in your environment: 16 - AWS_ACCESS_KEY_ID 17 - AWS_SECRET_ACCESS_KEY 18 - A private key used to SSH into newly created boxes 19 - This must be the same user used to build images and thus the private key is shared 20 - This should be installed in ~/.ssh/kismatic-integration-testing.pem and chmod to 0600 21 22 Our AWS infrastructure provisioner has defaults for other pieces of information, such as 23 the AMI ID, the subnet ID, etc. All these options can be overridden using environment variables: 24 - AWS_TARGET_REGION: The AWS region to be used for provisioning machines (e.g. "us-east-1") 25 - AWS_SUBNET_ID: The ID of the VPC subnet to use 26 - AWS_HOSTED_ZONE_ID: The Route53 ID configured for the VPC 27 - AWS_KEY_NAME: The name of the AWS key pair to use when creating the machines 28 - AWS_SECURITY_GROUP_ID: The ID of the security group 29 - AWS_SSH_KEY_PATH: The path to the SSH key to be used for SSH'ing into the machines 30 31 ## Packet.net 32 In order to run tests against Packet.net, you'll need to define the following environment variables: 33 - PACKET_AUTH_TOKEN: The authentication token for accessing the Packet.net API 34 - PACKET_PROJECT_ID: The ID of the Packet.Net project to provision machines in 35 - PACKET_SSH_KEY_PATH: The path to the SSH key that should be used for accessing the machines 36 37 # Running tests 38 39 You run integration tests via 40 41 ```make integration-test``` 42 43 which will also build a distributable for your machine's architecture. 44 45 To avoid rebuild, you can also call 46 47 ```make just-integration-test``` 48 49 This step will complain if your keys aren't set up, with clues as to how you can remedy the issue. 50 51 To run a specific test, you can call: 52 ``` 53 FOCUS=[pattern to match here] make focus-integration-test 54 ``` 55 56 Test early. Test often. Test hard. 57 58 # Adding new provisioners 59 The integration test framework can be extended to run against other cloud infrastructure providers. 60 61 New provisioners can be defined in `provision.go`, and they must implement the `infrastructureProvisioner` 62 interface.