Skip to content

Commit 0cda95c

Browse files
[azservicebus] Adding in (Queue|Topic|Subscription)Name fields. (Azure#21632)
Fixes Azure#16692
1 parent 2952409 commit 0cda95c

File tree

4 files changed

+170
-25
lines changed

4 files changed

+170
-25
lines changed

sdk/messaging/azservicebus/admin/admin_client_queue.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ type CreateQueueOptions struct {
123123

124124
// CreateQueueResponse contains the response fields for Client.CreateQueue
125125
type CreateQueueResponse struct {
126+
// QueueName is the name of the queue.
127+
QueueName string
128+
126129
QueueProperties
127130
}
128131

@@ -141,12 +144,16 @@ func (ac *Client) CreateQueue(ctx context.Context, queueName string, options *Cr
141144
}
142145

143146
return CreateQueueResponse{
147+
QueueName: queueName,
144148
QueueProperties: *newProps,
145149
}, nil
146150
}
147151

148152
// UpdateQueueResponse contains the response fields for Client.UpdateQueue
149153
type UpdateQueueResponse struct {
154+
// QueueName is the name of the queue.
155+
QueueName string
156+
150157
QueueProperties
151158
}
152159

@@ -164,12 +171,16 @@ func (ac *Client) UpdateQueue(ctx context.Context, queueName string, properties
164171
}
165172

166173
return UpdateQueueResponse{
174+
QueueName: queueName,
167175
QueueProperties: *newProps,
168176
}, err
169177
}
170178

171179
// GetQueueResponse contains the response fields for Client.GetQueue
172180
type GetQueueResponse struct {
181+
// QueueName is the name of the queue.
182+
QueueName string
183+
173184
QueueProperties
174185
}
175186

@@ -195,12 +206,16 @@ func (ac *Client) GetQueue(ctx context.Context, queueName string, options *GetQu
195206
}
196207

197208
return &GetQueueResponse{
209+
QueueName: queueName,
198210
QueueProperties: queueItem.QueueProperties,
199211
}, nil
200212
}
201213

202214
// GetQueueRuntimePropertiesResponse contains response fields for Client.GetQueueRuntimeProperties
203215
type GetQueueRuntimePropertiesResponse struct {
216+
// QueueName is the name of the queue.
217+
QueueName string
218+
204219
QueueRuntimeProperties
205220
}
206221

@@ -226,6 +241,7 @@ func (ac *Client) GetQueueRuntimeProperties(ctx context.Context, queueName strin
226241
}
227242

228243
return &GetQueueRuntimePropertiesResponse{
244+
QueueName: queueName,
229245
QueueRuntimeProperties: item.QueueRuntimeProperties,
230246
}, nil
231247
}
@@ -309,7 +325,9 @@ type ListQueuesRuntimePropertiesResponse struct {
309325

310326
// QueueRuntimePropertiesItem contains a single item in the page response for QueueRuntimePropertiesPager.PageResponse
311327
type QueueRuntimePropertiesItem struct {
328+
// QueueName is the name of the queue.
312329
QueueName string
330+
313331
QueueRuntimeProperties
314332
}
315333

sdk/messaging/azservicebus/admin/admin_client_subscription.go

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ type SubscriptionRuntimeProperties struct {
9797

9898
// CreateSubscriptionResponse contains response fields for Client.CreateSubscription
9999
type CreateSubscriptionResponse struct {
100+
// SubscriptionName is the name of the subscription.
101+
SubscriptionName string
102+
103+
// TopicName is the name of the topic for this subscription.
104+
TopicName string
105+
100106
SubscriptionProperties
101107
}
102108

@@ -121,12 +127,20 @@ func (ac *Client) CreateSubscription(ctx context.Context, topicName string, subs
121127
}
122128

123129
return CreateSubscriptionResponse{
130+
SubscriptionName: subscriptionName,
131+
TopicName: topicName,
124132
SubscriptionProperties: *newProps,
125133
}, nil
126134
}
127135

128136
// GetSubscriptionResponse contains response fields for Client.GetSubscription
129137
type GetSubscriptionResponse struct {
138+
// SubscriptionName is the name of the subscription.
139+
SubscriptionName string
140+
141+
// TopicName is the name of the topic for this subscription.
142+
TopicName string
143+
130144
SubscriptionProperties
131145
}
132146

@@ -152,12 +166,20 @@ func (ac *Client) GetSubscription(ctx context.Context, topicName string, subscri
152166
}
153167

154168
return &GetSubscriptionResponse{
169+
SubscriptionName: subscriptionName,
170+
TopicName: topicName,
155171
SubscriptionProperties: item.SubscriptionProperties,
156172
}, nil
157173
}
158174

