Fix failed unit tests for CSDK stack.
authorDoug Hudson <douglas.hudson@intel.com>
Mon, 12 Jan 2015 16:28:32 +0000 (11:28 -0500)
committerDoug Hudson <douglas.hudson@intel.com>
Mon, 12 Jan 2015 16:28:32 +0000 (11:28 -0500)
The existing unit tests in stacktests.cpp had not kept up with
ongoing modifications to the C API.  Modified failing tests to
align with latest C API functionality.

Also modified to remove limitation that required the eth0 network
interface to be available on the test machine.  If eth0 was not
available, some tests would fail.

Also added a local function to handle C stack initialization and
modified tests to call this function.  Added local functions to
intialize the number of expected resources and resource index
depending on whether presence is defined.

Re-grouped related test cases and created common group test names.

Change-Id: Ief59854d762ef9837f8b1d5b95bebc6514bd545a
Signed-off-by: Doug Hudson <douglas.hudson@intel.com>
resource/csdk/stack/test/README
resource/csdk/stack/test/stacktests.cpp

index 0e3dfa4..3ab5808 100644 (file)
@@ -32,8 +32,9 @@ Unit Test Requirements:
 
    GTEST_DIR := /home/johndoe/utils/gtest-1.7.0
 
-3. The unit test assumes that the "eth0" interface is
-   available.  If not, the unit tests will FAIL.
+3. The unit test assumes that a network interface is available
+   (e.g. "eth0", "wlan0", etc.)
+   If no interface is available, the unit tests will FAIL.
 4. To run the unit test, first build the C OCStack.
    At the time of this writing this was done by running
    
index 31c8dff..d7996f2 100644 (file)
@@ -19,7 +19,8 @@
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
 
