azure-sdk-for-cpp/sdk/eventhubs/azure-messaging-eventhubs/test/ut/producer_client_test.cpp
Anton Kolesnyk e328665588
Update cspell words and exclusions (#5231)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2023-12-15 17:41:11 -08:00

149 lines
5.0 KiB
C++

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
// cspell: words gearamaeh1
#include "eventhubs_test_base.hpp"
#include <azure/core/context.hpp>
#include <azure/identity.hpp>
#include <azure/messaging/eventhubs.hpp>
#include <numeric>
#include <gtest/gtest.h>
// cspell: ignore edboptions
class ProducerClientTest : public EventHubsTestBase {
};
TEST_F(ProducerClientTest, ConnectionStringNoEntityPath)
{
std::string const connStringNoEntityPath = GetEnv("EVENTHUB_CONNECTION_STRING");
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
Azure::Messaging::EventHubs::ProducerClient client{connStringNoEntityPath, eventHubName};
EXPECT_EQ(eventHubName, client.GetEventHubName());
}
TEST_F(ProducerClientTest, ConnectionStringEntityPath)
{
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
std::string const connString = GetEnv("EVENTHUB_CONNECTION_STRING");
Azure::Messaging::EventHubs::ProducerClient client{connString, eventHubName};
EXPECT_EQ(eventHubName, client.GetEventHubName());
}
TEST_F(ProducerClientTest, TokenCredential_LIVEONLY_)
{
auto credential{std::make_shared<Azure::Identity::ClientSecretCredential>(
GetEnv("EVENTHUBS_TENANT_ID"),
GetEnv("EVENTHUBS_CLIENT_ID"),
GetEnv("EVENTHUBS_CLIENT_SECRET"))};
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.ApplicationID = "appId";
Azure::Messaging::EventHubs::ProducerClient client{
"gearamaeh1.servicebus.windows.net", eventHubName, credential};
EXPECT_EQ(eventHubName, client.GetEventHubName());
}
TEST_F(ProducerClientTest, SendMessage_LIVEONLY_)
{
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
std::string const connString = GetEnv("EVENTHUB_CONNECTION_STRING");
Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.Name = "sender-link";
producerOptions.ApplicationID = "some";
Azure::Messaging::EventHubs::ProducerClient client{connString, eventHubName, producerOptions};
auto message2{std::make_shared<Azure::Core::Amqp::Models::AmqpMessage>()};
Azure::Messaging::EventHubs::Models::EventData message1;
message2->SetBody(Azure::Core::Amqp::Models::AmqpValue("Hello7"));
message1.Body = {'H', 'e', 'l', 'l', 'o', '2'};
Azure::Messaging::EventHubs::Models::EventData message3;
message3.Body = {'H', 'e', 'l', 'l', 'o', '3'};
Azure::Messaging::EventHubs::EventDataBatchOptions edboptions;
edboptions.MaxBytes = std::numeric_limits<uint16_t>::max();
edboptions.PartitionId = "1";
Azure::Messaging::EventHubs::EventDataBatch eventBatch{client.CreateBatch(edboptions)};
Azure::Messaging::EventHubs::EventDataBatchOptions edboptions2;
edboptions2.MaxBytes = std::numeric_limits<uint16_t>::max();
;
edboptions2.PartitionId = "2";
Azure::Messaging::EventHubs::EventDataBatch eventBatch2{client.CreateBatch(edboptions2)};
eventBatch.TryAddMessage(message1);
eventBatch.TryAddMessage(message2);
eventBatch2.TryAddMessage(message3);
eventBatch2.TryAddMessage(message2);
for (int i = 0; i < 5; i++)
{
EXPECT_NO_THROW(client.Send(eventBatch));
}
}
TEST_F(ProducerClientTest, EventHubRawMessageSend_LIVEONLY_)
{
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
std::string const connString = GetEnv("EVENTHUB_CONNECTION_STRING");
Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.Name = "sender-link";
producerOptions.ApplicationID = "some";
Azure::Messaging::EventHubs::ProducerClient client{connString, eventHubName, producerOptions};
client.Send(Azure::Messaging::EventHubs::Models::EventData{"This is a test message"});
// Send using the implicit EventData constructor.
client.Send(std::string{"String test message"});
// Send using a vector of implicit EventData constructor with a binary buffer.
client.Send({{12, 13, 14, 15}, {16, 17, 18, 19}});
}
TEST_F(ProducerClientTest, GetEventHubProperties_LIVEONLY_)
{
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
std::string const connString = GetEnv("EVENTHUB_CONNECTION_STRING");
Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.Name = "sender-link";
producerOptions.ApplicationID = "some";
Azure::Messaging::EventHubs::ProducerClient client{connString, eventHubName, producerOptions};
auto result = client.GetEventHubProperties();
EXPECT_EQ(result.Name, eventHubName);
EXPECT_TRUE(result.PartitionIds.size() > 0);
}
TEST_F(ProducerClientTest, GetPartitionProperties_LIVEONLY_)
{
std::string eventHubName{GetEnv("EVENTHUB_NAME")};
std::string const connString = GetEnv("EVENTHUB_CONNECTION_STRING");
Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.Name = "sender-link";
producerOptions.ApplicationID = "some";
Azure::Messaging::EventHubs::ProducerClient client{connString, eventHubName, producerOptions};
ASSERT_NO_THROW([&]() {
auto result = client.GetPartitionProperties("0");
EXPECT_EQ(result.Name, eventHubName);
EXPECT_EQ(result.PartitionId, "0");
}());
}