github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/messaging/v2/queue_test.go (about)

     1  //go:build acceptance || messaging || queues
     2  
     3  package v2
     4  
     5  import (
     6  	"context"
     7  	"testing"
     8  
     9  	"github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients"
    10  	"github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/messaging/v2/queues"
    12  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    13  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    14  )
    15  
    16  func TestCRUDQueues(t *testing.T) {
    17  	clientID := "3381af92-2b9e-11e3-b191-71861300734d"
    18  
    19  	client, err := clients.NewMessagingV2Client(clientID)
    20  	if err != nil {
    21  		t.Fatalf("Unable to create a messaging service client: %v", err)
    22  	}
    23  
    24  	createdQueueName, err := CreateQueue(t, client)
    25  	th.AssertNoErr(t, err)
    26  	defer DeleteQueue(t, client, createdQueueName)
    27  
    28  	createdQueue, err := queues.Get(context.TODO(), client, createdQueueName).Extract()
    29  	th.AssertNoErr(t, err)
    30  
    31  	tools.PrintResource(t, createdQueue)
    32  	tools.PrintResource(t, createdQueue.Extra)
    33  
    34  	updateOpts := queues.BatchUpdateOpts{
    35  		queues.UpdateOpts{
    36  			Op:    "replace",
    37  			Path:  "/metadata/_max_claim_count",
    38  			Value: 15,
    39  		},
    40  		queues.UpdateOpts{
    41  			Op:    "replace",
    42  			Path:  "/metadata/description",
    43  			Value: "Updated description for queues acceptance test.",
    44  		},
    45  	}
    46  
    47  	t.Logf("Attempting to update Queue: %s", createdQueueName)
    48  	updateResult, updateErr := queues.Update(context.TODO(), client, createdQueueName, updateOpts).Extract()
    49  	if updateErr != nil {
    50  		t.Fatalf("Unable to update Queue %s: %v", createdQueueName, updateErr)
    51  	}
    52  
    53  	updatedQueue, err := GetQueue(t, client, createdQueueName)
    54  	th.AssertNoErr(t, err)
    55  
    56  	tools.PrintResource(t, updateResult)
    57  	tools.PrintResource(t, updatedQueue)
    58  	tools.PrintResource(t, updatedQueue.Extra)
    59  }
    60  
    61  func TestListQueues(t *testing.T) {
    62  	clientID := "3381af92-2b9e-11e3-b191-71861300734d"
    63  
    64  	client, err := clients.NewMessagingV2Client(clientID)
    65  	if err != nil {
    66  		t.Fatalf("Unable to create a messaging service client: %v", err)
    67  	}
    68  
    69  	firstQueueName, err := CreateQueue(t, client)
    70  	th.AssertNoErr(t, err)
    71  	defer DeleteQueue(t, client, firstQueueName)
    72  
    73  	secondQueueName, err := CreateQueue(t, client)
    74  	th.AssertNoErr(t, err)
    75  	defer DeleteQueue(t, client, secondQueueName)
    76  
    77  	listOpts := queues.ListOpts{
    78  		Limit:    10,
    79  		Detailed: true,
    80  	}
    81  
    82  	pager := queues.List(client, listOpts)
    83  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    84  		allQueues, err := queues.ExtractQueues(page)
    85  		if err != nil {
    86  			t.Fatalf("Unable to extract Queues: %v", err)
    87  		}
    88  
    89  		for _, queue := range allQueues {
    90  			tools.PrintResource(t, queue)
    91  		}
    92  
    93  		return true, nil
    94  	})
    95  	th.AssertNoErr(t, err)
    96  }
    97  
    98  func TestStatQueue(t *testing.T) {
    99  	clientID := "3381af92-2b9e-11e3-b191-71861300734c"
   100  
   101  	client, err := clients.NewMessagingV2Client(clientID)
   102  	if err != nil {
   103  		t.Fatalf("Unable to create a messaging service client: %v", err)
   104  	}
   105  
   106  	createdQueueName, err := CreateQueue(t, client)
   107  	th.AssertNoErr(t, err)
   108  	defer DeleteQueue(t, client, createdQueueName)
   109  
   110  	queueStats, err := queues.GetStats(context.TODO(), client, createdQueueName).Extract()
   111  	if err != nil {
   112  		t.Fatalf("Unable to stat queue: %v", err)
   113  	}
   114  
   115  	tools.PrintResource(t, queueStats)
   116  }
   117  
   118  func TestShare(t *testing.T) {
   119  	clientID := "3381af92-2b9e-11e3-b191-71861300734c"
   120  
   121  	client, err := clients.NewMessagingV2Client(clientID)
   122  	if err != nil {
   123  		t.Fatalf("Unable to create a messaging service client: %v", err)
   124  	}
   125  
   126  	queueName, err := CreateQueue(t, client)
   127  	if err != nil {
   128  		t.Logf("Unable to create queue for share.")
   129  	}
   130  	defer DeleteQueue(t, client, queueName)
   131  
   132  	t.Logf("Attempting to create share for queue: %s", queueName)
   133  	share, shareErr := CreateShare(t, client, queueName)
   134  	if shareErr != nil {
   135  		t.Fatalf("Unable to create share: %v", shareErr)
   136  	}
   137  
   138  	tools.PrintResource(t, share)
   139  }
   140  
   141  func TestPurge(t *testing.T) {
   142  	clientID := "3381af92-2b9e-11e3-b191-71861300734c"
   143  
   144  	client, err := clients.NewMessagingV2Client(clientID)
   145  	if err != nil {
   146  		t.Fatalf("Unable to create a messaging service client: %v", err)
   147  	}
   148  
   149  	queueName, err := CreateQueue(t, client)
   150  	th.AssertNoErr(t, err)
   151  	defer DeleteQueue(t, client, queueName)
   152  
   153  	purgeOpts := queues.PurgeOpts{
   154  		ResourceTypes: []queues.PurgeResource{
   155  			queues.ResourceMessages,
   156  		},
   157  	}
   158  
   159  	t.Logf("Attempting to purge queue: %s", queueName)
   160  	purgeErr := queues.Purge(context.TODO(), client, queueName, purgeOpts).ExtractErr()
   161  	if purgeErr != nil {
   162  		t.Fatalf("Unable to purge queue %s: %v", queueName, purgeErr)
   163  	}
   164  }