-extern "C" {
+extern "C"
+{
     #include "ocstack.h"
     #include "ocstackinternal.h"
     #include "logger.h"
@@ -52,7 +53,8 @@ static const char TAG[] = "TestHarness";
 //-----------------------------------------------------------------------------
 // Callback functions
 //-----------------------------------------------------------------------------
-extern "C"  OCStackApplicationResult asyncDoResourcesCallback(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse) {
+extern "C"  OCStackApplicationResult asyncDoResourcesCallback(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse)
+{
     OC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
 
     EXPECT_EQ(OC_STACK_OK, clientResponse->result);
@@ -65,65 +67,116 @@ extern "C"  OCStackApplicationResult asyncDoResourcesCallback(void* ctx, OCDoHan
     return OC_STACK_KEEP_TRANSACTION;
 }
 
+//-----------------------------------------------------------------------------
+// Entity handler
+//-----------------------------------------------------------------------------
+OCEntityHandlerResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest)
+{
+    OC_LOG(INFO, TAG, "Entering entityHandler");
+
+    return OC_EH_OK;
+}
 
 //-----------------------------------------------------------------------------
+//  Local functions
+//-----------------------------------------------------------------------------
+void InitStack(OCMode mode)
+{
+    OC_LOG(INFO, TAG, "Entering InitStack");
+    uint8_t addr[20];
+    uint16_t port = USE_RANDOM_PORT;
+
+    OCGetInterfaceAddress(NULL, 0, AF_INET, addr, sizeof(addr));
+    OC_LOG_V(INFO, TAG, "InitStack on address %s",addr);
+
+    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, mode));
+    OC_LOG(INFO, TAG, "Leaving InitStack");
+}
+
+uint8_t InitNumExpectedResources()
+{
+#ifdef WITH_PRESENCE
+    // When presence is enabled, it is a resource and so is (currently) included
+    // in the returned resource count returned by the OCGetNumberOfResources API.
+    return 1;
+#else
+    return 0;
+#endif
+}
+
+uint8_t InitResourceIndex()
+{
+#ifdef WITH_PRESENCE
+    // When presence is enabled, it is a resource and so is (currently) included
+    // in the returned resource count returned by the OCGetNumberOfResources API.
+    // The index of the presence resource is 0, so the first user app resource index
+    // is 1.
+    return 1;
+#else
+    return 0;
+#endif
+}
+//-----------------------------------------------------------------------------
 //  Tests
 //-----------------------------------------------------------------------------
-#if 1
-TEST(StackTest, StackInitNullAddr) {
+
+TEST(StackInit, StackInitNullAddr)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackInitNullPort) {
+TEST(StackInit, StackInitNullPort)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackInitNullAddrAndPort) {
+TEST(StackInit, StackInitNullAddrAndPort)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackInitInvalidMode) {
+TEST(StackInit, StackInitInvalidMode)
+{
     EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
     EXPECT_EQ(OC_STACK_ERROR, OCStop());
 }
 
-TEST(StackTest, StackStartSuccessClient) {
+TEST(StackStart, StackStartSuccessClient)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackStartSuccessServer) {
+TEST(StackStart, StackStartSuccessServer)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackStartSuccessClientServer) {
+TEST(StackStart, StackStartSuccessClientServer)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackStartSuccessiveInits) {
+TEST(StackStart, StackStartSuccessiveInits)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.2", 5683, OC_SERVER));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, DoResourceDeviceDiscovery) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
+TEST(StackDiscovery, DoResourceDeviceDiscovery)
+{
     OCCallbackData cbData;
     OCDoHandle handle;
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-    OC_LOG_V(INFO, TAG, "Starting DoResourceDeviceDiscovery test on address %s",addr);
+    OC_LOG(INFO, TAG, "Starting DoResourceDeviceDiscovery test ");
+    InitStack(OC_CLIENT);
 
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_CLIENT));
     /* Start a discovery query*/
     char szQueryUri[64] = { 0 };
     strcpy(szQueryUri, OC_WELL_KNOWN_QUERY);
@@ -132,29 +185,24 @@ TEST(StackTest, DoResourceDeviceDiscovery) {
     cbData.cd = NULL;
 
     EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_LOW_QOS, &cbData, NULL, 0));
-    //EXPECT_EQ(OC_STACK_OK, OCUpdateResources(SERVICE_URI));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, StackStopWithoutInit) {
+TEST(StackStop, StackStopWithoutInit)
+{
     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
     EXPECT_EQ(OC_STACK_OK, OCStop());
     EXPECT_EQ(OC_STACK_ERROR, OCStop());
 }
 
-TEST(StackTest, UpdateResourceNullURI) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
+TEST(StackResource, UpdateResourceNullURI)
+{
     OCCallbackData cbData;
     OCDoHandle handle;
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-    OC_LOG_V(INFO, TAG, "Starting UpdateResourceNullURI test on address %s",addr);
+    OC_LOG(INFO, TAG, "Starting UpdateResourceNullURI test");
+    InitStack(OC_CLIENT);
 
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_CLIENT));
     /* Start a discovery query*/
     char szQueryUri[64] = { 0 };
     strcpy(szQueryUri, OC_WELL_KNOWN_QUERY);
@@ -162,21 +210,13 @@ TEST(StackTest, UpdateResourceNullURI) {
     cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
     cbData.cd = NULL;
     EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_LOW_QOS, &cbData, NULL, 0));
-    //EXPECT_EQ(OC_STACK_INVALID_URI, OCUpdateResources(0));
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, CreateResourceBadParams) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceBadParams)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceBadParams test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
 
@@ -200,23 +240,16 @@ TEST(StackTest, CreateResourceBadParams) {
                                             "core.rw",
                                             "/a/led",
                                             0,
-                                            16));//OC_DISCOVERABLE|OC_OBSERVABLE));
+                                            128));// invalid bitmask for OCResourceProperty
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
-#endif
 
