{\r
namespace Service\r
{\r
+ namespace\r
+ {\r
+ void removeTopicLL(NSTopicLL * topicHead)\r
+ {\r
+ NSTopicLL * iter = topicHead;\r
+ NSTopicLL * following = NULL;\r
+\r
+ while (iter)\r
+ {\r
+ following = iter->next;\r
+\r
+ OICFree(iter->topicName);\r
+ iter->next = NULL;\r
+ OICFree(iter);\r
+\r
+ iter = following;\r
+ }\r
+ }\r
+ }\r
+\r
::NSConsumer *NSConsumer::getNSConsumer()\r
{\r
::NSConsumer *nsCon = new ::NSConsumer;\r
::NSTopicLL *topics = NSProviderGetConsumerTopics(getConsumerId().c_str());\r
\r
std::shared_ptr<NSTopicsList> nsTopics = std::make_shared<NSTopicsList>(topics, false);\r
+ removeTopicLL(topics);\r
NS_LOG(DEBUG, "getConsumerTopicList - OUT");\r
return nsTopics;\r
}\r
{\r
namespace Service\r
{\r
+ namespace\r
+ {\r
+ void removeTopicLL(NSTopicLL * topicHead)\r
+ {\r
+ NSTopicLL * iter = topicHead;\r
+ NSTopicLL * following = NULL;\r
+\r
+ while (iter)\r
+ {\r
+ following = iter->next;\r
+\r
+ OICFree(iter->topicName);\r
+ iter->next = NULL;\r
+ OICFree(iter);\r
+\r
+ iter = following;\r
+ }\r
+ }\r
+ }\r
+\r
void NSProviderService::onConsumerSubscribedCallback(::NSConsumer *consumer)\r
{\r
NS_LOG(DEBUG, "onConsumerSubscribedCallback - IN");\r
\r
std::shared_ptr<NSTopicsList> nsTopics = std::make_shared<NSTopicsList>(topics, false);\r
NS_LOG(DEBUG, "getRegisteredTopicList - OUT");\r
+ removeTopicLL(topics);\r
return nsTopics;\r
}\r
\r
TEST_F(NotificationServiceConsumerTest, ExpectGetProviderSuccessWithValidProviderId)
{
::NSProvider *provider = (::NSProvider *)malloc(sizeof(::NSProvider));
- strcpy(provider->providerId, "test");
+ strcpy(provider->providerId, "098765432109876543210987654321098765");
std::string provId;
provId.assign(provider->providerId, NS_UTILS_UUID_STRING_SIZE - 1);
std::string provId;
::NSProvider *provider = (::NSProvider *)malloc(sizeof(::NSProvider));
- strcpy(provider->providerId, "test");
+ strcpy(provider->providerId, "098765432109876543210987654321098765");
provId.assign(provider->providerId, NS_UTILS_UUID_STRING_SIZE - 1);
std::shared_ptr<OIC::Service::NSProvider> providerTemp = std::make_shared<OIC::Service::NSProvider>
res = resProvider->sendSyncInfo(msgId, OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ);
}
EXPECT_EQ(OIC::Service::NSResult::OK, res);
+
+ OIC::Service::NSConsumerService::getInstance()
+ ->getAcceptedProviders()->removeProvider(provider->providerId);
+ free(provider);
}
TEST_F(NotificationServiceConsumerTest, ExpectSuccessGetTopicsList)
std::string provId;
::NSProvider *provider = (::NSProvider *)malloc(sizeof(::NSProvider));
- strcpy(provider->providerId, "test");
+ strcpy(provider->providerId, "098765432109876543210987654321098765");
provId.assign(provider->providerId, NS_UTILS_UUID_STRING_SIZE - 1);
std::shared_ptr<OIC::Service::NSProvider> providerTemp = std::make_shared<OIC::Service::NSProvider>
auto topicList = resProvider->getTopicList();
ASSERT_NE(nullptr, topicList) << "Get topics list failure";
+
+ OIC::Service::NSConsumerService::getInstance()
+ ->getAcceptedProviders()->removeProvider(provider->providerId);
+ free(provider);
+
+ OIC::Service::NSConsumerService::getInstance()->stop();
}
NotificationProviderServiceTest() = default;
~NotificationProviderServiceTest() = default;
- static void ConsumerSubscribedCallback(std::shared_ptr<OIC::Service::NSConsumer> consumer)
+ static void ConsumerSubscribedCallback(std::shared_ptr<OIC::Service::NSConsumer> )
{
std::cout << __func__ << std::endl;
}
- static void MessageSynchronizedCallback(OIC::Service::NSSyncInfo sync)
+ static void MessageSynchronizedCallback(OIC::Service::NSSyncInfo )
{
std::cout << __func__ << std::endl;
}
static void MessageCallbackFromConsumer(
- const int &id, const std::string &, const std::string &, const std::string &)
+ const int &, const std::string &, const std::string &, const std::string &)
{
std::cout << __func__ << std::endl;
}
- static void SyncCallbackFromConsumer(const int type, const int syncId)
+ static void SyncCallbackFromConsumer(const int , const int )
{
std::cout << __func__ << std::endl;
}
OIC::Service::NSProviderService::getInstance()->start(config);
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
std::string str1("TEST1");
OIC::Service::NSProviderService::getInstance()->registerTopic(str1);
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
OIC::Service::NSProviderService::getInstance()->start(config);
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
OIC::Service::NSProviderService::getInstance()->registerTopic(str1);
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
TEST_F(NotificationProviderServiceTest, ExpectSuccessUnSetTopic)
{
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
std::string str1("TEST1");
std::string str2("TEST2");
::NSConsumer *consumer = (::NSConsumer *)malloc(sizeof(::NSConsumer));
- strcpy(consumer->consumerId, "test");
+ strcpy(consumer->consumerId, "098765432109876543210987654321098765");
std::shared_ptr<OIC::Service::NSConsumer> consumerTemp = std::make_shared<OIC::Service::NSConsumer>
(consumer);
memcpy(addr, clientResponse->addr, sizeof(OCDevAddr));
NSTask * task = NSMakeTask(TASK_CONSUMER_PROVIDER_DELETED, addr);
- NS_VERIFY_NOT_NULL(task, OC_STACK_KEEP_TRANSACTION);
+ NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(task, OC_STACK_KEEP_TRANSACTION, NSOICFree(addr));
NSConsumerPushEvent(task);
}
else if (payload->trigger == OC_PRESENCE_TRIGGER_CREATE)
{
NS_LOG(DEBUG, "started presence or resource is created.");
+ NS_VERIFY_NOT_NULL(clientResponse->addr, OC_STACK_KEEP_TRANSACTION);
NSInvokeRequest(NULL, OC_REST_DISCOVER, clientResponse->addr,
NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener, NULL, NULL,
clientResponse->addr->adapter);
&& strcmp(reqInterface, NS_INTERFACE_READ) != 0)\r
{\r
NS_LOG(ERROR, "Invalid interface");\r
+ NSOICFree(reqInterface);\r
return ehResult;\r
}\r
ehResult = OC_EH_OK;\r
&& strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0)\r
{\r
NS_LOG(ERROR, "Invalid interface");\r
+ NSOICFree(reqInterface);\r
return ehResult;\r
}\r
\r
&& strcmp(reqInterface, NS_INTERFACE_READWRITE) != 0)\r
{\r
NS_LOG(ERROR, "Invalid interface");\r
+ NSOICFree(reqInterface);\r
return ehResult;\r
}\r
// send consumer's interesting topic list if consumer id exists\r
if (NSPutMessageResource(NULL, &rHandle) != NS_OK)\r
{\r
NS_LOG(ERROR, "Fail to put notification resource");\r
+ OCRepPayloadDestroy(payload);\r
return NS_ERROR;\r
}\r
\r
if (element == NULL)\r
{\r
NS_LOG(ERROR, "element is NULL");\r
+ OCRepPayloadDestroy(payload);\r
return NS_ERROR;\r
}\r
\r
if (NSPutMessageResource(NULL, &rHandle) != NS_OK)
{
NS_LOG(ERROR, "Fail to put message resource");
+ OCRepPayloadDestroy(payload);
return NS_ERROR;
}
if (!obCount)
{
NS_LOG(ERROR, "observer count is zero");
+ OCRepPayloadDestroy(payload);
return NS_ERROR;
}
if (NSPutMessageResource(NULL, &rHandle) != NS_OK)
{
NS_LOG(ERROR, "Fail to put message resource");
+ OCRepPayloadDestroy(payload);
return NS_ERROR;
}
if (element == NULL)
{
NS_LOG(ERROR, "element is NULL");
+ OCRepPayloadDestroy(payload);
return NS_ERROR;
}
pthread_mutex_lock(topicSyncResult->mutex);
topicSyncResult->result = NSUnregisterTopic(
(const char *) topicSyncResult->topicData);
+ NSOICFree(topicSyncResult->topicData);
pthread_cond_signal(topicSyncResult->condition);
pthread_mutex_unlock(topicSyncResult->mutex);
}
OCRepPayload * payload = OCRepPayloadCreate();
EXPECT_NE((void *)NULL, payload);
- std::string msgUri = "/notifiationTest/message";
- std::string syncUri = "/notifiationTest/sync";
- std::string topicUri = "/notifiationTest/topic";
+ std::string msgUri = "/notifiation/message";
+ std::string syncUri = "/notifiation/sync";
bool getResult = OCRepPayloadSetPropBool(payload, NS_ATTRIBUTE_POLICY, false);
getResult &= OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, testProviderID.c_str());
getResult &= OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_MESSAGE, msgUri.c_str());
getResult &= OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_SYNC, syncUri.c_str());
- getResult &= OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_TOPIC, topicUri.c_str());
if (getResult == false)
{
OCRepPayloadDestroy(payload);
uint64_t id = 100;
type = NS_SYNC_READ;
- auto ret = NSConsumerSendSyncInfo(g_provider->providerId, id, NS_SYNC_DELETED);
+ auto ret = NSConsumerSendSyncInfo((g_provider->providerId)+1, id, NS_SYNC_DELETED);
EXPECT_EQ(NS_OK, ret);
}
OCPresencePayload * payload = OCPresencePayloadCreate(1, 2, OC_PRESENCE_TRIGGER_CREATE, NULL);
EXPECT_NE((void *)NULL, payload);
g_testResponse->payload = (OCPayload *)payload;
+ g_testResponse->addr = NULL;
auto ret = NSConsumerPresenceListener(NULL,NULL, g_testResponse);
auto ret = NSConsumerPresenceListener(NULL,NULL, g_testResponse);
+ std::unique_lock< std::mutex > lock{ providerChangedLock };
+ providerChanged.wait_for(lock, g_waitForResponse);
+
EXPECT_EQ(OC_STACK_KEEP_TRANSACTION, ret);
OCPresencePayloadDestroy(payload);
bool ret = OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_MESSAGE_ID, id);
OCUUIdentity provider;
OC::OCPlatform::getDeviceId(&provider);
+
+ char providerId[UUID_IDENTITY_SIZE] = {0,};
+ OICStrcpy(providerId, UUID_IDENTITY_SIZE, (const char *)provider.id);
+
ret &= OCRepPayloadSetPropString(payload,
- NS_ATTRIBUTE_PROVIDER_ID, (const char *)provider.id);
+ NS_ATTRIBUTE_PROVIDER_ID, (const char*)providerId);
ret &= OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_STATE, NS_SYNC_READ);
EXPECT_EQ(true, ret);
int type = NS_SYNC_READ;
OCEntityHandlerFlag flag = OC_REQUEST_FLAG;
- NSEntityHandlerSyncCb(flag, getPostSyncEntityRequest(id), NULL);
+ auto request = getPostSyncEntityRequest(id);
+ NSEntityHandlerSyncCb(flag, request, NULL);
std::unique_lock< std::mutex > lock{ responseProviderSyncLock };
responseProviderSync.wait_for(lock, g_waitForResponse);
EXPECT_EQ(expectedMsgId, id);
EXPECT_EQ(expectedSyncType, type);
+
+ OCRepPayloadDestroy((OCRepPayload *)request->payload);
+ free(request);
}
TEST(NotificationProviderTest, ExpectSuccessSetTopics)