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 }