Files
ANSCORE/tests/ANSRabbitMQ-UnitTest/ANSRabbitMQ-UnitTest.cpp
2026-03-29 12:51:37 +11:00

396 lines
17 KiB
C++

// ANSRabbitMQ-UnitTest.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include "ANSRabbitMQ.h"
int localRabbitMQTest() {
// Create an instance of the ANSRabbitMQ class
ANSCENTER::ANSRABBITMQ* rabbitMQ = new ANSCENTER::ANSRABBITMQ();
// Initialize the RabbitMQ connection
const char* licenseKey = "your_license_key_here"; // Replace with your actual license key
int result = CreateANSRabbitMQHandle(&rabbitMQ, licenseKey);
if (result == 0) {
std::cerr << "Failed to create ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Connect to RabbitMQ server
const char* hostname = "127.0.0.1"; // Replace with your RabbitMQ server hostname
int port = 5672; // Replace with your RabbitMQ server port
const char* vhost = "/"; // Replace with your RabbitMQ virtual host
int channelMax = 0; // Set to 0 for default
int frameMax = 131072; // Set to 0 for default
int heartBeat = 0; // Set to 0 for default
const char* userName = "guest"; // Replace with your RabbitMQ username
const char* password = "guest"; // Replace with your RabbitMQ password
// Set up the exchange and queue names
const char* exchange_name = "ans_exchange"; // Replace with your RabbitMQ exchange name
const char* exchange_type = "direct"; // Replace with your RabbitMQ exchange type
const char* queue_name = "ans_queue"; // Replace with your RabbitMQ queue name
const char* binding_key = "ans_binding_key"; // Replace with your RabbitMQ routing key
int passive = 0; // Set to 0 for non-passive
int durable = 1; // Set to 1 for durable
int auto_delete = 0; // Set to 0 for non-auto-delete
int internalVal = 0; // Set to 0 for non-internal
int channel = 1; // Set to 1 for the first channel
int useSSL = 0; // Set to 0 for no SSL
// Set up the exchange and queue
result = Connect(&rabbitMQ, hostname, port, vhost, channel, userName, password, useSSL);
if (result != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
int createChannel = CreateChannel(&rabbitMQ, exchange_name, exchange_type, queue_name, binding_key, passive, durable, auto_delete, internalVal);
if (createChannel != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Publish a message to a queue
int rate_limit = 0; // Set to 0 for no rate limit
int message_count = 1; // Number of messages to publish
std::string exchange_name_str = exchange_name; // Exchange name
std::string routing_key_str = binding_key; // Routing key
std::string message = "Hello again - New message"; // Message to publish
result = Publish(&rabbitMQ, exchange_name_str.c_str(), routing_key_str.c_str(), message.c_str());
if (result != 1) {
std::cerr << "Failed to publish message to RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Get a message from the queue
std::string queue_name_str = queue_name; // Queue name
std::string received_message;
int ack_mode = 0; // Set to 1 for manual acknowledgment
result = GetQueueMessage_CPP(&rabbitMQ, queue_name_str.c_str(), ack_mode, received_message);
if (result != 1) {
std::cerr << "Failed to get message from RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Print the received message
std::cout << "Received message from RabbitMQ queue: " << received_message << std::endl;
// Disconnect from RabbitMQ server
result = Disconnect(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to disconnect from RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Release the ANSRabbitMQ handle
result = ReleaseANSRabbitMQHandle(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to release ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Clean up
delete rabbitMQ;
// Print success message
std::cout << "RabbitMQ test completed successfully!" << std::endl;
}
int AWSRabbitMQTest() {
// Create an instance of the ANSRabbitMQ class
ANSCENTER::ANSRABBITMQ* rabbitMQ = new ANSCENTER::ANSRABBITMQ();
// Initialize the RabbitMQ connection
const char* licenseKey = "your_license_key_here"; // Replace with your actual license key
int result = CreateANSRabbitMQHandle(&rabbitMQ, licenseKey);
if (result == 0) {
std::cerr << "Failed to create ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Connect to RabbitMQ server
const char* hostname = "b-96dcdde7-e67b-4096-9a46-45421b21f43a.mq.ap-southeast-2.on.aws"; // Replace with your RabbitMQ server hostname
int port = 5671; // Replace with your RabbitMQ server port
const char* cacert = "C:\\Projects\\ANSVIS\\Documentation\\RabbitMQ_AWS\\AmazonRootCA1.pem";
const char* vhost = "/"; // Replace with your RabbitMQ virtual host
int channelMax = 0; // Set to 0 for default
int frameMax = 131072; // Set to 0 for default
int heartBeat = 0; // Set to 0 for default
const char* userName = "anscenter"; // Replace with your RabbitMQ username
const char* password = "Focus20@#ma&!"; // Replace with your RabbitMQ password
// Set up the exchange and queue names
const char* exchange_name = "ans_exchange"; // Replace with your RabbitMQ exchange name
const char* exchange_type = "direct"; // Replace with your RabbitMQ exchange type
const char* queue_name = "ans_queue"; // Replace with your RabbitMQ queue name
const char* binding_key = "ans_binding_key"; // Replace with your RabbitMQ routing key
int passive = 0; // Set to 0 for non-passive
int durable = 1; // Set to 1 for durable
int auto_delete = 0; // Set to 0 for non-auto-delete
int internalVal = 0; // Set to 0 for non-internal
int channel = 1; // Set to 1 for the first channel
int useSSL = 1; // Set to 0 for no SSL
int setupConfigure = ConfigureSSL(&rabbitMQ, cacert, "", "", 1, 1);
// Set up the exchange and queue
result = Connect(&rabbitMQ, hostname, port, vhost, channel, userName, password, useSSL);
if (result != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
int createChannel = CreateChannel(&rabbitMQ, exchange_name, exchange_type, queue_name, binding_key, passive, durable, auto_delete, internalVal);
if (createChannel != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Publish a message to a queue
int rate_limit = 0; // Set to 0 for no rate limit
int message_count = 1; // Number of messages to publish
std::string exchange_name_str = exchange_name; // Exchange name
std::string routing_key_str = binding_key; // Routing key
std::string message = "Hello again - New message"; // Message to publish
result = Publish(&rabbitMQ, exchange_name_str.c_str(), routing_key_str.c_str(), message.c_str());
if (result != 1) {
std::cerr << "Failed to publish message to RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Get a message from the queue
std::string queue_name_str = queue_name; // Queue name
std::string received_message;
int ack_mode = 0; // Set to 1 for manual acknowledgment
result = GetQueueMessage_CPP(&rabbitMQ, queue_name_str.c_str(), ack_mode, received_message);
if (result != 1) {
std::cerr << "Failed to get message from RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Print the received message
std::cout << "Received message from RabbitMQ queue: " << received_message << std::endl;
// Disconnect from RabbitMQ server
result = Disconnect(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to disconnect from RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Release the ANSRabbitMQ handle
result = ReleaseANSRabbitMQHandle(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to release ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Clean up
delete rabbitMQ;
// Print success message
std::cout << "RabbitMQ test completed successfully!" << std::endl;
}
int AWSRabbitMQTest1() {
// Create an instance of the ANSRabbitMQ class
ANSCENTER::ANSRABBITMQ* rabbitMQ = new ANSCENTER::ANSRABBITMQ();
// Initialize the RabbitMQ connection
const char* licenseKey = "your_license_key_here"; // Replace with your actual license key
int result = CreateANSRabbitMQHandle(&rabbitMQ, licenseKey);
if (result == 0) {
std::cerr << "Failed to create ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Connect to RabbitMQ server
const char* hostname = "b-96dcdde7-e67b-4096-9a46-45421b21f43a.mq.ap-southeast-2.on.aws"; // Replace with your RabbitMQ server hostname
int port = 5671; // Replace with your RabbitMQ server port
const char* cacert = "C:\\Projects\\ANSVIS\\Documentation\\RabbitMQ_AWS\\AmazonRootCA1.pem";
const char* vhost = "aibox"; // Replace with your RabbitMQ virtual host
int channelMax = 0; // Set to 0 for default
int frameMax = 131072; // Set to 0 for default
int heartBeat = 0; // Set to 0 for default
const char* userName = "ansaibox"; // Replace with your RabbitMQ username
const char* password = "AnsSYD20@$"; // Replace with your RabbitMQ password
// Set up the exchange and queue names
const char* exchange_name = "ans_exchange"; // Replace with your RabbitMQ exchange name
const char* exchange_type = "direct"; // Replace with your RabbitMQ exchange type
const char* queue_name = "ans_queue"; // Replace with your RabbitMQ queue name
const char* binding_key = "ans_binding_key"; // Replace with your RabbitMQ routing key
int passive = 0; // Set to 0 for non-passive
int durable = 1; // Set to 1 for durable
int auto_delete = 0; // Set to 0 for non-auto-delete
int internalVal = 0; // Set to 0 for non-internal
int channel = 1; // Set to 1 for the first channel
int useSSL = 1; // Set to 0 for no SSL
int setupConfigure = ConfigureSSL(&rabbitMQ, cacert, "", "", 1, 1);
// Set up the exchange and queue
result = Connect(&rabbitMQ, hostname, port, vhost, channel, userName, password, useSSL);
if (result != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
int createChannel = CreateChannel(&rabbitMQ, exchange_name, exchange_type, queue_name, binding_key, passive, durable, auto_delete, internalVal);
if (createChannel != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Publish a message to a queue
int rate_limit = 0; // Set to 0 for no rate limit
int message_count = 1; // Number of messages to publish
std::string exchange_name_str = exchange_name; // Exchange name
std::string routing_key_str = binding_key; // Routing key
std::string message = "Hello again - New message"; // Message to publish
result = Publish(&rabbitMQ, exchange_name_str.c_str(), routing_key_str.c_str(), message.c_str());
if (result != 1) {
std::cerr << "Failed to publish message to RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Get a message from the queue
std::string queue_name_str = queue_name; // Queue name
std::string received_message;
int ack_mode = 0; // Set to 1 for manual acknowledgment
result = GetQueueMessage_CPP(&rabbitMQ, queue_name_str.c_str(), ack_mode, received_message);
if (result != 1) {
std::cerr << "Failed to get message from RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Print the received message
std::cout << "Received message from RabbitMQ queue: " << received_message << std::endl;
// Disconnect from RabbitMQ server
result = Disconnect(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to disconnect from RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Release the ANSRabbitMQ handle
result = ReleaseANSRabbitMQHandle(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to release ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Clean up
delete rabbitMQ;
// Print success message
std::cout << "RabbitMQ test completed successfully!" << std::endl;
}
int SynologyRabbitMQTest() {
// Create an instance of the ANSRabbitMQ class
ANSCENTER::ANSRABBITMQ* rabbitMQ = new ANSCENTER::ANSRABBITMQ();
// Initialize the RabbitMQ connection
const char* licenseKey = "your_license_key_here"; // Replace with your actual license key
int result = CreateANSRabbitMQHandle(&rabbitMQ, licenseKey);
if (result == 0) {
std::cerr << "Failed to create ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Connect to RabbitMQ server
const char* hostname = "anscenter.ddns.net";// "125.168.44.233";// "192.168.1.45"; // Replace with your RabbitMQ server hostname
int port = 5672; // Replace with your RabbitMQ server port
const char* cacert = "C:\\Projects\\ANSVIS\\Documentation\\RabbitMQ_AWS\\AmazonRootCA1.pem";
const char* vhost = "aibox"; // Replace with your RabbitMQ virtual host
int channelMax = 0; // Set to 0 for default
int frameMax = 131072; // Set to 0 for default
int heartBeat = 0; // Set to 0 for default
const char* userName = "ansaibox"; // Replace with your RabbitMQ username
const char* password = "AnsSYD20@$"; // Replace with your RabbitMQ password
// Set up the exchange and queue names
const char* exchange_name = "ans_exchange"; // Replace with your RabbitMQ exchange name
const char* exchange_type = "direct"; // Replace with your RabbitMQ exchange type
const char* queue_name = "ans_queue"; // Replace with your RabbitMQ queue name
const char* binding_key = "ans_binding_key"; // Replace with your RabbitMQ routing key
int passive = 0; // Set to 0 for non-passive
int durable = 1; // Set to 1 for durable
int auto_delete = 0; // Set to 0 for non-auto-delete
int internalVal = 0; // Set to 0 for non-internal
int channel = 1; // Set to 1 for the first channel
int useSSL = 1; // Set to 0 for no SSL
int setupConfigure = ConfigureSSL(&rabbitMQ, cacert, "", "", 1, 1);
// Set up the exchange and queue
result = Connect(&rabbitMQ, hostname, port, vhost, channel, userName, password, useSSL);
if (result != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
int createChannel = CreateChannel(&rabbitMQ, exchange_name, exchange_type, queue_name, binding_key, passive, durable, auto_delete, internalVal);
if (createChannel != 1) {
std::cerr << "Failed to connect to RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Publish a message to a queue
int rate_limit = 0; // Set to 0 for no rate limit
int message_count = 1; // Number of messages to publish
std::string exchange_name_str = exchange_name; // Exchange name
std::string routing_key_str = binding_key; // Routing key
std::string message = "Hello again - New message"; // Message to publish
result = Publish(&rabbitMQ, exchange_name_str.c_str(), routing_key_str.c_str(), message.c_str());
if (result != 1) {
std::cerr << "Failed to publish message to RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Get a message from the queue
std::string queue_name_str = queue_name; // Queue name
std::string received_message;
int ack_mode = 0; // Set to 1 for manual acknowledgment
result = GetQueueMessage_CPP(&rabbitMQ, queue_name_str.c_str(), ack_mode, received_message);
if (result != 1) {
std::cerr << "Failed to get message from RabbitMQ queue. Error code: " << result << std::endl;
Disconnect(&rabbitMQ);
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Print the received message
std::cout << "Received message from RabbitMQ queue: " << received_message << std::endl;
// Disconnect from RabbitMQ server
result = Disconnect(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to disconnect from RabbitMQ server. Error code: " << result << std::endl;
ReleaseANSRabbitMQHandle(&rabbitMQ);
return -1;
}
// Release the ANSRabbitMQ handle
result = ReleaseANSRabbitMQHandle(&rabbitMQ);
if (result != 1) {
std::cerr << "Failed to release ANSRabbitMQ handle. Error code: " << result << std::endl;
return -1;
}
// Clean up
delete rabbitMQ;
// Print success message
std::cout << "RabbitMQ test completed successfully!" << std::endl;
}
int main()
{
SynologyRabbitMQTest();
}