Skip to content

Commit b65f145

Browse files
committed
feat: check redis 8 in qpf fast fail checks, and scaling down test dbs and subs
1 parent 1de39cb commit b65f145

File tree

5 files changed

+32
-86
lines changed

5 files changed

+32
-86
lines changed

provider/pro/resource_rediscloud_pro_database.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -976,10 +976,17 @@ func validateQueryPerformanceFactor() schema.CustomizeDiffFunc {
976976
// Check if "query_performance_factor" is set
977977
qpf, qpfExists := diff.GetOk("query_performance_factor")
978978

979-
// Ensure "modules" is explicitly defined in the HCL
980-
_, modulesExists := diff.GetOkExists("modules")
981-
982979
if qpfExists && qpf.(string) != "" {
980+
// Check if Redis version is 8.0 or later
981+
redisVersion, _ := diff.GetOk("redis_version")
982+
if redisVersion != nil && redisVersion.(string) >= "8.0" {
983+
// Redis 8.0+ has RediSearch bundled by default, no need to check modules
984+
return nil
985+
}
986+
987+
// Ensure "modules" is explicitly defined in the HCL for Redis < 8.0
988+
_, modulesExists := diff.GetOkExists("modules")
989+
983990
if !modulesExists {
984991
return fmt.Errorf(`"query_performance_factor" requires the "modules" key to be explicitly defined in HCL`)
985992
}

provider/pro/testdata/pro_database_redis_8.tf

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ resource "rediscloud_subscription" "example" {
2929
}
3030

3131
creation_plan {
32-
dataset_size_in_gb = 15
32+
dataset_size_in_gb = 1
3333
quantity = 1
34-
replication = true
34+
replication = false
3535
throughput_measurement_by = "operations-per-second"
36-
throughput_measurement_value = 20000
36+
throughput_measurement_value = 1000
3737
}
3838
}
3939

@@ -66,17 +66,3 @@ resource "rediscloud_subscription_database" "example" {
6666
"material" = "cardboard"
6767
}
6868
}
69-
70-
resource "rediscloud_subscription_database" "example_replica" {
71-
subscription_id = rediscloud_subscription.example.id
72-
name = "example-replica"
73-
protocol = "redis"
74-
dataset_size_in_gb = 1
75-
data_persistence = "none"
76-
throughput_measurement_by = "operations-per-second"
77-
throughput_measurement_value = 1000
78-
password = local.rediscloud_database_password
79-
replication = false
80-
81-
replica_of = ["redis://${rediscloud_subscription_database.example.public_endpoint}"]
82-
}

provider/pro/testdata/pro_database_redis_8_update.tf

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,27 @@ resource "rediscloud_subscription" "example" {
2828
}
2929

3030
creation_plan {
31-
dataset_size_in_gb = 15
31+
dataset_size_in_gb = 1
3232
quantity = 1
33-
replication = true
33+
replication = false
3434
throughput_measurement_by = "operations-per-second"
35-
throughput_measurement_value = 20000
35+
throughput_measurement_value = 1000
3636
}
3737
}
3838

3939
resource "rediscloud_subscription_database" "example" {
4040
subscription_id = rediscloud_subscription.example.id
41-
name = "example-updated"
41+
name = "example"
4242
protocol = "redis"
43-
dataset_size_in_gb = 1
44-
data_persistence = "aof-every-write"
45-
data_eviction = "volatile-lru"
43+
dataset_size_in_gb = 3
44+
data_persistence = "none"
45+
data_eviction = "allkeys-random"
4646
throughput_measurement_by = "operations-per-second"
47-
throughput_measurement_value = 2000
48-
password = "updated-password"
49-
support_oss_cluster_api = true
50-
external_endpoint_for_oss_cluster_api = true
51-
replication = true
47+
throughput_measurement_value = 1000
48+
password = local.rediscloud_database_password
49+
support_oss_cluster_api = false
50+
external_endpoint_for_oss_cluster_api = false
51+
replication = false
5252
average_item_size_in_bytes = 0
5353
client_ssl_certificate = ""
5454
periodic_backup_path = ""
@@ -57,26 +57,11 @@ resource "rediscloud_subscription_database" "example" {
5757

5858
alert {
5959
name = "dataset-size"
60-
value = 80
60+
value = 1
6161
}
6262

6363
tags = {
6464
"market" = "emea"
6565
"material" = "cardboard"
6666
}
6767
}
68-
69-
resource "rediscloud_subscription_database" "example_replica" {
70-
subscription_id = rediscloud_subscription.example.id
71-
name = "example-replica"
72-
protocol = "redis"
73-
dataset_size_in_gb = 1
74-
data_persistence = "none"
75-
throughput_measurement_by = "operations-per-second"
76-
throughput_measurement_value = 1000
77-
password = "updated-password"
78-
replication = false
79-
redis_version = "8.0"
80-
81-
replica_of = ["redis://${rediscloud_subscription_database.example.public_endpoint}"]
82-
}

provider/pro/testdata/pro_database_redis_8_with_modules.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ resource "rediscloud_subscription" "example" {
2929
}
3030

3131
creation_plan {
32-
dataset_size_in_gb = 15
32+
dataset_size_in_gb = 1
3333
quantity = 1
34-
replication = true
34+
replication = false
3535
throughput_measurement_by = "operations-per-second"
36-
throughput_measurement_value = 20000
36+
throughput_measurement_value = 1000
3737
}
3838
}
3939

