X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-container%2Funittests%2FResourceContainerTest.cpp;h=423e8e12c6c7d61d3fd97959c8bddd43c1679620;hb=c315c87e07c4080ecd0ef488e7a1047bc3c509b2;hp=5fac7de691b7a16e583e31af1fe70ced2d6c6c36;hpb=a29c54ef36ae8b0ea7769604aabd5851a2103d33;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-container/unittests/ResourceContainerTest.cpp b/service/resource-container/unittests/ResourceContainerTest.cpp index 5fac7de..423e8e1 100644 --- a/service/resource-container/unittests/ResourceContainerTest.cpp +++ b/service/resource-container/unittests/ResourceContainerTest.cpp @@ -22,23 +22,16 @@ #include #endif -#include -#include -#include -#include +#include #include #include #include -#include "Configuration.h" -#include "BundleActivator.h" -#include "BundleResource.h" #include "RCSResourceContainer.h" -#include "ResourceContainerBundleAPI.h" #include "ResourceContainerImpl.h" -#include "RemoteResourceUnit.h" +#include "SoftSensorResource.h" #include "RCSResourceObject.h" #include "RCSRemoteResourceObject.h" @@ -55,7 +48,7 @@ string CONFIG_FILE = "ResourceContainerTestConfig.xml"; void getCurrentPath(std::string *pPath) { - char buffer[MAX_PATH]; + char buffer[MAX_PATH] = {0,}; #if defined(__linux__) char *strPath = NULL; @@ -67,7 +60,9 @@ void getCurrentPath(std::string *pPath) strPath = strrchr(buffer, '/'); if (strPath != NULL) + { *strPath = '\0'; + } } #endif pPath->append(buffer); @@ -96,17 +91,83 @@ dynamic_unique_ptr_cast( std::unique_ptr&& p ) class TestBundleResource: public BundleResource { public: - virtual void initAttributes() { } + virtual void initAttributes() + { + } + + virtual void handleSetAttributesRequest(const RCSResourceAttributes &attr, + const std::map< std::string, std::string > &queryParams) + { + (void)queryParams; + BundleResource::setAttributes(attr); + } + + virtual RCSResourceAttributes handleGetAttributesRequest(const + std::map< std::string, std::string > &queryParams) + { + (void)queryParams; + return BundleResource::getAttributes(); + } +}; + +/*Fake bundle resource class for testing*/ +class TestBundleResourceWithAttrs: public BundleResource +{ + public: + virtual void initAttributes() + { + setAttribute("attrib1", RCSResourceAttributes::Value("test")); + setAttribute("attrib2", RCSResourceAttributes::Value(1)); + setAttribute("attrib3", RCSResourceAttributes::Value(true)); + } + + virtual void handleSetAttributesRequest(const RCSResourceAttributes &attr, + const std::map< std::string, std::string > &queryParams) + { + (void)queryParams; + BundleResource::setAttributes(attr); + } + + virtual RCSResourceAttributes handleGetAttributesRequest(const + std::map< std::string, std::string > &queryParams) + { + (void)queryParams; + return BundleResource::getAttributes(); + } +}; + + +/*Fake bundle resource class for testing*/ +class TestSoftSensorResource: public SoftSensorResource +{ + public: + virtual void initAttributes() + { + SoftSensorResource::initAttributes(); + } - virtual void handleSetAttributesRequest(const RCSResourceAttributes &attr) + virtual void handleSetAttributesRequest(const RCSResourceAttributes &attr, + const std::map< std::string, std::string > &queryParams) { + (void)queryParams; BundleResource::setAttributes(attr); } - virtual RCSResourceAttributes handleGetAttributesRequest() + virtual RCSResourceAttributes handleGetAttributesRequest(const + std::map< std::string, std::string > &queryParams) { + (void)queryParams; return BundleResource::getAttributes(); } + + virtual void executeLogic() + { + } + + virtual void onUpdatedInputResource( + std::string, std::vector) + { + } }; class ResourceContainerTest: public TestWithMock @@ -127,18 +188,71 @@ class ResourceContainerTest: public TestWithMock } }; +TEST_F(ResourceContainerTest, TestBundleResource) +{ + TestBundleResourceWithAttrs testResource; + testResource.initAttributes(); + + // check if initAttributes worked + EXPECT_STREQ("\"test\"", testResource.getAttribute("attrib1").toString().c_str()); + + std::list attrNames = testResource.getAttributeNames(); + ASSERT_TRUE(std::find(attrNames.begin(), attrNames.end(), "attrib1") != attrNames.end()); + + ASSERT_FALSE(testResource.getAttributes().contains("attrib4")); + + testResource.getAttributeNames(); + + RCSResourceAttributes fullAttributes; + const std::map< std::string, std::string > queryParams = {}; + + fullAttributes["attrib1"] = "test"; + fullAttributes["attrib2"] = 1; + fullAttributes["attrib3"] = true; + + testResource.setAttributes(fullAttributes); + + ASSERT_TRUE(testResource.getAttributes().contains("attrib1")); + + fullAttributes["attrib1"] = "test2"; + fullAttributes["attrib2"] = 2; + fullAttributes["attrib3"] = false; + + testResource.handleSetAttributesRequest(fullAttributes, queryParams); + + EXPECT_EQ((unsigned int) 3, testResource.getAttributeNames().size()); + + EXPECT_EQ((unsigned int) 3, testResource.handleGetAttributesRequest(queryParams).size()); + std::string testString = "test"; + testResource.setAttribute("attrib1", RCSResourceAttributes::Value(testString), false); + + testResource.setAttributes(fullAttributes, false); + + EXPECT_STREQ("\"test2\"", testResource.getAttribute("attrib1").toString().c_str()); + EXPECT_EQ(2, testResource.getAttribute("attrib2")); + + testResource.setAttribute("attrib1", RCSResourceAttributes::Value("test")); + EXPECT_STREQ("\"test\"", testResource.getAttribute("attrib1").toString().c_str()); + EXPECT_EQ(2, testResource.getAttribute("attrib2")); +} + +TEST_F(ResourceContainerTest, TestSoftSensorResource) +{ + TestSoftSensorResource softSensorResource; + softSensorResource.initAttributes(); + EXPECT_EQ((unsigned int) 0, softSensorResource.getAttributeNames().size()); +} + + TEST_F(ResourceContainerTest, BundleRegisteredWhenContainerStartedWithValidConfigFile) { m_pResourceContainer->startContainer(m_strConfigPath); EXPECT_GT(m_pResourceContainer->listBundles().size(), (unsigned int) 0); - cout << "now checking for bunlde ids " << endl; EXPECT_STREQ("oic.bundle.test", (*m_pResourceContainer->listBundles().begin())->getID().c_str()); EXPECT_STREQ("libTestBundle.so", (*m_pResourceContainer->listBundles().begin())->getPath().c_str()); EXPECT_STREQ("1.0.0", (*m_pResourceContainer->listBundles().begin())->getVersion().c_str()); - - cout << "Now stopping container." << endl; m_pResourceContainer->stopContainer(); } @@ -148,7 +262,7 @@ TEST_F(ResourceContainerTest, BundleLoadedWhenContainerStartedWithValidConfigFil EXPECT_GT(m_pResourceContainer->listBundles().size(), (unsigned int) 0); unique_ptr first = std::move(*m_pResourceContainer->listBundles().begin()); - unique_ptr firstInternal(static_cast(first.release())); + unique_ptr firstInternal((BundleInfoInternal*)first.release()); EXPECT_TRUE( firstInternal->isLoaded() ); EXPECT_NE(nullptr, firstInternal->getBundleHandle()); @@ -162,7 +276,7 @@ TEST_F(ResourceContainerTest, BundleActivatedWhenContainerStartedWithValidConfig EXPECT_GT(m_pResourceContainer->listBundles().size(), (unsigned int) 0); unique_ptr first = std::move(*m_pResourceContainer->listBundles().begin()); - unique_ptr firstInternal(static_cast(first.release())); + unique_ptr firstInternal((BundleInfoInternal*)first.release()); EXPECT_TRUE(firstInternal->isActivated()); EXPECT_NE(nullptr,firstInternal->getBundleActivator()); @@ -197,7 +311,7 @@ TEST_F(ResourceContainerTest, BundleStoppedWithStartBundleAPI) m_pResourceContainer->stopBundle("oic.bundle.test"); unique_ptr first = std::move(*m_pResourceContainer->listBundles().begin()); - unique_ptr firstInternal(static_cast(first.release())); + unique_ptr firstInternal((BundleInfoInternal*)first.release()); EXPECT_FALSE(firstInternal->isActivated()); m_pResourceContainer->stopContainer(); @@ -209,7 +323,7 @@ TEST_F(ResourceContainerTest, BundleStartedWithStartBundleAPI) m_pResourceContainer->stopBundle("oic.bundle.test"); m_pResourceContainer->startBundle("oic.bundle.test"); unique_ptr first = std::move(*m_pResourceContainer->listBundles().begin()); - unique_ptr firstInternal(static_cast(first.release())); + unique_ptr firstInternal((BundleInfoInternal*)first.release()); EXPECT_TRUE(firstInternal->isActivated()); m_pResourceContainer->stopContainer(); @@ -225,7 +339,7 @@ TEST_F(ResourceContainerTest, AddNewSoBundleToContainer) EXPECT_EQ(bundles.size() + 1, m_pResourceContainer->listBundles().size()); unique_ptr first = std::move(*m_pResourceContainer->listBundles().begin()); - unique_ptr firstInternal(static_cast(first.release())); + unique_ptr firstInternal((BundleInfoInternal*)first.release()); EXPECT_TRUE(firstInternal->isLoaded()); } @@ -328,7 +442,8 @@ TEST_F(ResourceContainerBundleAPITest, RequestHandlerForResourceServerSetWhenReg { mocks.OnCallFunc(ResourceContainerImpl::buildResourceObject).Return( RCSResourceObject::Ptr(m_pResourceObject, [](RCSResourceObject *) - {})); + { + })); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setGetRequestHandler); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setSetRequestHandler); @@ -342,7 +457,8 @@ TEST_F(ResourceContainerBundleAPITest, BundleResourceUnregisteredWhenUnregisterR { mocks.OnCallFunc(ResourceContainerImpl::buildResourceObject).Return( RCSResourceObject::Ptr(m_pResourceObject, [](RCSResourceObject *) - {})); + { + })); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setGetRequestHandler); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setSetRequestHandler); @@ -360,7 +476,8 @@ TEST_F(ResourceContainerBundleAPITest, { mocks.OnCallFunc(ResourceContainerImpl::buildResourceObject).Return( RCSResourceObject::Ptr(m_pResourceObject, [](RCSResourceObject *) - {})); + { + })); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setGetRequestHandler); mocks.ExpectCall(m_pResourceObject, RCSResourceObject::setSetRequestHandler); @@ -412,168 +529,22 @@ class ResourceContainerImplTest: public TestWithMock public: ResourceContainerImpl *m_pResourceContainer; - BundleInfoInternal *m_pBundleInfo; + shared_ptr m_pBundleInfo; protected: void SetUp() { TestWithMock::SetUp(); m_pResourceContainer = ResourceContainerImpl::getImplInstance(); - m_pBundleInfo = new BundleInfoInternal(); + m_pBundleInfo = std::make_shared(); } void TearDown() { - delete m_pBundleInfo; + m_pBundleInfo.reset(); } }; -TEST_F(ResourceContainerImplTest, SoBundleLoadedWhenRegisteredWithRegisterBundleAPI) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("."); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - - EXPECT_NE(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleHandle()); -} - -#if (JAVA_SUPPORT_TEST) -TEST_F(ResourceContainerImplTest, JavaBundleLoadedWhenRegisteredWithRegisterBundleAPIWrongPath) -{ - m_pBundleInfo->setPath("wrong_path.jar"); - m_pBundleInfo->setActivatorName("org/iotivity/bundle/hue/HueBundleActivator"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setID("oic.bundle.java.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - EXPECT_FALSE(((BundleInfoInternal *)m_pBundleInfo)->isLoaded()); -} - -TEST_F(ResourceContainerImplTest, JavaBundleTest) -{ - m_pBundleInfo->setPath("TestBundleJava/hue-0.1-jar-with-dependencies.jar"); - m_pBundleInfo->setActivatorName("org/iotivity/bundle/hue/HueBundleActivator"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setID("oic.bundle.java.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - EXPECT_TRUE(((BundleInfoInternal *)m_pBundleInfo)->isLoaded()); - - m_pResourceContainer->activateBundle(m_pBundleInfo); - EXPECT_TRUE(((BundleInfoInternal *) m_pBundleInfo)->isActivated()); - - m_pResourceContainer->deactivateBundle(m_pBundleInfo); - EXPECT_FALSE(((BundleInfoInternal *) m_pBundleInfo)->isActivated()); -} -#endif - -TEST_F(ResourceContainerImplTest, BundleNotRegisteredIfBundlePathIsInvalid) -{ - m_pBundleInfo->setPath(""); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - - EXPECT_EQ(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleHandle()); - -} - -TEST_F(ResourceContainerImplTest, SoBundleActivatedWithValidBundleInfo) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - m_pResourceContainer->activateBundle(m_pBundleInfo); - - EXPECT_NE(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleActivator()); -} - -TEST_F(ResourceContainerImplTest, BundleNotActivatedWhenNotRegistered) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->activateBundle(m_pBundleInfo); - - EXPECT_EQ(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleActivator()); -} - -TEST_F(ResourceContainerImplTest, SoBundleActivatedWithBundleID) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - m_pResourceContainer->activateBundle(m_pBundleInfo->getID()); - - EXPECT_NE(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleActivator()); - EXPECT_TRUE(((BundleInfoInternal *)m_pBundleInfo)->isActivated()); -} - -TEST_F(ResourceContainerImplTest, BundleDeactivatedWithBundleInfo) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - m_pResourceContainer->activateBundle(m_pBundleInfo); - m_pResourceContainer->deactivateBundle(m_pBundleInfo); - - EXPECT_NE(nullptr, ((BundleInfoInternal *)m_pBundleInfo)->getBundleDeactivator()); - EXPECT_FALSE(((BundleInfoInternal *)m_pBundleInfo)->isActivated()); -} - -TEST_F(ResourceContainerImplTest, BundleDeactivatedWithBundleInfoJava) -{ - m_pBundleInfo->setPath("TestBundle/hue-0.1-jar-with-dependencies.jar"); - m_pBundleInfo->setActivatorName("org/iotivity/bundle/hue/HueBundleActivator"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setID("oic.bundle.java.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - m_pResourceContainer->activateBundle(m_pBundleInfo); - m_pResourceContainer->deactivateBundle(m_pBundleInfo); - EXPECT_FALSE(((BundleInfoInternal *) m_pBundleInfo)->isActivated()); -} - -TEST_F(ResourceContainerImplTest, SoBundleDeactivatedWithBundleID) -{ - m_pBundleInfo->setPath("libTestBundle.so"); - m_pBundleInfo->setVersion("1.0"); - m_pBundleInfo->setLibraryPath("../."); - m_pBundleInfo->setActivatorName("test"); - m_pBundleInfo->setID("oic.bundle.test"); - - m_pResourceContainer->registerBundle(m_pBundleInfo); - m_pResourceContainer->activateBundle(m_pBundleInfo); - - m_pResourceContainer->deactivateBundle(m_pBundleInfo->getID()); - - EXPECT_FALSE(((BundleInfoInternal *)m_pBundleInfo)->isActivated()); -} - /* Test for Configuration */ TEST(ConfigurationTest, ConfigFileLoadedWithValidPath) @@ -723,7 +694,9 @@ class DiscoverResourceUnitTest: public TestWithMock testObject->createResource(); m_bundleId = "/a/TempHumSensor/Container"; m_pDiscoverResourceUnit = std::make_shared< DiscoverResourceUnit >( m_bundleId ); - m_updatedCB = ([](const std::string, std::vector< RCSResourceAttributes::Value >) { }); + m_updatedCB = ([](const std::string, std::vector< RCSResourceAttributes::Value >) + { + }); } void TearDown() @@ -736,34 +709,35 @@ class DiscoverResourceUnitTest: public TestWithMock TEST_F(DiscoverResourceUnitTest, startDiscover) { - std::string type = "Resource.Container"; + std::string type = "resource.container"; std::string attributeName = "TestResourceContainer"; m_pDiscoverResourceUnit->startDiscover( DiscoverResourceUnit::DiscoverResourceInfo("", type, attributeName), m_updatedCB); - std::chrono::milliseconds interval(400); + std::chrono::milliseconds interval(ResourceContainerTestSimulator::DEFAULT_WAITTIME); std::this_thread::sleep_for(interval); } TEST_F(DiscoverResourceUnitTest, onUpdateCalled) { - std::string type = "Resource.Container"; + std::string type = "resource.container"; std::string attributeName = "TestResourceContainer"; m_pDiscoverResourceUnit->startDiscover( DiscoverResourceUnit::DiscoverResourceInfo("", type, attributeName), m_updatedCB); - std::chrono::milliseconds interval(400); + std::chrono::milliseconds interval(ResourceContainerTestSimulator::DEFAULT_WAITTIME); std::this_thread::sleep_for(interval); testObject->ChangeAttributeValue(); - } namespace { - void onCacheCB(const RCSResourceAttributes &) { } + void onCacheCB(const RCSResourceAttributes &, int) + { + } } class RemoteResourceUnitTest: public TestWithMock @@ -785,7 +759,9 @@ class RemoteResourceUnitTest: public TestWithMock testObject = std::make_shared(); testObject->defaultRunSimulator(); m_pRCSRemoteResourceObject = testObject->getRemoteResource(); - m_updatedCBFromServer = ([](RemoteResourceUnit::UPDATE_MSG, RCSRemoteResourceObject::Ptr) {}); + m_updatedCBFromServer = ([](RemoteResourceUnit::UPDATE_MSG, RCSRemoteResourceObject::Ptr) + { + }); } void TearDown() @@ -830,11 +806,15 @@ TEST_F(RemoteResourceUnitTest, startMonitoring) ptr->startMonitoring(); } +#ifdef SECURED +TEST_F(RemoteResourceUnitTest, DISABLED_onCacheCBCalled) +#else TEST_F(RemoteResourceUnitTest, onCacheCBCalled) +#endif { bool isCalled = false; mocks.ExpectCallFunc(onCacheCB).Do( - [this, &isCalled](const RCSResourceAttributes &) + [this, &isCalled](const RCSResourceAttributes &, int) { isCalled = true; });