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 }