Skip to content

Commit 73bd471

Browse files
authored
Extend integration tests to run in two regions (#614)
* Extend integration tests to run in two regions * Extend integration tests to run in two regions * Add more test resources
1 parent 34701b1 commit 73bd471

17 files changed

+752
-25
lines changed

docker-compose.yml

+27
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,33 @@ services:
2525
- 6878:6878
2626
healthcheck: {test: curl -f localhost:6878/api/readyz, interval: 1s, start_period: 35s}
2727

28+
materialized2:
29+
image: materialize/materialized:latest
30+
container_name: materialized2
31+
command:
32+
- '--cluster-replica-sizes={"3xsmall": {"workers": 1, "scale": 1, "credits_per_hour": "1"}, "2xsmall": {"workers": 1, "scale": 1, "credits_per_hour": "1"}, "25cc": {"workers": 1, "scale": 1, "credits_per_hour": "1"}, "50cc": {"workers": 1, "scale": 1, "credits_per_hour": "1"}}'
33+
- --bootstrap-default-cluster-replica-size=3xsmall
34+
- --bootstrap-builtin-system-cluster-replica-size=3xsmall
35+
- --bootstrap-builtin-catalog-server-cluster-replica-size=3xsmall
36+
- --bootstrap-builtin-support-cluster-replica-size=3xsmall
37+
- --bootstrap-builtin-probe-cluster-replica-size=3xsmall
38+
- --availability-zone=test1
39+
- --availability-zone=test2
40+
- --system-parameter-default=max_clusters=100
41+
- --system-parameter-default=max_sources=100
42+
- --system-parameter-default=max_aws_privatelink_connections=10
43+
- --all-features
44+
environment:
45+
MZ_SQL_LISTEN_ADDR: 0.0.0.0:7875
46+
MZ_HTTP_LISTEN_ADDR: 0.0.0.0:7876
47+
MZ_INTERNAL_SQL_LISTEN_ADDR: 0.0.0.0:7877
48+
MZ_INTERNAL_HTTP_LISTEN_ADDR: 0.0.0.0:7878
49+
ports:
50+
- 7875:7875
51+
- 7877:7877
52+
- 7878:7878
53+
healthcheck: {test: curl -f localhost:7878/api/readyz, interval: 1s, start_period: 35s}
54+
2855
materialized_init:
2956
image: postgres
3057
container_name: materialized_init

integration/cluster.tf

+76
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,35 @@ resource "materialize_cluster" "cluster" {
33
comment = "cluster comment"
44
}
55

6+
# Create in separate region
7+
resource "materialize_cluster" "cluster_us_west" {
8+
name = "cluster"
9+
comment = "cluster comment"
10+
region = "aws/us-west-2"
11+
}
12+
613
resource "materialize_cluster" "cluster_source" {
714
name = "cluster_sources"
815
}
916

17+
# Create in separate region
18+
resource "materialize_cluster" "cluster_source_us_west" {
19+
name = "cluster_sources"
20+
region = "aws/us-west-2"
21+
}
22+
1023
resource "materialize_cluster" "cluster_sink" {
1124
name = "cluster_sinks"
1225
size = "3xsmall"
1326
}
1427

28+
# Create in separate region
29+
resource "materialize_cluster" "cluster_sink_us_west" {
30+
name = "cluster_sinks"
31+
size = "3xsmall"
32+
region = "aws/us-west-2"
33+
}
34+
1535
resource "materialize_cluster" "cluster_by_name" {
1636
name = "cluster_by_name"
1737
size = "25cc"
@@ -29,30 +49,75 @@ resource "materialize_cluster" "scheduling_cluster" {
2949
}
3050
}
3151

52+
# Create in separate region
53+
resource "materialize_cluster" "scheduling_cluster_us_west" {
54+
name = "scheduling_cluster"
55+
size = "25cc"
56+
region = "aws/us-west-2"
57+
scheduling {
58+
on_refresh {
59+
enabled = true
60+
hydration_time_estimate = "1 hour"
61+
}
62+
}
63+
}
64+
3265
resource "materialize_cluster" "no_replication" {
3366
name = "no_replication"
3467
size = "25cc"
3568
replication_factor = 0
3669
}
3770

71+
# Create in separate region
72+
resource "materialize_cluster" "no_replication_us_west" {
73+
name = "no_replication"
74+
size = "25cc"
75+
replication_factor = 0
76+
region = "aws/us-west-2"
77+
}
78+
3879
resource "materialize_cluster_grant" "cluster_grant_usage" {
3980
role_name = materialize_role.role_1.name
4081
privilege = "USAGE"
4182
cluster_name = materialize_cluster.cluster.name
4283
}
4384

85+
# Create in separate region
86+
resource "materialize_cluster_grant" "cluster_grant_usage_us_west" {
87+
role_name = materialize_role.role_1_us_west.name
88+
privilege = "USAGE"
89+
cluster_name = materialize_cluster.cluster_us_west.name
90+
region = "aws/us-west-2"
91+
}
92+
4493
resource "materialize_cluster_grant" "cluster_grant_create" {
4594
role_name = materialize_role.role_2.name
4695
privilege = "CREATE"
4796
cluster_name = materialize_cluster.cluster_source.name
4897
}
4998

99+
# Create in separate region
100+
resource "materialize_cluster_grant" "cluster_grant_create_us_west" {
101+
role_name = materialize_role.role_2_us_west.name
102+
privilege = "CREATE"
103+
cluster_name = materialize_cluster.cluster_source_us_west.name
104+
region = "aws/us-west-2"
105+
}
106+
50107
resource "materialize_cluster_grant_default_privilege" "example" {
51108
grantee_name = materialize_role.grantee.name
52109
privilege = "USAGE"
53110
target_role_name = materialize_role.target.name
54111
}
55112

113+
# Create in separate region
114+
resource "materialize_cluster_grant_default_privilege" "example_us_west" {
115+
grantee_name = materialize_role.grantee_us_west.name
116+
privilege = "USAGE"
117+
target_role_name = materialize_role.target_us_west.name
118+
region = "aws/us-west-2"
119+
}
120+
56121
resource "materialize_cluster" "managed_cluster" {
57122
name = "managed_cluster"
58123
replication_factor = 2
@@ -62,6 +127,17 @@ resource "materialize_cluster" "managed_cluster" {
62127
disk = true
63128
}
64129

130+
# Create in separate region
131+
resource "materialize_cluster" "managed_cluster_us_west" {
132+
name = "managed_cluster"
133+
replication_factor = 2
134+
size = "25cc"
135+
introspection_interval = "1s"
136+
introspection_debugging = true
137+
disk = true
138+
region = "aws/us-west-2"
139+
}
140+
65141
data "materialize_cluster" "all" {}
66142

67143
data "materialize_current_cluster" "quickstart" {}

integration/connection.tf

+40
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,19 @@ resource "materialize_connection_kafka" "kafka_connection" {
99
validate = true
1010
}
1111

12+
# Create in separate region
13+
resource "materialize_connection_kafka" "kafka_connection_us_west" {
14+
name = "kafka_connection"
15+
comment = "connection kafka comment"
16+
security_protocol = "PLAINTEXT"
17+
18+
kafka_broker {
19+
broker = "redpanda:9092"
20+
}
21+
region = "aws/us-west-2"
22+
validate = true
23+
}
24+
1225
resource "materialize_connection_kafka" "kafka_conn_ssl_auth" {
1326
name = "kafka_conn_ssl_auth"
1427
security_protocol = "SSL"
@@ -34,6 +47,33 @@ resource "materialize_connection_kafka" "kafka_conn_ssl_auth" {
3447
validate = false
3548
}
3649

50+
# Create in separate region
51+
resource "materialize_connection_kafka" "kafka_conn_ssl_auth_us_west" {
52+
name = "kafka_conn_ssl_auth"
53+
security_protocol = "SSL"
54+
55+
kafka_broker {
56+
broker = "redpanda:9092"
57+
}
58+
59+
ssl_certificate {
60+
text = "certificate-content"
61+
}
62+
63+
ssl_key {
64+
name = materialize_secret.kafka_password_us_west.name
65+
database_name = materialize_secret.kafka_password_us_west.database_name
66+
schema_name = materialize_secret.kafka_password_us_west.schema_name
67+
}
68+
69+
ssl_certificate_authority {
70+
text = "ca-content"
71+
}
72+
73+
region = "aws/us-west-2"
74+
validate = false
75+
}
76+
3777
resource "materialize_connection_kafka" "kafka_ssh_tunnel_connection" {
3878
name = "kafka_ssh_tunnel_connection"
3979
security_protocol = "PLAINTEXT"

integration/database.tf

+31
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,55 @@ resource "materialize_database" "database" {
33
comment = "database comment"
44
}
55

6+
# Create in separate region
7+
resource "materialize_database" "database_us_west" {
8+
name = "example_database"
9+
comment = "database comment"
10+
region = "aws/us-west-2"
11+
}
12+
613
resource "materialize_database_grant" "database_grant_usage" {
714
role_name = materialize_role.role_1.name
815
privilege = "USAGE"
916
database_name = materialize_database.database.name
1017
}
1118

19+
# Create in separate region
20+
resource "materialize_database_grant" "database_grant_usage_us_west" {
21+
role_name = materialize_role.role_1.name
22+
privilege = "USAGE"
23+
database_name = materialize_database.database.name
24+
region = "aws/us-west-2"
25+
}
26+
1227
resource "materialize_database_grant" "database_grant_create" {
1328
role_name = materialize_role.role_2.name
1429
privilege = "CREATE"
1530
database_name = materialize_database.database.name
1631
}
1732

33+
# Create in separate region
34+
resource "materialize_database_grant" "database_grant_create_us_west" {
35+
role_name = materialize_role.role_2_us_west.name
36+
privilege = "CREATE"
37+
database_name = materialize_database.database_us_west.name
38+
region = "aws/us-west-2"
39+
}
40+
1841
resource "materialize_database_grant_default_privilege" "example" {
1942
grantee_name = materialize_role.grantee.name
2043
privilege = "USAGE"
2144
target_role_name = materialize_role.target.name
2245
}
2346

47+
# Create in separate region
48+
resource "materialize_database_grant_default_privilege" "example_us_west" {
49+
grantee_name = materialize_role.grantee_us_west.name
50+
privilege = "USAGE"
51+
target_role_name = materialize_role.target_us_west.name
52+
region = "aws/us-west-2"
53+
}
54+
2455
data "materialize_database" "all" {}
2556

2657
data "materialize_current_database" "default" {}

integration/datasources.tf

+5
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
data "materialize_egress_ips" "all" {}
2+
3+
# Get the egress IPs from a specific region
4+
data "materialize_egress_ips" "us_west" {
5+
region = "aws/us-west-2"
6+
}

integration/index.tf

+19
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,25 @@ resource "materialize_index" "loadgen_index" {
1515
}
1616
}
1717

18+
# Create in separate region
19+
resource "materialize_index" "loadgen_index_us_west" {
20+
name = "loadgen_index"
21+
comment = "index comment"
22+
region = "aws/us-west-2"
23+
24+
cluster_name = materialize_cluster.cluster_source_us_west.name
25+
26+
obj_name {
27+
name = materialize_source_load_generator.load_generator_cluster_us_west.name
28+
schema_name = materialize_source_load_generator.load_generator_cluster_us_west.schema_name
29+
database_name = materialize_source_load_generator.load_generator_cluster_us_west.database_name
30+
}
31+
32+
col_expr {
33+
field = "counter"
34+
}
35+
}
36+
1837
resource "materialize_index" "materialized_view_index" {
1938
name = "simple"
2039
cluster_name = "quickstart"

integration/materialized_view.tf

+15
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@ SELECT
1111
SQL
1212
}
1313

14+
# Create in separate region
15+
resource "materialize_materialized_view" "simple_materialized_view_us_west" {
16+
name = "simple_materialized_view"
17+
schema_name = materialize_schema.schema_us_west.name
18+
database_name = materialize_database.database_us_west.name
19+
comment = "materialize view comment"
20+
cluster_name = "quickstart"
21+
region = "aws/us-west-2"
22+
23+
statement = <<SQL
24+
SELECT
25+
1 AS id
26+
SQL
27+
}
28+
1429
resource "materialize_materialized_view" "materialized_view_assertions" {
1530
name = "materialized_view_assertions"
1631
schema_name = materialize_schema.schema.name

integration/rbac.tf

+19
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,34 @@ resource "materialize_database" "db1" {
22
name = "db1"
33
}
44

5+
# Create in separate region
6+
resource "materialize_database" "db1_us_west" {
7+
name = "db1"
8+
region = "aws/us-west-2"
9+
}
10+
511
resource "materialize_database" "db2" {
612
name = "db2"
713
}
814

15+
# Create in separate region
16+
resource "materialize_database" "db2_us_west" {
17+
name = "db2"
18+
region = "aws/us-west-2"
19+
}
20+
921
resource "materialize_schema" "schema1" {
1022
name = "schema1"
1123
database_name = materialize_database.db1.name
1224
}
1325

26+
# Create in separate region
27+
resource "materialize_schema" "schema1_us_west" {
28+
name = "schema1"
29+
database_name = materialize_database.db1_us_west.name
30+
region = "aws/us-west-2"
31+
}
32+
1433
resource "materialize_schema" "schema2" {
1534
name = "schema2"
1635
database_name = materialize_database.db1.name

0 commit comments

Comments
 (0)