rabbitmq-server/selenium/test/connections/amqp10/sessions-for-monitoring-use...

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

120 lines
4.0 KiB
JavaScript
Raw Normal View History

const { By, Key, until, Builder } = require('selenium-webdriver')
require('chromedriver')
const assert = require('assert')
const { open: openAmqp, once: onceAmqp, on: onAmqp, close: closeAmqp } = require('../../amqp')
2024-11-18 20:22:34 +08:00
const { buildDriver, goToHome, captureScreensFor, teardown, delay } = require('../../utils')
const LoginPage = require('../../pageobjects/LoginPage')
const OverviewPage = require('../../pageobjects/OverviewPage')
const ConnectionsPage = require('../../pageobjects/ConnectionsPage')
const ConnectionPage = require('../../pageobjects/ConnectionPage')
var receivedAmqpMessageCount = 0
2024-11-18 20:22:34 +08:00
var untilConnectionEstablished = new Promise((resolve, reject) => {
onAmqp('connection_open', function(context) {
resolve()
})
})
onAmqp('message', function (context) {
receivedAmqpMessageCount++
})
onceAmqp('sendable', function (context) {
2024-11-18 20:22:34 +08:00
context.sender.send({body:'first message'})
})
describe('Given an amqp10 connection opened, listed and clicked on it', function () {
let captureScreen
let connectionsPage
let connectionPage
let amqp
before(async function () {
driver = buildDriver()
await goToHome(driver)
login = new LoginPage(driver)
overview = new OverviewPage(driver)
connectionsPage = new ConnectionsPage(driver)
connectionPage = new ConnectionPage(driver)
captureScreen = captureScreensFor(driver, __filename)
await login.login('monitoring-only', 'guest')
await overview.isLoaded()
amqp = openAmqp()
2024-11-18 20:22:34 +08:00
await untilConnectionEstablished
await overview.clickOnConnectionsTab()
await connectionsPage.isLoaded()
connections_table = await connectionsPage.getConnectionsTable(20)
assert.equal(1, connections_table.length)
await connectionsPage.clickOnConnection(2)
await connectionPage.isLoaded()
})
it('can list session information', async function () {
2024-11-18 18:43:36 +08:00
let sessions = await connectionPage.getSessions()
assert.equal(1, sessions.sessions.length)
let session = connectionPage.getSessionInfo(sessions.sessions, 0)
assert.equal(0, session.channelNumber)
assert.equal(1, session.nextIncomingId)
assert.equal(0, session.outgoingUnsettledDeliveries)
})
it('can list link information', async function () {
2024-11-18 18:43:36 +08:00
let sessions = await connectionPage.getSessions()
assert.equal(1, sessions.incoming_links.length)
assert.equal(1, sessions.outgoing_links.length)
2024-11-18 20:22:34 +08:00
2024-11-18 18:43:36 +08:00
let incomingLink = connectionPage.getIncomingLinkInfo(sessions.incoming_links, 0)
assert.equal(1, incomingLink.handle)
assert.equal("sender-link", incomingLink.name)
2024-11-28 23:54:19 +08:00
assert.equal("my-queue", incomingLink.targetAddress)
2024-11-18 18:43:36 +08:00
assert.equal("mixed", incomingLink.sndSettleMode)
assert.equal("0", incomingLink.unconfirmedMessages)
2024-11-18 20:22:34 +08:00
assert.equal(1, incomingLink.deliveryCount)
2024-11-18 18:43:36 +08:00
let outgoingLink = connectionPage.getOutgoingLinkInfo(sessions.outgoing_links, 0)
assert.equal(0, outgoingLink.handle)
assert.equal("receiver-link", outgoingLink.name)
2024-11-28 23:54:19 +08:00
assert.equal("my-queue", outgoingLink.sourceAddress)
assert.equal("my-queue", outgoingLink.queueName)
2024-11-18 18:43:36 +08:00
assert.equal(false, outgoingLink.sendSettled)
assert.equal("unlimited", outgoingLink.maxMessageSize)
})
2024-11-18 20:22:34 +08:00
it('display live link information', async function () {
var untilMessageReceived = new Promise((resolve, reject) => {
onAmqp('message', function(context) {
2024-11-18 20:22:34 +08:00
resolve()
})
})
amqp.sender.send({body:'second message'})
2024-11-18 20:22:34 +08:00
await untilMessageReceived
assert.equal(2, receivedAmqpMessageCount)
await delay(5*1000) // wait until page refreshes
let sessions = await connectionPage.getSessions()
let incomingLink = connectionPage.getIncomingLinkInfo(sessions.incoming_links, 0)
assert.equal(2, incomingLink.deliveryCount)
})
after(async function () {
await teardown(driver, this, captureScreen)
try {
if (amqp != null) {
closeAmqp(amqp.connection)
}
} catch (error) {
console.error("Failed to close amqp10 connection due to " + error);
}
})
})