Skip to content

Commit

Permalink
Merge pull request #151 from aiven/savciuci-teacc-kafka-topic
Browse files Browse the repository at this point in the history
testacc: kafka topic

#151
  • Loading branch information
rikonen authored Jan 31, 2020
2 parents 8a7a29f + 1f9bc9b commit 1695ef7
Show file tree
Hide file tree
Showing 3 changed files with 183 additions and 28 deletions.
37 changes: 27 additions & 10 deletions aiven/resource_kafka_topic.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,16 +129,33 @@ func resourceKafkaTopicRead(d *schema.ResourceData, m interface{}) error {
return err
}

d.Set("project", project)
d.Set("service_name", serviceName)
d.Set("topic_name", topic.TopicName)
d.Set("state", topic.State)
d.Set("partitions", len(topic.Partitions))
d.Set("replication", topic.Replication)
d.Set("cleanup_policy", topic.CleanupPolicy)
d.Set("minimum_in_sync_replicas", topic.MinimumInSyncReplicas)
d.Set("retention_bytes", topic.RetentionBytes)
d.Set("retention_hours", topic.RetentionHours)
if err := d.Set("project", project); err != nil {
return err
}
if err := d.Set("service_name", serviceName); err != nil {
return err
}
if err := d.Set("topic_name", topic.TopicName); err != nil {
return err
}
if err := d.Set("partitions", len(topic.Partitions)); err != nil {
return err
}
if err := d.Set("replication", topic.Replication); err != nil {
return err
}
if err := d.Set("cleanup_policy", topic.CleanupPolicy); err != nil {
return err
}
if err := d.Set("minimum_in_sync_replicas", topic.MinimumInSyncReplicas); err != nil {
return err
}
if err := d.Set("retention_bytes", topic.RetentionBytes); err != nil {
return err
}
if err := d.Set("retention_hours", topic.RetentionHours); err != nil {
return err
}

return nil
}
Expand Down
134 changes: 134 additions & 0 deletions aiven/resource_kafka_topic_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
package aiven

import (
"fmt"
"github.com/aiven/aiven-go-client"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
"log"
"os"
"testing"
)

func TestAccAivenKafkaTopic_basic(t *testing.T) {
t.Parallel()

resourceName := "aiven_kafka_topic.foo"
rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAivenKafkaTopicResourceDestroy,
Steps: []resource.TestStep{
{
Config: testAccKafkaTopicResource(rName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAivenKafkaTopicAttributes("data.aiven_kafka_topic.topic"),
resource.TestCheckResourceAttr(resourceName, "project", fmt.Sprintf("test-acc-pr-%s", rName)),
resource.TestCheckResourceAttr(resourceName, "service_name", fmt.Sprintf("test-acc-sr-%s", rName)),
resource.TestCheckResourceAttr(resourceName, "topic_name", fmt.Sprintf("test-acc-topic-%s", rName)),
resource.TestCheckResourceAttr(resourceName, "partitions", "3"),
resource.TestCheckResourceAttr(resourceName, "replication", "2"),
),
},
},
})
}

func testAccKafkaTopicResource(name string) string {
return fmt.Sprintf(`
resource "aiven_project" "foo" {
project = "test-acc-pr-%s"
card_id="%s"
}
resource "aiven_service" "bar" {
project = aiven_project.foo.project
cloud_name = "google-europe-west1"
plan = "business-4"
service_name = "test-acc-sr-%s"
service_type = "kafka"
maintenance_window_dow = "monday"
maintenance_window_time = "10:00:00"
kafka_user_config {
kafka_version = "2.4"
kafka {
group_max_session_timeout_ms = 70000
log_retention_bytes = 1000000000
}
}
}
resource "aiven_kafka_topic" "foo" {
project = aiven_project.foo.project
service_name = aiven_service.bar.service_name
topic_name = "test-acc-topic-%s"
partitions = 3
replication = 2
}
data "aiven_kafka_topic" "topic" {
project = aiven_project.foo.project
service_name = aiven_service.bar.service_name
topic_name = aiven_kafka_topic.foo.topic_name
}
`, name, os.Getenv("AIVEN_CARD_ID"), name, name)
}

func testAccCheckAivenKafkaTopicAttributes(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
r := s.RootModule().Resources[n]
a := r.Primary.Attributes

log.Printf("[DEBUG] kafka topic attributes %v", a)

if a["project"] == "" {
return fmt.Errorf("expected to get a project name from Aiven")
}

if a["service_name"] == "" {
return fmt.Errorf("expected to get a service_name from Aiven")
}

if a["topic_name"] == "" {
return fmt.Errorf("expected to get a topic_name from Aiven")
}

if a["partitions"] == "" {
return fmt.Errorf("expected to get partitions from Aiven")
}

if a["replication"] == "" {
return fmt.Errorf("expected to get a replication from Aiven")
}

return nil
}
}

func testAccCheckAivenKafkaTopicResourceDestroy(s *terraform.State) error {
c := testAccProvider.Meta().(*aiven.Client)

// loop through the resources in state, verifying each kafka topic is destroyed
for _, rs := range s.RootModule().Resources {
if rs.Type != "aiven_kafka_topic" {
continue
}
project, serviceName, topicName := splitResourceID3(rs.Primary.ID)
t, err := c.KafkaTopics.Get(project, serviceName, topicName)
if err != nil {
if err.(aiven.Error).Status != 404 {
return err
}
}

if t != nil {
return fmt.Errorf("kafka topic (%s) still exists, id %s", topicName, rs.Primary.ID)
}
}

return nil
}
40 changes: 22 additions & 18 deletions aiven/resource_service_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,30 +63,34 @@ func testAccCheckAivenServiceUserResourceDestroy(s *terraform.State) error {
func testAccServiceUserResource(name string) string {
return fmt.Sprintf(`
resource "aiven_project" "foo" {
project = "test-acc-pr-%s"
card_id = "%s"
project = "test-acc-pr-%s"
card_id = "%s"
}
resource "aiven_service" "bar" {
project = aiven_project.foo.project
cloud_name = "google-europe-west1"
plan = "startup-4"
service_name = "test-acc-sr-%s"
service_type = "pg"
maintenance_window_dow = "monday"
maintenance_window_time = "10:00:00"
project = aiven_project.foo.project
cloud_name = "google-europe-west1"
plan = "startup-4"
service_name = "test-acc-sr-%s"
service_type = "pg"
maintenance_window_dow = "monday"
maintenance_window_time = "10:00:00"
pg_user_config {
pg_version = 11
}
}
resource "aiven_service_user" "foo" {
service_name = aiven_service.bar.service_name
project = aiven_project.foo.project
username = "user-%s"
service_name = aiven_service.bar.service_name
project = aiven_project.foo.project
username = "user-%s"
}
data "aiven_service_user" "user" {
service_name = aiven_service.bar.service_name
project = aiven_project.foo.project
username = aiven_service_user.foo.username
service_name = aiven_service.bar.service_name
project = aiven_project.foo.project
username = aiven_service_user.foo.username
}
`, name, os.Getenv("AIVEN_CARD_ID"), name, name)
}
Expand Down

0 comments on commit 1695ef7

Please sign in to comment.