Skip to content

Commit f25b47c

Browse files
Test consumer count after consumer connected
1 parent 7fc4ad4 commit f25b47c

File tree

3 files changed

+65
-9
lines changed

3 files changed

+65
-9
lines changed

selenium/test/amqp.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,22 @@ function getConnectionOptions() {
4040
}
4141
module.exports = {
4242

43-
open: () => {
43+
open: (queueName = "my-queue") => {
4444
let promise = new Promise((resolve, reject) => {
4545
container.on('connection_open', function(context) {
4646
resolve()
4747
})
4848
})
49+
console.log("Opening amqp connection using " + JSON.stringify(connectionOptions))
50+
4951
let connection = container.connect(connectionOptions)
5052
let receiver = connection.open_receiver({
51-
source: 'my-queue',
53+
source: queueName,
5254
target: 'receiver-target',
5355
name: 'receiver-link'
5456
})
5557
let sender = connection.open_sender({
56-
target: 'my-queue',
58+
target: queueName,
5759
source: 'sender-source',
5860
name: 'sender-link'
5961
})

selenium/test/pageobjects/QueuePage.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,16 @@ const DELETE_BUTTON = By.css('div#main div#delete input[type=submit]')
1010
const FEATURES_TABLE = By.css('table#details-queue-table td#details-queue-features table.mini')
1111
const STATS_CONSUMER_COUNT = By.css('table#details-queue-stats-table td#consumers')
1212

13+
const CONSUMERS_SECTION = By.css('div#queue-consumers-section')
14+
const CONSUMERS_SECTION_TITLE = By.css('div#queue-consumers-section h2')
15+
1316
module.exports = class QueuePage extends BasePage {
1417
async isLoaded() {
1518
return this.waitForDisplayed(QUEUE_NAME)
1619
}
20+
async refresh() {
21+
return this.driver.navigate().refresh()
22+
}
1723
async getName() {
1824
return this.getText(QUEUE_NAME)
1925
}
@@ -23,6 +29,12 @@ module.exports = class QueuePage extends BasePage {
2329
async getFeatures() {
2430
return this.getTableMini(FEATURES_TABLE)
2531
}
32+
async getConsumersSectionTitle() {
33+
return this.getText(CONSUMERS_SECTION_TITLE)
34+
}
35+
async clickOnConsumerSection() {
36+
return this.click(CONSUMERS_SECTION)
37+
}
2638
async ensureDeleteQueueSectionIsVisible() {
2739
await this.click(DELETE_SECTION)
2840
return this.driver.findElement(DELETE_SECTION).isDisplayed()

selenium/test/queuesAndStreams/view-qq-consumers.js

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
const { By, Key, until, Builder } = require('selenium-webdriver')
22
require('chromedriver')
33
const assert = require('assert')
4-
const { buildDriver, goToHome, captureScreensFor, teardown, log, goToQueue } = require('../utils')
4+
const { buildDriver, goToHome, captureScreensFor, teardown, doWhile, goToQueue } = require('../utils')
55
const { createQueue, deleteQueue, getManagementUrl, basicAuthorization } = require('../mgt-api')
6+
const { open: openAmqp, once: onceAmqp, on: onAmqp, close: closeAmqp } = require('../amqp')
67

78
const LoginPage = require('../pageobjects/LoginPage')
89
const OverviewPage = require('../pageobjects/OverviewPage')
910
const QueuesAndStreamsPage = require('../pageobjects/QueuesAndStreamsPage')
1011
const QueuePage = require('../pageobjects/QueuePage')
1112
const StreamPage = require('../pageobjects/StreamPage')
1213

14+
var untilConnectionEstablished = new Promise((resolve, reject) => {
15+
onAmqp('connection_open', function(context) {
16+
console.log("Amqp connection opened")
17+
resolve()
18+
})
19+
})
20+
1321
describe('Given a quorum queue', function () {
1422
let login
1523
let queuesAndStreams
@@ -18,7 +26,7 @@ describe('Given a quorum queue', function () {
1826
let stream
1927
let overview
2028
let captureScreen
21-
29+
2230
before(async function () {
2331
driver = buildDriver()
2432
await goToHome(driver)
@@ -40,20 +48,54 @@ describe('Given a quorum queue', function () {
4048
createQueue(getManagementUrl(), basicAuthorization("management", "guest"),
4149
"/", queueName, "quorum")
4250

43-
})
44-
45-
it('add quorum queue and view it', async function () {
4651
await goToQueue(driver, "/", queueName)
4752
await queuePage.isLoaded()
4853
assert.equal(queueName, await queuePage.getName())
54+
55+
})
56+
57+
it('it must display its queue-type and durability', async function () {
4958
let table = await queuePage.getFeatures()
5059
assert.equal(table[0].name, "arguments:")
5160
let expectedArguments = [{"name":"x-queue-type:","value":"quorum"}]
5261
assert.equal(JSON.stringify(table[0].value), JSON.stringify(expectedArguments))
5362
assert.equal(table[1].name, "durable:")
54-
assert.equal(table[1].value, "true")
63+
assert.equal(table[1].value, "true")
64+
})
5565

66+
it('it should not have any consumers', async function() {
5667
assert.equal("0", await queuePage.getConsumerCount())
68+
assert.equal("Consumers (0)", await queuePage.getConsumersSectionTitle())
69+
})
70+
71+
describe("given there is a consumer attached to the queue", function () {
72+
let amqp
73+
before(async function() {
74+
amqp = openAmqp(queueName)
75+
await untilConnectionEstablished
76+
})
77+
78+
it('it should have one consumer', async function() {
79+
await doWhile(async function() {
80+
await queuePage.refresh()
81+
await queuePage.isLoaded()
82+
return queuePage.getConsumerCount()
83+
}, function(count) {
84+
return count.localeCompare("0") == 1
85+
}, 5000)
86+
assert.equal("1", await queuePage.getConsumerCount())
87+
assert.equal("Consumers (1)", await queuePage.getConsumersSectionTitle())
88+
})
89+
90+
after(function() {
91+
try {
92+
if (amqp != null) {
93+
closeAmqp(amqp.connection)
94+
}
95+
} catch (error) {
96+
error("Failed to close amqp10 connection due to " + error);
97+
}
98+
})
5799
})
58100

59101
after(async function () {

0 commit comments

Comments
 (0)