From: jaesick.shin Date: Thu, 13 Oct 2016 10:24:40 +0000 (+0900) Subject: bug fix for response of topic and modify unittest. X-Git-Tag: 1.2.0+RC4~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=33e506b75d287bc21cddf1342af55500fc7a2abe;p=platform%2Fupstream%2Fiotivity.git bug fix for response of topic and modify unittest. this patch include, 1. bug fix for response of topic post case. 2. modify unittest about included interface type. Change-Id: I5bba7ef93260c2c67f25d9d79455e383d6ea8c0c Signed-off-by: jaesick.shin Reviewed-on: https://gerrit.iotivity.org/gerrit/13219 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi (cherry picked from commit f58cd738051414f36223ea6a6eb6def34a927ba9) Reviewed-on: https://gerrit.iotivity.org/gerrit/13221 --- diff --git a/service/notification/src/provider/NSProviderListener.c b/service/notification/src/provider/NSProviderListener.c index 5503ace..dfd28e7 100644 --- a/service/notification/src/provider/NSProviderListener.c +++ b/service/notification/src/provider/NSProviderListener.c @@ -301,7 +301,9 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag, NS_LOG(DEBUG, "NSEntityHandlerTopicCb - OC_REST_POST"); // Accepter is provider. our service is not support sendtopiclist from OC_REST_POST // Accepter is consumer. our service is support sendtopiclist from OC_REST_POST - if(NSGetPolicy() == false) + if(NSGetPolicy() == false && + NSProviderIsTopicAttributes(OCRepPayloadClone((OCRepPayload *) + entityHandlerRequest->payload))) { NSPushQueue(TOPIC_SCHEDULER, TASK_POST_TOPIC, NSCopyOCEntityHandlerRequest(entityHandlerRequest)); @@ -444,7 +446,7 @@ bool NSProviderIsTopicAttributes(OCRepPayload * payload) OCRepPayloadValue * curr = payload->values; while(curr) { - if (!NSProviderCompareSyncAttributes(curr->name)) + if (!NSProviderCompareTopicAttributes(curr->name)) { return false; } @@ -531,26 +533,28 @@ OCStackResult NSProviderSendResponse(OCEntityHandlerRequest * entityHandlerReque OCResourcePayloadAddStringLL(&payload->types, rtStr); } - if(resourceType != NS_RESOURCE_TOPIC) + if (resourceType == NS_RESOURCE_TOPIC && entityHandlerRequest->method == OC_REST_GET) { - OCEntityHandlerResponse response; - response.numSendVendorSpecificHeaderOptions = 0; - memset(response.sendVendorSpecificHeaderOptions, 0, - sizeof response.sendVendorSpecificHeaderOptions); - memset(response.resourceUri, 0, sizeof response.resourceUri); - - response.requestHandle = entityHandlerRequest->requestHandle; - response.resourceHandle = entityHandlerRequest->resource; - response.persistentBufferFlag = 0; - response.ehResult = ehResult; - response.payload = (OCPayload *) payload; - - if (OCDoResponse(&response) != OC_STACK_OK) - { - NS_LOG(ERROR, "Fail to AccessPolicy send response"); - OCRepPayloadDestroy(payload); - return ehResult; - } + OCRepPayloadDestroy(payload); + return ehResult; + } + + OCEntityHandlerResponse response; + response.numSendVendorSpecificHeaderOptions = 0; + memset(response.sendVendorSpecificHeaderOptions, 0, + sizeof response.sendVendorSpecificHeaderOptions); + memset(response.resourceUri, 0, sizeof response.resourceUri); + + response.requestHandle = entityHandlerRequest->requestHandle; + response.resourceHandle = entityHandlerRequest->resource; + response.persistentBufferFlag = 0; + response.ehResult = ehResult; + response.payload = (OCPayload *) payload; + + if (OCDoResponse(&response) != OC_STACK_OK) + { + NS_LOG(ERROR, "Fail to AccessPolicy send response"); + ehResult = OC_STACK_ERROR; } OCRepPayloadDestroy(payload); diff --git a/service/notification/unittest/NSConsumerSimulator.h b/service/notification/unittest/NSConsumerSimulator.h index 02cc94a..bd0a6e3 100644 --- a/service/notification/unittest/NSConsumerSimulator.h +++ b/service/notification/unittest/NSConsumerSimulator.h @@ -37,10 +37,12 @@ private: std::shared_ptr m_msgResource; std::shared_ptr m_topicResource; + bool isTopicPost; + public: NSConsumerSimulator() : m_messageFunc(), m_syncFunc(), - m_syncResource() { }; + m_syncResource(), isTopicPost(false) { }; ~NSConsumerSimulator() = default; NSConsumerSimulator(const NSConsumerSimulator &) = delete; @@ -97,8 +99,8 @@ private: { if(resource->uri() == "/notification") { - resource->get(OC::QueryParamsMap(), - std::bind(&NSConsumerSimulator::onGet, this, + resource->get(std::string("oic.wk.notification"), std::string("oic.if.baseline"), + OC::QueryParamsMap(), std::bind(&NSConsumerSimulator::onGet, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, resource), OC::QualityOfService::LowQos); } @@ -163,7 +165,8 @@ private: if(rep.getValue("messageId") == 3) { - m_topicResource->get(OC::QueryParamsMap(), + m_topicResource->get(std::string("oic.wk.notification"), + std::string("oic.if.baseline"), OC::QueryParamsMap(), std::bind(&NSConsumerSimulator::onTopicGet, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, m_topicResource), OC::QualityOfService::LowQos); @@ -176,9 +179,43 @@ private: } void onTopicGet(const OC::HeaderOptions &/*headerOption*/, - const OC::OCRepresentation & /*rep*/ , const int /*eCode*/, + const OC::OCRepresentation & rep , const int /*eCode*/, std::shared_ptr /*resource*/) { + + if(!isTopicPost) + { + isTopicPost = true; + OC::OCRepresentation postRep; + + std::vector topicArr = + rep.getValue>("topicList"); + + std::vector postTopicArr; + + for(std::vector::iterator it = topicArr.begin(); + it != topicArr.end(); ++it) { + /* std::cout << *it; ... */ + OC::OCRepresentation topic = *it; + OC::OCRepresentation postTopic; + + postTopic.setValue("topicName", topic.getValueToString("topicName")); + postTopic.setValue("topicState", (int) topic.getValue("topicState")); + + postTopicArr.push_back(topic); + +// std::cout << "tName : " << tName << std::endl; +// std::cout << "tState : " << tState << std::endl; + } + + postRep.setValue> + ("topicList", postTopicArr); + + OC::QueryParamsMap map; + map.insert(std::pair(std::string("consumerId"), + std::string("123456789012345678901234567890123456"))); + m_topicResource->post(postRep, map, &onPost, OC::QualityOfService::LowQos); + } } OCStackResult msgResourceCancelObserve(OC::QualityOfService qos) diff --git a/service/notification/unittest/NSProviderTest.cpp b/service/notification/unittest/NSProviderTest.cpp index a4477c6..0349297 100755 --- a/service/notification/unittest/NSProviderTest.cpp +++ b/service/notification/unittest/NSProviderTest.cpp @@ -139,7 +139,7 @@ TEST_F(NotificationProviderTest, StartProviderPositiveWithNSPolicyTrue) config.subRequestCallback = NSRequestedSubscribeCallbackEmpty; config.syncInfoCallback = NSSyncCallbackEmpty; config.subControllability = true; - config.userInfo = NULL; + config.userInfo = strdup("user1"); NSResult ret = NSStartProvider(config);