159175
// GetSubscriptionRuntimePropertiesResponse contains response fields for Client.GetSubscriptionRuntimeProperties
160176
type GetSubscriptionRuntimePropertiesResponse struct {
177+
// TopicName is the name of the topic.
178+
TopicName string
179+
180+
// SubscriptionName is the name of the subscription.
181+
SubscriptionName string
182+
161183
SubscriptionRuntimeProperties
162184
}
163185

@@ -183,6 +205,8 @@ func (ac *Client) GetSubscriptionRuntimeProperties(ctx context.Context, topicNam
183205
}
184206

185207
return &GetSubscriptionRuntimePropertiesResponse{
208+
TopicName: topicName,
209+
SubscriptionName: subscriptionName,
186210
SubscriptionRuntimeProperties: item.SubscriptionRuntimeProperties,
187211
}, nil
188212
}
@@ -197,7 +221,10 @@ type ListSubscriptionsOptions struct {
197221
type SubscriptionPropertiesItem struct {
198222
SubscriptionProperties
199223

200-
TopicName string
224+
// TopicName is the name of the topic.
225+
TopicName string
226+
227+
// SubscriptionName is the name of the subscription.
201228
SubscriptionName string
202229
}
203230

@@ -252,7 +279,10 @@ type ListSubscriptionsRuntimePropertiesOptions struct {
252279
type SubscriptionRuntimePropertiesItem struct {
253280
SubscriptionRuntimeProperties
254281

255-
TopicName string
282+
// TopicName is the name of the topic.
283+
TopicName string
284+
285+
// SubscriptionName is the name of the subscription.
256286
SubscriptionName string
257287
}
258288

@@ -299,6 +329,12 @@ func (ac *Client) NewListSubscriptionsRuntimePropertiesPager(topicName string, o
299329

300330
// UpdateSubscriptionResponse contains the response fields for Client.UpdateSubscription
301331
type UpdateSubscriptionResponse struct {
332+
// TopicName is the name of the topic.
333+
TopicName string
334+
335+
// SubscriptionName is the name of the subscription.
336+
SubscriptionName string
337+
302338
SubscriptionProperties
303339
}
304340

@@ -316,6 +352,8 @@ func (ac *Client) UpdateSubscription(ctx context.Context, topicName string, subs
316352
}
317353

318354
return UpdateSubscriptionResponse{
355+
TopicName: topicName,
356+
SubscriptionName: subscriptionName,
319357
SubscriptionProperties: *newProps,
320358
}, nil
321359
}

sdk/messaging/azservicebus/admin/admin_client_test.go

Lines changed: 96 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -234,18 +234,31 @@ func testCreateQueue(t *testing.T, isPremium bool) {
234234
expectedQueueProperties.MaxSizeInMegabytes = to.Ptr(int32(16 * 4096))
235235
}
236236

237-
require.EqualValues(t, expectedQueueProperties, createResp.QueueProperties)
237+
require.Equal(t, createResp.QueueName, queueName)
238+
require.Equal(t, expectedQueueProperties, createResp.QueueProperties)
238239

239240
getResp, err := adminClient.GetQueue(context.Background(), queueName, nil)
240241
require.NoError(t, err)
241242

242-
require.EqualValues(t, getResp.QueueProperties, createResp.QueueProperties)
243+
require.Equal(t, getResp.QueueName, queueName)
244+
require.Equal(t, getResp.QueueProperties, createResp.QueueProperties)
243245

244246
// ensure we can round-trip
245247
updateResp, err := adminClient.UpdateQueue(context.Background(), queueName, getResp.QueueProperties, nil)
246248
require.NoError(t, err)
247249

250+
require.Equal(t, updateResp.QueueName, queueName)
248251
require.EqualValues(t, expectedQueueProperties, updateResp.QueueProperties)
252+
253+
runtimeResp, err := adminClient.GetQueueRuntimeProperties(context.Background(), queueName, nil)
254+
require.NoError(t, err)
255+
256+
require.Equal(t, queueName, runtimeResp.QueueName)
257+
require.NotZero(t, runtimeResp.CreatedAt)
258+
require.NotZero(t, runtimeResp.UpdatedAt)
259+
require.Zero(t, runtimeResp.AccessedAt)
260+
require.Zero(t, runtimeResp.TotalMessageCount)
261+
require.Zero(t, runtimeResp.SizeInBytes)
249262
}
250263

251264
func TestAdminClient_UpdateQueue(t *testing.T) {
@@ -477,7 +490,7 @@ func testTopicCreation(t *testing.T, isPremium bool) {
477490
}
478491

479492
// check topic properties, existence
480-
addResp, err := adminClient.CreateTopic(context.Background(), topicName, createTopicOptions)
493+
createResp, err := adminClient.CreateTopic(context.Background(), topicName, createTopicOptions)
481494
require.NoError(t, err)
482495

483496
defer deleteTopic(t, adminClient, topicName)
@@ -506,27 +519,33 @@ func testTopicCreation(t *testing.T, isPremium bool) {
506519
// enabling partitioning increases our max size because of the 16 partition),
507520
expectedTopicProps.EnablePartitioning = to.Ptr(true)
508521
expectedTopicProps.MaxSizeInMegabytes = to.Ptr(int32(16 * 2048))
509-
510522
}
511523

512-
require.EqualValues(t, expectedTopicProps, addResp.TopicProperties)
524+
require.Equal(t, CreateTopicResponse{
525+
TopicName: topicName,
526+
TopicProperties: expectedTopicProps,
527+
}, createResp)
513528

514529
getResp, err := adminClient.GetTopic(context.Background(), topicName, nil)
515530
require.NoError(t, err)
516531

517-
require.EqualValues(t, expectedTopicProps, getResp.TopicProperties)
532+
require.Equal(t, &GetTopicResponse{
533+
TopicName: topicName,
534+
TopicProperties: getResp.TopicProperties,
535+
}, getResp)
518536

519537
runtimeResp, err := adminClient.GetTopicRuntimeProperties(context.Background(), topicName, nil)
520538
require.NoError(t, err)
521539

540+
require.Equal(t, topicName, runtimeResp.TopicName)
522541
require.False(t, runtimeResp.CreatedAt.IsZero())
523542
require.False(t, runtimeResp.UpdatedAt.IsZero())
524543
require.True(t, runtimeResp.AccessedAt.IsZero())
525544
require.Zero(t, runtimeResp.SubscriptionCount)
526545
require.Zero(t, runtimeResp.ScheduledMessageCount)
527546
require.Zero(t, runtimeResp.SizeInBytes)
528547

529-
addSubWithPropsResp, err := adminClient.CreateSubscription(context.Background(), topicName, subscriptionName, &CreateSubscriptionOptions{
548+
createSubWithPropsResp, err := adminClient.CreateSubscription(context.Background(), topicName, subscriptionName, &CreateSubscriptionOptions{
530549
Properties: &SubscriptionProperties{
531550
LockDuration: to.Ptr("PT3M"),
532551
RequiresSession: to.Ptr(false),
@@ -544,18 +563,28 @@ func testTopicCreation(t *testing.T, isPremium bool) {
544563

545564
defer deleteSubscription(t, adminClient, topicName, subscriptionName)
546565

547-
require.EqualValues(t, SubscriptionProperties{
548-
LockDuration: to.Ptr("PT3M"),
549-
RequiresSession: to.Ptr(false),
550-
DefaultMessageTimeToLive: to.Ptr("PT7M"),
551-
DeadLetteringOnMessageExpiration: to.Ptr(true),
552-
EnableDeadLetteringOnFilterEvaluationExceptions: to.Ptr(false),
553-
MaxDeliveryCount: to.Ptr(int32(11)),
554-
Status: &status,
555-
EnableBatchedOperations: to.Ptr(false),
556-
AutoDeleteOnIdle: to.Ptr("PT11M"),
557-
UserMetadata: to.Ptr("user metadata"),
558-
}, addSubWithPropsResp.SubscriptionProperties)
566+
require.Equal(t, CreateSubscriptionResponse{
567+
SubscriptionName: subscriptionName,
568+
TopicName: topicName,
569+
SubscriptionProperties: SubscriptionProperties{
570+
LockDuration: to.Ptr("PT3M"),
571+
RequiresSession: to.Ptr(false),
572+
DefaultMessageTimeToLive: to.Ptr("PT7M"),
573+
DeadLetteringOnMessageExpiration: to.Ptr(true),
574+
EnableDeadLetteringOnFilterEvaluationExceptions: to.Ptr(false),
575+
MaxDeliveryCount: to.Ptr(int32(11)),
576+
Status: &status,
577+
EnableBatchedOperations: to.Ptr(false),
578+
AutoDeleteOnIdle: to.Ptr("PT11M"),
579+
UserMetadata: to.Ptr("user metadata"),
580+
},
581+
}, createSubWithPropsResp)
582+
583+
runtimePropsResp, err := adminClient.GetSubscriptionRuntimeProperties(context.Background(), topicName, subscriptionName, nil)
584+
require.NoError(t, err)
585+
586+
require.Equal(t, topicName, runtimePropsResp.TopicName)
587+
require.Equal(t, subscriptionName, runtimePropsResp.SubscriptionName)
559588
}
560589

561590
func TestAdminClient_TopicAndSubscription_WithFalseFilterDefaultSubscriptionRule(t *testing.T) {
@@ -774,6 +803,7 @@ func TestAdminClient_UpdateTopic(t *testing.T) {
774803
updateResp, err := adminClient.UpdateTopic(context.Background(), topicName, addResp.TopicProperties, nil)
775804
require.NoError(t, err)
776805

806+
require.Equal(t, topicName, updateResp.TopicName)
777807
require.EqualValues(t, "PT11M", *updateResp.AutoDeleteOnIdle)
778808
require.EqualValues(t, addResp.AuthorizationRules, updateResp.AuthorizationRules)
779809

@@ -1043,23 +1073,27 @@ func TestAdminClient_UpdateSubscription(t *testing.T) {
10431073
defer deleteTopic(t, adminClient, topicName)
10441074

10451075
subscriptionName := fmt.Sprintf("sub-%X", time.Now().UnixNano())
1046-
addResp, err := adminClient.CreateSubscription(context.Background(), topicName, subscriptionName, nil)
1076+
createResp, err := adminClient.CreateSubscription(context.Background(), topicName, subscriptionName, nil)
10471077
require.NoError(t, err)
1078+
require.Equal(t, topicName, createResp.TopicName)
1079+
require.Equal(t, subscriptionName, createResp.SubscriptionName)
10481080

10491081
defer deleteSubscription(t, adminClient, topicName, subscriptionName)
10501082

1051-
addResp.LockDuration = to.Ptr("PT4M")
1052-
updateResp, err := adminClient.UpdateSubscription(context.Background(), topicName, subscriptionName, addResp.SubscriptionProperties, nil)
1083+
createResp.LockDuration = to.Ptr("PT4M")
1084+
updateResp, err := adminClient.UpdateSubscription(context.Background(), topicName, subscriptionName, createResp.SubscriptionProperties, nil)
10531085
require.NoError(t, err)
10541086

1087+
require.Equal(t, subscriptionName, updateResp.SubscriptionName)
1088+
require.Equal(t, topicName, updateResp.TopicName)
10551089
require.EqualValues(t, "PT4M", *updateResp.LockDuration)
10561090

10571091
// try changing a value that's not allowed
10581092
updateResp.RequiresSession = to.Ptr(true)
10591093
updateResp, err = adminClient.UpdateSubscription(context.Background(), topicName, subscriptionName, updateResp.SubscriptionProperties, nil)
10601094
require.Contains(t, err.Error(), "The value for the RequiresSession property of an existing Subscription cannot be changed")
10611095

1062-
updateResp, err = adminClient.UpdateSubscription(context.Background(), topicName, "non-existent-subscription", addResp.SubscriptionProperties, nil)
1096+
updateResp, err = adminClient.UpdateSubscription(context.Background(), topicName, "non-existent-subscription", createResp.SubscriptionProperties, nil)
10631097
require.Contains(t, err.Error(), "404 Not Found")
10641098

10651099
var asResponseErr *azcore.ResponseError
@@ -2072,3 +2106,42 @@ func TestATOMNoCountDetails(t *testing.T) {
20722106
require.Nil(t, tRP)
20732107
require.Error(t, err, "invalid topic runtime properties: no CountDetails element")
20742108
}
2109+
2110+
func TestATOMEntitiesHaveNames(t *testing.T) {
2111+
adminClient, err := NewClientFromConnectionString(test.GetConnectionString(t), nil)
2112+
require.NoError(t, err)
2113+
2114+
nano := time.Now().UnixNano()
2115+
topicName := fmt.Sprintf("topic-%X", nano)
2116+
2117+
t.Run("topic", func(t *testing.T) {
2118+
createTopicResp, err := adminClient.CreateTopic(context.Background(), topicName, &CreateTopicOptions{
2119+
Properties: &TopicProperties{
2120+
AutoDeleteOnIdle: to.Ptr("PT5M"),
2121+
},
2122+
})
2123+
require.NoError(t, err)
2124+
require.Equal(t, createTopicResp.TopicName, topicName)
2125+
2126+
topicResp, err := adminClient.GetTopic(context.Background(), topicName, nil)
2127+
require.NoError(t, err)
2128+
require.Equal(t, topicResp.TopicName, topicName)
2129+
})
2130+
2131+
t.Run("sub", func(t *testing.T) {
2132+
createSubResp, err := adminClient.CreateSubscription(context.Background(), topicName, "sub1", &CreateSubscriptionOptions{
2133+
Properties: &SubscriptionProperties{
2134+
AutoDeleteOnIdle: to.Ptr("PT5M"),
2135+
},
2136+
})
2137+
require.NoError(t, err)
2138+
require.Equal(t, createSubResp.TopicName, topicName)
2139+
require.Equal(t, createSubResp.SubscriptionName, "sub1")
2140+
2141+
subResp, err := adminClient.GetSubscription(context.Background(), topicName, "sub1", nil)
2142+
require.NoError(t, err)
2143+
2144+
require.Equal(t, subResp.TopicName, topicName)
2145+
require.Equal(t, subResp.SubscriptionName, "sub1")
2146+
})
2147+
}

0 commit comments

Comments
 (0)