github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/messaging/v2/message_test.go (about)

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