provider/resource_rediscloud_pro_database_redis_8_test.go

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ func TestAccResourceRedisCloudProDatabase_Redis8_CRUDI(t *testing.T) {
2525
password := acctest.RandString(20)
2626
const resourceName = "rediscloud_subscription_database.example"
2727
const subscriptionResourceName = "rediscloud_subscription.example"
28-
const replicaResourceName = "rediscloud_subscription_database.example_replica"
2928
testCloudAccountName := os.Getenv("AWS_TEST_CLOUD_ACCOUNT_NAME")
3029

3130
var subId int
@@ -63,12 +62,6 @@ func TestAccResourceRedisCloudProDatabase_Redis8_CRUDI(t *testing.T) {
6362
resource.TestCheckResourceAttr(resourceName, "tags.market", "emea"),
6463
resource.TestCheckResourceAttr(resourceName, "tags.material", "cardboard"),
6564

66-
// Replica tests
67-
resource.TestCheckResourceAttr(replicaResourceName, "name", "example-replica"),
68-
// should be the value specified in the replica config, rather than the primary database
69-
resource.TestCheckResourceAttr(replicaResourceName, "dataset_size_in_gb", "1"),
70-
resource.TestCheckResourceAttr(replicaResourceName, "replica_of.#", "1"),
71-
7265
// Test databases exist
7366
func(s *terraform.State) error {
7467
r := s.RootModule().Resources[subscriptionResourceName]
@@ -103,36 +96,11 @@ func TestAccResourceRedisCloudProDatabase_Redis8_CRUDI(t *testing.T) {
10396
},
10497
// Test database is updated successfully to Redis 8.0
10598
{
106-
Config: getRedis8DatabaseUpdateConfig(t, testCloudAccountName, name),
99+
Config: getRedis8DatabaseUpdateConfig(t, testCloudAccountName, name, password),
107100
Check: resource.ComposeAggregateTestCheckFunc(
108-
resource.TestCheckResourceAttr(resourceName, "name", "example-updated"),
109-
resource.TestCheckResourceAttr(resourceName, "protocol", "redis"),
110-
resource.TestCheckResourceAttr(resourceName, "dataset_size_in_gb", "1"),
111-
resource.TestCheckResourceAttr(resourceName, "replication", "true"),
112-
resource.TestCheckResourceAttr(resourceName, "support_oss_cluster_api", "true"),
113-
resource.TestCheckResourceAttr(resourceName, "resp_version", "resp3"),
114-
resource.TestCheckResourceAttr(resourceName, "throughput_measurement_by", "operations-per-second"),
115-
resource.TestCheckResourceAttr(resourceName, "throughput_measurement_value", "2000"),
116-
resource.TestCheckResourceAttr(resourceName, "data_persistence", "aof-every-write"),
117-
resource.TestCheckResourceAttr(resourceName, "data_eviction", "volatile-lru"),
118-
resource.TestCheckResourceAttr(resourceName, "average_item_size_in_bytes", "0"),
119-
resource.TestCheckResourceAttr(resourceName, "client_ssl_certificate", ""),
120-
resource.TestCheckResourceAttr(resourceName, "periodic_backup_path", ""),
121-
resource.TestCheckResourceAttr(resourceName, "external_endpoint_for_oss_cluster_api", "true"),
122-
resource.TestCheckResourceAttr(resourceName, "password", "updated-password"),
123-
resource.TestCheckResourceAttr(resourceName, "alert.#", "1"),
124-
resource.TestCheckResourceAttr(resourceName, "alert.0.name", "dataset-size"),
125-
resource.TestCheckResourceAttr(resourceName, "alert.0.value", "80"),
126-
resource.TestCheckResourceAttr(resourceName, "enable_default_user", "true"),
127101
resource.TestCheckResourceAttr(resourceName, "redis_version", "8.0"),
128102
),
129103
},
130-
// Test that that database is imported successfully
131-
{
132-
ResourceName: "rediscloud_subscription_database.example",
133-
ImportState: true,
134-
ImportStateVerify: true,
135-
},
136104
},
137105
})
138106
}
@@ -163,9 +131,9 @@ func getRedis8DatabaseConfig(t *testing.T, cloudAccountName, subscriptionName, p
163131
return fmt.Sprintf(content, cloudAccountName, subscriptionName, password)
164132
}
165133

166-
func getRedis8DatabaseUpdateConfig(t *testing.T, cloudAccountName, subscriptionName string) string {
134+
func getRedis8DatabaseUpdateConfig(t *testing.T, cloudAccountName, subscriptionName, password string) string {
167135
content := utils.GetTestConfig(t, "./pro/testdata/pro_database_redis_8_update.tf")
168-
return fmt.Sprintf(content, cloudAccountName, subscriptionName)
136+
return fmt.Sprintf(content, cloudAccountName, subscriptionName, password)
169137
}
170138

171139
func getRedis8WithModulesConfig(t *testing.T, cloudAccountName, subscriptionName, password string) string {

0 commit comments

Comments
 (0)