-TEST(StackTest, CreateResourceSuccess) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceSuccess)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -231,17 +264,10 @@ TEST(StackTest, CreateResourceSuccess) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, CreateResourceFailDuplicateUri) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceFailDuplicateUri)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceFailDuplicateUri test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -263,17 +289,10 @@ TEST(StackTest, CreateResourceFailDuplicateUri) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, CreateResourceMultipleResources) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceMultipleResources)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceMultipleResources test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -310,17 +329,10 @@ TEST(StackTest, CreateResourceMultipleResources) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, CreateResourceBadResoureType) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceBadResoureType)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceBadResoureType test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
@@ -333,17 +345,10 @@ TEST(StackTest, CreateResourceBadResoureType) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, CreateResourceGoodResourceType) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, CreateResourceGoodResourceType)
+{
+    OC_LOG(INFO, TAG, "Starting CreateResourceGoodResourceType test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -356,17 +361,10 @@ TEST(StackTest, CreateResourceGoodResourceType) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, ResourceTypeName) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, ResourceTypeName)
+{
+    OC_LOG(INFO, TAG, "Starting ResourceTypeName test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -392,17 +390,10 @@ TEST(StackTest, ResourceTypeName) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceTypeNameBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, ResourceTypeAttrRepresentation)
+{
+    OC_LOG(INFO, TAG, "Starting ResourceTypeAttrRepresentation test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -415,25 +406,63 @@ TEST(StackTest, BindResourceTypeNameBad) {
     uint8_t numResourceTypes;
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
     EXPECT_EQ(1, numResourceTypes);
-    const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
-    EXPECT_STREQ("core.led", resourceTypeName);
 
-    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackResource, ResourceTypeInterface)
+{
+    OC_LOG(INFO, TAG, "Starting ResourceTypeInterface test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+
+    uint8_t numResourceInterfaces;
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+    EXPECT_EQ(1, numResourceInterfaces);
+    const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
+    EXPECT_STREQ("core.rw", resourceInterfaceName);
+
+    // try getting resource interface names with an invalid index
+    resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
+    EXPECT_STREQ(NULL, resourceInterfaceName);
+    // try getting resource interface names with an invalid index
+    resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
+    EXPECT_STREQ(NULL, resourceInterfaceName);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceTypeNameGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
+TEST(StackResource, ResourceTypeInterfaceMethods)
+{
+    OC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
+    uint8_t numResourceInterfaces;
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+    EXPECT_EQ(1, numResourceInterfaces);
+
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
 
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResource, GetResourceProperties)
+{
+    OC_LOG(INFO, TAG, "Starting GetResourceProperties test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -443,38 +472,123 @@ TEST(StackTest, BindResourceTypeNameGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
-    uint8_t numResourceTypes;
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
-    EXPECT_EQ(1, numResourceTypes);
-    const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
-    EXPECT_STREQ("core.led", resourceTypeName);
+    EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
+    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
 
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
-    EXPECT_EQ(2, numResourceTypes);
-    resourceTypeName = OCGetResourceTypeName(handle, 1);
-    EXPECT_STREQ("core.brightled", resourceTypeName);
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
 
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
-    EXPECT_EQ(3, numResourceTypes);
-    resourceTypeName = OCGetResourceTypeName(handle, 2);
-    EXPECT_STREQ("core.reallybrightled", resourceTypeName);
+TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
+{
+    OC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a1/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+    const char *url = OCGetResourceUri(handle);
+    EXPECT_STREQ("/a1/led", url);
+
+    //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
+    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
+    uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
+    EXPECT_EQ(numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, ResourceTypeAttrRepresentation) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
+TEST(StackResource, StackTestResourceDiscoverOneResource)
+{
+    OC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+    const char *url = OCGetResourceUri(handle);
+    EXPECT_STREQ("/a/led", url);
+
+    //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
+    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
+
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
+TEST(StackResource, StackTestResourceDiscoverManyResources)
+{
+    OC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
+    InitStack(OC_SERVER);
 
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+    OCResourceHandle handle1;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led1",
+                                            0,
+                                            OC_DISCOVERABLE));
+    const char *url = OCGetResourceUri(handle1);
+    EXPECT_STREQ("/a/led1", url);
+
+    OCResourceHandle handle2;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led2",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+    url = OCGetResourceUri(handle2);
+    EXPECT_STREQ("/a/led2", url);
+
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
+
+    OCResourceHandle handle3;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led3",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+    url = OCGetResourceUri(handle3);
+    EXPECT_STREQ("/a/led3", url);
+
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, "oc.mi.ll"));
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, "oc.mi.b"));
+
+    OCResourceHandle handle4;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led4",
+                                            0,
+                                            OC_DISCOVERABLE));
+    url = OCGetResourceUri(handle4);
+    EXPECT_STREQ("/a/led4", url);
+
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, "oc.mi.ll"));
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, "oc.mi.b"));
+
+    //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
+
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindResourceTypeNameBad)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -487,21 +601,18 @@ TEST(StackTest, ResourceTypeAttrRepresentation) {
     uint8_t numResourceTypes;
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
     EXPECT_EQ(1, numResourceTypes);
+    const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
+    EXPECT_STREQ("core.led", resourceTypeName);
+
+    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceTypeAttribRepGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceTypeNameGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -514,29 +625,28 @@ TEST(StackTest, BindResourceTypeAttribRepGood) {
     uint8_t numResourceTypes;
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
     EXPECT_EQ(1, numResourceTypes);
+    const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
+    EXPECT_STREQ("core.led", resourceTypeName);
 
     EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
     EXPECT_EQ(2, numResourceTypes);
+    resourceTypeName = OCGetResourceTypeName(handle, 1);
+    EXPECT_STREQ("core.brightled", resourceTypeName);
 
     EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
     EXPECT_EQ(3, numResourceTypes);
+    resourceTypeName = OCGetResourceTypeName(handle, 2);
+    EXPECT_STREQ("core.reallybrightled", resourceTypeName);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, ResourceTypeInterface) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceTypeAttribRepGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -546,33 +656,26 @@ TEST(StackTest, ResourceTypeInterface) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
 
-    uint8_t numResourceInterfaces;
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
-    EXPECT_EQ(1, numResourceInterfaces);
-    const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
-    EXPECT_STREQ("core.rw", resourceInterfaceName);
+    uint8_t numResourceTypes;
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+    EXPECT_EQ(1, numResourceTypes);
 
-    // try getting resource interface names with an invalid index
-    resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
-    EXPECT_STREQ(NULL, resourceInterfaceName);
-    // try getting resource interface names with an invalid index
-    resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
-    EXPECT_STREQ(NULL, resourceInterfaceName);
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+    EXPECT_EQ(2, numResourceTypes);
+
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
+    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+    EXPECT_EQ(3, numResourceTypes);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceInterfaceNameBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
 
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceInterfaceNameBad)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -593,17 +696,10 @@ TEST(StackTest, BindResourceInterfaceNameBad) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceInterfaceNameGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceInterfaceNameGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -629,44 +725,10 @@ TEST(StackTest, BindResourceInterfaceNameGood) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, ResourceTypeInterfaceMethods) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-
-    uint8_t numResourceInterfaces;
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
-    EXPECT_EQ(1, numResourceInterfaces);
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-TEST(StackTest, BindResourceInterfaceMethodsBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceInterfaceMethodsBad)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -685,17 +747,10 @@ TEST(StackTest, BindResourceInterfaceMethodsBad) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindResourceInterfaceMethodsGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindResourceInterfaceMethodsGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle handle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
@@ -717,17 +772,10 @@ TEST(StackTest, BindResourceInterfaceMethodsGood) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindContainedResourceBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindContainedResourceBad)
+{
+    OC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
+    InitStack(OC_SERVER);
 
     OCResourceHandle containerHandle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
@@ -752,21 +800,16 @@ TEST(StackTest, BindContainedResourceBad) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, BindContainedResourceGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackBind, BindContainedResourceGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle containerHandle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
@@ -776,7 +819,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -786,7 +829,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -796,7 +839,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(3, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle2;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
@@ -806,7 +849,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(4, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle3;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
@@ -816,7 +859,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(5, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle4;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
@@ -826,7 +869,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(6, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle5;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
@@ -836,7 +879,7 @@ TEST(StackTest, BindContainedResourceGood) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(7, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
 
     EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
@@ -857,21 +900,58 @@ TEST(StackTest, BindContainedResourceGood) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, GetResourceByIndex) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
+TEST(StackBind, BindEntityHandlerBad)
+{
+    OC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+
+    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL));
+
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindEntityHandlerGood)
+{
+    OC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
+    InitStack(OC_SERVER);
+
+    OCResourceHandle handle;
+    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+                                            "core.led",
+                                            "core.rw",
+                                            "/a/led",
+                                            0,
+                                            OC_DISCOVERABLE|OC_OBSERVABLE));
+
+    OCEntityHandler myHandler = entityHandler;
+
+    EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler));
+
+    EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
+
+    EXPECT_EQ(OC_STACK_OK, OCStop());
+}
 
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResourceAccess, GetResourceByIndex)
+{
+    OC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+    uint8_t resourceIndex = InitResourceIndex();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle containerHandle;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
@@ -881,7 +961,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -891,7 +971,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -901,7 +981,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(3, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle2;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
@@ -911,7 +991,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(4, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle3;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
@@ -921,7 +1001,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(5, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle4;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
@@ -931,7 +1011,7 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(6, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle5;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
@@ -941,96 +1021,29 @@ TEST(StackTest, GetResourceByIndex) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(7, numResources);
-
-    EXPECT_EQ(containerHandle, OCGetResourceHandle(0));
-    EXPECT_EQ(handle0, OCGetResourceHandle(1));
-    EXPECT_EQ(handle1, OCGetResourceHandle(2));
-    EXPECT_EQ(handle2, OCGetResourceHandle(3));
-    EXPECT_EQ(handle3, OCGetResourceHandle(4));
-    EXPECT_EQ(handle4, OCGetResourceHandle(5));
-    EXPECT_EQ(handle5, OCGetResourceHandle(6));
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-TEST(StackTest, BindEntityHandlerBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
+    EXPECT_EQ(++numExpectedResources, numResources);
 
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-
-    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(handle, NULL));
-    EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL));
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-
-OCEntityHandlerResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest) {
-    OC_LOG(INFO, TAG, "Entering entityHandler");
-
-    return OC_EH_OK;
-}
-
-TEST(StackTest, BindEntityHandlerGood) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-
-    OCEntityHandler myHandler = entityHandler;
-
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler));
-
-    EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
+    EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
+    EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
+    EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
+    EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
+    EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
+    EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
+    EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, DeleteHeadResource) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResourceAccess, DeleteHeadResource)
+{
+    OC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -1040,30 +1053,26 @@ TEST(StackTest, DeleteHeadResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(--numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, DeleteHeadResource2) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResourceAccess, DeleteHeadResource2)
+{
+    OC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+    uint8_t resourceIndex = InitResourceIndex();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -1073,7 +1082,7 @@ TEST(StackTest, DeleteHeadResource2) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -1083,33 +1092,29 @@ TEST(StackTest, DeleteHeadResource2) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(--numExpectedResources, numResources);
 
-    EXPECT_EQ(handle1, OCGetResourceHandle(0));
+    EXPECT_EQ(handle1, OCGetResourceHandle(resourceIndex));
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
 
-TEST(StackTest, DeleteLastResource) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResourceAccess, DeleteLastResource)
+{
+    OC_LOG(INFO, TAG, "Starting DeleteLastResource test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+    uint8_t resourceIndex = InitResourceIndex();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -1119,7 +1124,7 @@ TEST(StackTest, DeleteLastResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -1129,13 +1134,13 @@ TEST(StackTest, DeleteLastResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(--numExpectedResources, numResources);
 
-    EXPECT_EQ(handle0, OCGetResourceHandle(0));
+    EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
 
     OCResourceHandle handle2;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
@@ -1145,26 +1150,22 @@ TEST(StackTest, DeleteLastResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, DeleteMiddleResource) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
+TEST(StackResourceAccess, DeleteMiddleResource)
+{
+    OC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
+    InitStack(OC_SERVER);
 
     uint8_t numResources = 0;
+    uint8_t numExpectedResources = InitNumExpectedResources();
+    uint8_t resourceIndex = InitResourceIndex();
+
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
+    EXPECT_EQ(numExpectedResources, numResources);
 
     OCResourceHandle handle0;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
@@ -1174,7 +1175,7 @@ TEST(StackTest, DeleteMiddleResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(1, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle1;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
@@ -1184,7 +1185,7 @@ TEST(StackTest, DeleteMiddleResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     OCResourceHandle handle2;
     EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
@@ -1194,14 +1195,14 @@ TEST(StackTest, DeleteMiddleResource) {
                                             0,
                                             OC_DISCOVERABLE|OC_OBSERVABLE));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(3, numResources);
+    EXPECT_EQ(++numExpectedResources, numResources);
 
     EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
     EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(2, numResources);
+    EXPECT_EQ(--numExpectedResources, numResources);
 
-    EXPECT_EQ(handle0, OCGetResourceHandle(0));
-    EXPECT_EQ(handle2, OCGetResourceHandle(1));
+    EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
+    EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
 
     // Make sure the resource elements are still correct
     uint8_t numResourceInterfaces;
@@ -1213,159 +1214,6 @@ TEST(StackTest, DeleteMiddleResource) {
     EXPECT_EQ(OC_STACK_OK, OCStop());
 }
 
-TEST(StackTest, GetResourceProperties) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-
-    EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
-    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-TEST(StackTest, StackTestResourceDiscoverOneResourceBad) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a1/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-    const char *url = OCGetResourceUri(handle);
-    EXPECT_STREQ("/a1/led", url);
-
-    //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
-    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
-    uint8_t numResources = 0;
-    EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
-    EXPECT_EQ(0, numResources);
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-TEST(StackTest, StackTestResourceDiscoverOneResource) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-    const char *url = OCGetResourceUri(handle);
-    EXPECT_STREQ("/a/led", url);
-
-    //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
-    EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-TEST(StackTest, StackTestResourceDiscoverManyResources) {
-    uint8_t addr[20];
-    uint16_t port = USE_RANDOM_PORT;
-    uint8_t ifname[] = "eth0";
-
-    /*Get Ip address on defined interface and initialize coap on it with random port number
-     * this port number will be used as a source port in all coap communications*/
-    OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr));
-
-    OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port);
-    EXPECT_EQ(OC_STACK_OK, OCInit((char *) addr, port, OC_SERVER));
-
-    OCResourceHandle handle1;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led1",
-                                            0,
-                                            OC_DISCOVERABLE));
-    const char *url = OCGetResourceUri(handle1);
-    EXPECT_STREQ("/a/led1", url);
-
-    OCResourceHandle handle2;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led2",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-    url = OCGetResourceUri(handle2);
-    EXPECT_STREQ("/a/led2", url);
-
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
-
-    OCResourceHandle handle3;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led3",
-                                            0,
-                                            OC_DISCOVERABLE|OC_OBSERVABLE));
-    url = OCGetResourceUri(handle3);
-    EXPECT_STREQ("/a/led3", url);
-
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, "oc.mi.ll"));
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, "oc.mi.b"));
-
-    OCResourceHandle handle4;
-    EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
-                                            "core.led",
-                                            "core.rw",
-                                            "/a/led4",
-                                            0,
-                                            OC_DISCOVERABLE));
-    url = OCGetResourceUri(handle4);
-    EXPECT_STREQ("/a/led4", url);
-
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, "oc.mi.ll"));
-    EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, "oc.mi.b"));
-
-    //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
-
-    EXPECT_EQ(OC_STACK_OK, OCStop());
-}
-
-
 #if 0
 TEST(StackTest, StackTestResourceDiscoverIfFilteringBad) {
     uint8_t addr[20];