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

     1  //go:build acceptance || messaging || messages
     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/messages"
    12  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    13  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    14  )
    15  
    16  func TestListMessages(t *testing.T) {
    17  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
    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  	totalNumberOfMessages := 3
    29  	currentNumberOfMessages := 0
    30  
    31  	for i := 0; i < totalNumberOfMessages; i++ {
    32  		_, err = CreateMessage(t, client, createdQueueName)
    33  		th.AssertNoErr(t, err)
    34  	}
    35  
    36  	// Use a different client/clientID in order to see messages on the Queue
    37  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
    38  	client, err = clients.NewMessagingV2Client(clientID)
    39  	th.AssertNoErr(t, err)
    40  
    41  	listOpts := messages.ListOpts{}
    42  
    43  	pager := messages.List(client, createdQueueName, listOpts)
    44  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    45  		allMessages, err := messages.ExtractMessages(page)
    46  		if err != nil {
    47  			t.Fatalf("Unable to extract messages: %v", err)
    48  		}
    49  
    50  		for _, message := range allMessages {
    51  			currentNumberOfMessages += 1
    52  			tools.PrintResource(t, message)
    53  		}
    54  
    55  		return true, nil
    56  	})
    57  	th.AssertNoErr(t, err)
    58  	th.AssertEquals(t, totalNumberOfMessages, currentNumberOfMessages)
    59  }
    60  
    61  func TestCreateMessages(t *testing.T) {
    62  	clientID := "3381af92-2b9e-11e3-b191-71861300734c"
    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  	createdQueueName, err := CreateQueue(t, client)
    70  	th.AssertNoErr(t, err)
    71  	defer DeleteQueue(t, client, createdQueueName)
    72  
    73  	_, err = CreateMessage(t, client, createdQueueName)
    74  	th.AssertNoErr(t, err)
    75  }
    76  
    77  func TestGetMessages(t *testing.T) {
    78  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
    79  
    80  	client, err := clients.NewMessagingV2Client(clientID)
    81  	if err != nil {
    82  		t.Fatalf("Unable to create a messaging service client: %v", err)
    83  	}
    84  
    85  	createdQueueName, err := CreateQueue(t, client)
    86  	th.AssertNoErr(t, err)
    87  	defer DeleteQueue(t, client, createdQueueName)
    88  
    89  	_, err = CreateMessage(t, client, createdQueueName)
    90  	th.AssertNoErr(t, err)
    91  	_, err = CreateMessage(t, client, createdQueueName)
    92  	th.AssertNoErr(t, err)
    93  
    94  	// Use a different client/clientID in order to see messages on the Queue
    95  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
    96  	client, err = clients.NewMessagingV2Client(clientID)
    97  	th.AssertNoErr(t, err)
    98  
    99  	listOpts := messages.ListOpts{}
   100  
   101  	var messageIDs []string
   102  
   103  	pager := messages.List(client, createdQueueName, listOpts)
   104  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
   105  		allMessages, err := messages.ExtractMessages(page)
   106  		if err != nil {
   107  			t.Fatalf("Unable to extract messages: %v", err)
   108  		}
   109  
   110  		for _, message := range allMessages {
   111  			messageIDs = append(messageIDs, message.ID)
   112  		}
   113  
   114  		return true, nil
   115  	})
   116  	th.AssertNoErr(t, err)
   117  
   118  	getMessageOpts := messages.GetMessagesOpts{
   119  		IDs: messageIDs,
   120  	}
   121  	t.Logf("Attempting to get messages from queue %s with ids: %v", createdQueueName, messageIDs)
   122  	messagesList, err := messages.GetMessages(context.TODO(), client, createdQueueName, getMessageOpts).Extract()
   123  	if err != nil {
   124  		t.Fatalf("Unable to get messages from queue: %s", createdQueueName)
   125  	}
   126  
   127  	tools.PrintResource(t, messagesList)
   128  }
   129  
   130  func TestGetMessage(t *testing.T) {
   131  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
   132  
   133  	client, err := clients.NewMessagingV2Client(clientID)
   134  	if err != nil {
   135  		t.Fatalf("Unable to create a messaging service client: %v", err)
   136  	}
   137  
   138  	createdQueueName, err := CreateQueue(t, client)
   139  	th.AssertNoErr(t, err)
   140  	defer DeleteQueue(t, client, createdQueueName)
   141  
   142  	_, err = CreateMessage(t, client, createdQueueName)
   143  	th.AssertNoErr(t, err)
   144  
   145  	// Use a different client/clientID in order to see messages on the Queue
   146  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
   147  	client, err = clients.NewMessagingV2Client(clientID)
   148  	th.AssertNoErr(t, err)
   149  
   150  	listOpts := messages.ListOpts{}
   151  
   152  	var messageIDs []string
   153  
   154  	pager := messages.List(client, createdQueueName, listOpts)
   155  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
   156  		allMessages, err := messages.ExtractMessages(page)
   157  		if err != nil {
   158  			t.Fatalf("Unable to extract messages: %v", err)
   159  		}
   160  
   161  		for _, message := range allMessages {
   162  			messageIDs = append(messageIDs, message.ID)
   163  		}
   164  
   165  		return true, nil
   166  	})
   167  	th.AssertNoErr(t, err)
   168  
   169  	for _, messageID := range messageIDs {
   170  		t.Logf("Attempting to get message from queue %s: %s", createdQueueName, messageID)
   171  		message, getErr := messages.Get(context.TODO(), client, createdQueueName, messageID).Extract()
   172  		if getErr != nil {
   173  			t.Fatalf("Unable to get message from queue %s: %s", createdQueueName, messageID)
   174  		}
   175  		tools.PrintResource(t, message)
   176  	}
   177  }
   178  
   179  func TestDeleteMessagesIDs(t *testing.T) {
   180  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
   181  
   182  	client, err := clients.NewMessagingV2Client(clientID)
   183  	if err != nil {
   184  		t.Fatalf("Unable to create a messaging service client: %v", err)
   185  	}
   186  
   187  	createdQueueName, err := CreateQueue(t, client)
   188  	th.AssertNoErr(t, err)
   189  	defer DeleteQueue(t, client, createdQueueName)
   190  
   191  	_, err = CreateMessage(t, client, createdQueueName)
   192  	th.AssertNoErr(t, err)
   193  	_, err = CreateMessage(t, client, createdQueueName)
   194  	th.AssertNoErr(t, err)
   195  
   196  	// Use a different client/clientID in order to see messages on the Queue
   197  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
   198  
   199  	client, err = clients.NewMessagingV2Client(clientID)
   200  	th.AssertNoErr(t, err)
   201  
   202  	listOpts := messages.ListOpts{}
   203  
   204  	var messageIDs []string
   205  
   206  	pager := messages.List(client, createdQueueName, listOpts)
   207  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
   208  		allMessages, err := messages.ExtractMessages(page)
   209  		if err != nil {
   210  			t.Fatalf("Unable to extract messages: %v", err)
   211  		}
   212  
   213  		for _, message := range allMessages {
   214  			messageIDs = append(messageIDs, message.ID)
   215  			tools.PrintResource(t, message)
   216  		}
   217  
   218  		return true, nil
   219  	})
   220  	th.AssertNoErr(t, err)
   221  
   222  	deleteOpts := messages.DeleteMessagesOpts{
   223  		IDs: messageIDs,
   224  	}
   225  
   226  	t.Logf("Attempting to delete messages: %v", messageIDs)
   227  	deleteErr := messages.DeleteMessages(context.TODO(), client, createdQueueName, deleteOpts).ExtractErr()
   228  	if deleteErr != nil {
   229  		t.Fatalf("Unable to delete messages: %v", deleteErr)
   230  	}
   231  
   232  	t.Logf("Attempting to list messages.")
   233  	messageList, err := ListMessages(t, client, createdQueueName)
   234  	th.AssertNoErr(t, err)
   235  
   236  	if len(messageList) > 0 {
   237  		t.Fatalf("Did not delete all specified messages in the queue.")
   238  	}
   239  }
   240  
   241  func TestDeleteMessagesPop(t *testing.T) {
   242  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
   243  
   244  	client, err := clients.NewMessagingV2Client(clientID)
   245  	if err != nil {
   246  		t.Fatalf("Unable to create a messaging service client: %v", err)
   247  	}
   248  
   249  	createdQueueName, err := CreateQueue(t, client)
   250  	th.AssertNoErr(t, err)
   251  	defer DeleteQueue(t, client, createdQueueName)
   252  
   253  	for i := 0; i < 5; i++ {
   254  		_, err = CreateMessage(t, client, createdQueueName)
   255  		th.AssertNoErr(t, err)
   256  	}
   257  
   258  	// Use a different client/clientID in order to see messages on the Queue
   259  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
   260  
   261  	client, err = clients.NewMessagingV2Client(clientID)
   262  	th.AssertNoErr(t, err)
   263  
   264  	messageList, err := ListMessages(t, client, createdQueueName)
   265  	th.AssertNoErr(t, err)
   266  
   267  	messagesNumber := len(messageList)
   268  	popNumber := 3
   269  
   270  	PopOpts := messages.PopMessagesOpts{
   271  		Pop: popNumber,
   272  	}
   273  
   274  	t.Logf("Attempting to Pop last %v messages.", popNumber)
   275  	popMessages, deleteErr := messages.PopMessages(context.TODO(), client, createdQueueName, PopOpts).Extract()
   276  	if deleteErr != nil {
   277  		t.Fatalf("Unable to Pop messages: %v", deleteErr)
   278  	}
   279  
   280  	tools.PrintResource(t, popMessages)
   281  
   282  	messageList, err = ListMessages(t, client, createdQueueName)
   283  	th.AssertNoErr(t, err)
   284  	if len(messageList) != messagesNumber-popNumber {
   285  		t.Fatalf("Unable to Pop specified number of messages.")
   286  	}
   287  }
   288  
   289  func TestDeleteMessage(t *testing.T) {
   290  	clientID := "3381af92-2b9e-11e3-b191-718613007343"
   291  
   292  	client, err := clients.NewMessagingV2Client(clientID)
   293  	if err != nil {
   294  		t.Fatalf("Unable to create a messaging service client: %v", err)
   295  	}
   296  
   297  	createdQueueName, err := CreateQueue(t, client)
   298  	th.AssertNoErr(t, err)
   299  	defer DeleteQueue(t, client, createdQueueName)
   300  
   301  	_, err = CreateMessage(t, client, createdQueueName)
   302  	th.AssertNoErr(t, err)
   303  
   304  	// Use a different client/clientID in order to see messages on the Queue
   305  	clientID = "3381af92-2b9e-11e3-b191-71861300734d"
   306  	client, err = clients.NewMessagingV2Client(clientID)
   307  	th.AssertNoErr(t, err)
   308  
   309  	listOpts := messages.ListOpts{}
   310  
   311  	var messageIDs []string
   312  
   313  	pager := messages.List(client, createdQueueName, listOpts)
   314  	err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
   315  		allMessages, err := messages.ExtractMessages(page)
   316  		if err != nil {
   317  			t.Fatalf("Unable to extract messages: %v", err)
   318  		}
   319  
   320  		for _, message := range allMessages {
   321  			messageIDs = append(messageIDs, message.ID)
   322  		}
   323  
   324  		return true, nil
   325  	})
   326  	th.AssertNoErr(t, err)
   327  
   328  	for _, messageID := range messageIDs {
   329  		t.Logf("Attempting to delete message from queue %s: %s", createdQueueName, messageID)
   330  		deleteOpts := messages.DeleteOpts{}
   331  		deleteErr := messages.Delete(context.TODO(), client, createdQueueName, messageID, deleteOpts).ExtractErr()
   332  		if deleteErr != nil {
   333  			t.Fatalf("Unable to delete message from queue %s: %s", createdQueueName, messageID)
   334  		} else {
   335  			t.Logf("Successfully deleted message: %s", messageID)
   336  		}
   337  	}
   338  }