Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions docs/run_test_scenario.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ This guide covers how to run competitive tests manually, using vm-to-vm performn
### Define Test Variables
Set environment variables for testing
```
SCENARIO_NAME=perf-eval/vm-iperf
SCENARIO_TYPE=perf-eval
SCENARIO_NAME=vm-iperf
RUN_ID=10312023
OWNER=$(whoami)
RESULT_PATH=/tmp/$RUN_ID
RESOURCE_GROUP=test-$RUN_ID
CLOUD=azure
REGION=eastus
MACHINE_TYPE=standard_D16_v3
Expand Down Expand Up @@ -58,12 +58,11 @@ Provision test resources using terraform
INPUT_JSON=$(jq -n \
--arg owner $OWNER \
--arg run_id $RUN_ID \
--arg location $REGION \
--arg resource_group_name $RESOURCE_GROUP \
--arg vm_sku $MACHINE_TYPE \
--arg region $REGION \
--arg machine_type $MACHINE_TYPE \
--arg accelerated_networking $ACCERLATED_NETWORKING \
--arg user_data_path $USER_DATA_PATH \
'{owner: $owner, run_id: $run_id, location: $location, resource_group_name: $resource_group_name, vm_sku: $vm_sku, accelerated_networking: $accelerated_networking,user_data_path:$user_data_path}')
'{owner: $owner, run_id: $run_id, region: $region, machine_type: $machine_type, accelerated_networking: $accelerated_networking,user_data_path:$user_data_path}')

pushd $TERRAFORM_MODULES_DIR
terraform init
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ variable "load_balancer_arn" {
variable "lb_tg_config" {
description = "Configuration for the load balancer."
type = object({
role = string
tg_suffix = string
port = number
protocol = string
rule_count = number
vpc_name = string
role = string
tg_suffix = string
port = number
protocol = string
rule_count = number
vpc_name = string
health_check = object({
port = number
protocol = string
Expand Down
4 changes: 2 additions & 2 deletions modules/terraform/aws/load-balancer/main.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
locals {
role = var.loadbalancer_config.role
lb_target_group = var.loadbalancer_config.lb_target_group
role = var.loadbalancer_config.role
lb_target_group = var.loadbalancer_config.lb_target_group
lb_target_group_map = {
for tg in local.lb_target_group :
"${tg.vpc_name}-${tg.tg_suffix}" => tg
Expand Down
12 changes: 6 additions & 6 deletions modules/terraform/aws/load-balancer/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ variable "loadbalancer_config" {
subnet_name = string
load_balancer_type = string
lb_target_group = list(object({
role = string
tg_suffix = string
port = number
protocol = string
rule_count = number
vpc_name = string
role = string
tg_suffix = string
port = number
protocol = string
rule_count = number
vpc_name = string
health_check = object({
port = number
protocol = string
Expand Down
11 changes: 5 additions & 6 deletions modules/terraform/aws/main.tf
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
locals {
region = lookup(var.json_input, "region", "us-east-1")
az = lookup(var.json_input, "az", "us-east-1b")
instance_type = lookup(var.json_input, "instance_type", "m5.4xlarge")
zone = lookup(var.json_input, "zone", "us-east-1b")
machine_type = lookup(var.json_input, "machine_type", "m5.4xlarge")
run_id = lookup(var.json_input, "run_id", "123456")
user_data_path = lookup(var.json_input, "user_data_path", "")

tags = {
"owner" = lookup(var.json_input, "owner", "github_actions")
"scenario" = var.scenario_name
"scenario" = "${var.scenario_type}-${var.scenario_name}"
"creation_time" = timestamp()
"deletion_due_time" = timeadd(timestamp(), var.deletion_delay)
"run_id" = local.run_id
Expand Down Expand Up @@ -47,8 +47,7 @@ module "virtual_network" {

source = "./virtual-network"
network_config = each.value
az = local.az
run_id = local.run_id
zone = local.zone
tags = local.tags
}

Expand All @@ -60,7 +59,7 @@ module "virtual_machine" {
admin_key_pair_name = aws_key_pair.admin_key_pair.key_name
tags = local.tags
run_id = local.run_id
instance_type = local.instance_type
machine_type = local.machine_type
user_data_path = local.user_data_path
depends_on = [module.virtual_network]
}
Expand Down
26 changes: 20 additions & 6 deletions modules/terraform/aws/variables.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
variable "json_input" {
description = "value of the json input"
type = object({
region = string
az = string
instance_type = string
run_id = string
user_data_path = string
owner = string
owner = string
run_id = string
region = string
machine_type = string
zone = string
user_data_path = optional(string)
data_disk_volume_type = optional(string)
data_disk_size_gb = optional(number)
data_disk_tier = optional(string)
data_disk_iops_read_only = optional(number)
data_disk_iops_read_write = optional(number)
data_disk_mbps_read_only = optional(number)
data_disk_mbps_read_write = optional(number)
ultra_ssd_enabled = optional(bool)
})
}

Expand All @@ -16,6 +24,12 @@ variable "scenario_name" {
default = ""
}

variable "scenario_type" {
description = "value of the scenario type"
type = string
default = ""
}

variable "deletion_delay" {
description = "Time duration after which the resources can be deleted (e.g., '1h', '2h', '4h')"
type = string
Expand Down
2 changes: 1 addition & 1 deletion modules/terraform/aws/virtual-machine/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ data "aws_subnet" "subnet" {

resource "aws_instance" "vm" {
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
instance_type = var.machine_type

subnet_id = data.aws_subnet.subnet.id

Expand Down
2 changes: 1 addition & 1 deletion modules/terraform/aws/virtual-machine/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ variable "user_data_path" {
type = string
}

variable "instance_type" {
variable "machine_type" {
description = "value of instance type"
type = string
default = "m5.4xlarge"
Expand Down
2 changes: 1 addition & 1 deletion modules/terraform/aws/virtual-network/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ resource "aws_subnet" "subnets" {
vpc_id = aws_vpc.vpc.id
cidr_block = local.subnet_cidr_blocks[count.index]

availability_zone = var.az
availability_zone = var.zone

tags = merge(
var.tags,
Expand Down
10 changes: 2 additions & 8 deletions modules/terraform/aws/virtual-network/variables.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
variable "network_config" {
type = object({
role = string
role = string
vpc_name = string
vpc_cidr_block = string
subnet_names = list(string)
Expand All @@ -24,17 +24,11 @@ variable "network_config" {
})
}

variable "az" {
variable "zone" {
description = "value of availability zone"
type = string
}

variable "run_id" {
description = "Value of the run id"
type = string
default = ""
}

variable "tags" {
type = map(string)
default = {
Expand Down
27 changes: 13 additions & 14 deletions modules/terraform/azure/main.tf
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
locals {
resource_group_name = lookup(var.json_input, "resource_group_name", "rg")
location = lookup(var.json_input, "location", "East US")
vm_sku = lookup(var.json_input, "vm_sku", "Standard_D2ds_v5")
region = lookup(var.json_input, "region", "East US")
machine_type = lookup(var.json_input, "machine_type", "Standard_D2ds_v5")
accelerated_networking = lookup(var.json_input, "accelerated_networking", true)
run_id = lookup(var.json_input, "run_id", "123456")
user_data_path = lookup(var.json_input, "user_data_path", "")

resource_group_name = "${var.scenario_type}-${var.scenario_name}-${local.run_id}"
tags = {
"owner" = lookup(var.json_input, "owner", "github_actions")
"scenario" = var.scenario_name
"scenario" = "${var.scenario_type}-${var.scenario_name}"
"creation_time" = timestamp()
"deletion_due_time" = timeadd(timestamp(), var.deletion_delay)
"run_id" = local.run_id
Expand Down Expand Up @@ -40,14 +39,14 @@ resource "tls_private_key" "admin-ssh-key" {
module "resource_group" {
source = "./resource-group"
resource_group_name = local.resource_group_name
location = local.location
location = local.region
tags = local.tags
}

module "public_ips" {
source = "./public-ip"
resource_group_name = module.resource_group.name
location = local.location
location = local.region
public_ip_names = var.public_ip_names
tags = local.tags
}
Expand All @@ -58,7 +57,7 @@ module "virtual_network" {
source = "./network"
network_config = each.value
resource_group_name = module.resource_group.name
location = local.location
location = local.region
accelerated_networking = local.accelerated_networking
public_ips = module.public_ips.pip_ids
tags = local.tags
Expand All @@ -69,7 +68,7 @@ module "load_balancer" {

source = "./load-balancer"
resource_group_name = module.resource_group.name
location = local.location
location = local.region
loadbalancer_config = each.value
public_ip_id = module.public_ips.pip_ids[each.value.public_ip_name]
tags = local.tags
Expand All @@ -80,7 +79,7 @@ module "data_disk" {

source = "./data-disk"
resource_group_name = module.resource_group.name
location = local.location
location = local.region
data_disk_name = each.value.disk_name
tags = local.tags
data_disk_storage_account_type = var.data_disk_storage_account_type
Expand All @@ -99,8 +98,8 @@ module "virtual_machine" {
source = "./virtual-machine"
name = each.value.vm_name
resource_group_name = module.resource_group.name
location = local.location
vm_sku = local.vm_sku
location = local.region
vm_sku = local.machine_type
nic = local.all_nics[each.value.nic_name]
vm_config = each.value
public_key = tls_private_key.admin-ssh-key.public_key_openssh
Expand All @@ -115,8 +114,8 @@ module "virtual_machine_scale_set" {
source = "./virtual-machine-scale-set"
name = each.value.vmss_name
resource_group_name = module.resource_group.name
location = local.location
vm_sku = local.vm_sku
location = local.region
vm_sku = local.machine_type
subnet_id = local.all_subnets[each.value.subnet_name]
lb_pool_id = local.all_loadbalancer_backend_address_pools[each.value.loadbalancer_pool_name]
ip_configuration_name = each.value.ip_configuration_name
Expand Down
36 changes: 25 additions & 11 deletions modules/terraform/azure/variables.tf
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
variable "json_input" {
description = "value of the json input"
type = object({
resource_group_name = string
location = string
vm_sku = string
accelerated_networking = bool
run_id = string
user_data_path = string
owner = string
owner = string
run_id = string
region = string
machine_type = string
accelerated_networking = optional(bool)
user_data_path = optional(string)
data_disk_storage_account_type = optional(string)
data_disk_size_gb = optional(string)
data_disk_tier = optional(string)
data_disk_iops_read_write = optional(number)
data_disk_mbps_read_write = optional(number)
data_disk_iops_read_only = optional(number)
data_disk_mbps_read_only = optional(number)
data_disk_caching = optional(string)
ultra_ssd_enabled = optional(bool)
})
}

Expand All @@ -17,6 +25,12 @@ variable "scenario_name" {
default = ""
}

variable "scenario_type" {
description = "value of the scenario type"
type = string
default = ""
}

variable "deletion_delay" {
description = "Time duration after which the resources can be deleted (e.g., '1h', '2h', '4h')"
type = string
Expand All @@ -32,7 +46,7 @@ variable "public_ip_names" {
variable "network_config_list" {
description = "Configuration for creating the server network."
type = list(object({
role = string
role = string
vnet_name = string
vnet_address_space = string
subnet_names = list(string)
Expand Down Expand Up @@ -61,7 +75,7 @@ variable "network_config_list" {
variable "loadbalancer_config_list" {
description = "List of Loadbalancer configurations"
type = list(object({
role = string
role = string
loadbalance_name = string
public_ip_name = string
loadbalance_pool_name = string
Expand All @@ -70,7 +84,7 @@ variable "loadbalancer_config_list" {
probe_request_path = string
lb_rules = list(object({
type = string
role = string
role = string
frontend_port = number
backend_port = number
protocol = string
Expand Down Expand Up @@ -102,7 +116,7 @@ variable "vm_config_list" {
variable "vmss_config_list" {
description = "List of configuration for virtual machine scale sets"
type = list(object({
role = string
role = string
vmss_name = string
admin_username = string
nic_name = string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
scenario_name = "issue_repro_lb_azure"
scenario_type = "issue-repro"
scenario_name = "lb-eof-error"
deletion_delay = "4h"
public_ip_names = ["ingress-pip", "egress-pip"]
network_config_list = [
Expand Down
3 changes: 2 additions & 1 deletion scenarios/perf-eval/lb-iperf/terraform-inputs/aws.tfvars
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
scenario_name = "perf_eval_lb_aws"
scenario_type = "perf-eval"
scenario_name = "lb-iperf"
deletion_delay = "2h"
network_config_list = [
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
scenario_name = "perf_eval_lb_azure"
scenario_type = "perf-eval"
scenario_name = "lb-iperf"
deletion_delay = "2h"
public_ip_names = ["client-pip", "server-pip", "lb-pip"]
network_config_list = [
Expand Down
3 changes: 2 additions & 1 deletion scenarios/perf-eval/lb-jmeter/terraform-inputs/aws.tfvars
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
scenario_name = "perf_eval_lb_https_aws"
scenario_type = "perf-eval"
scenario_name = "lb-jmeter"
deletion_delay = "2h"
network_config_list = [
{
Expand Down
Loading