You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2017/03/26 23:43:29 UTC

[1/3] incubator-mynewt-core git commit: net/oic; when deleting resource, remove it from oc_app_resources list.

Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/develop cebfd2e3e -> 133a628fd


net/oic; when deleting resource, remove it from oc_app_resources
list.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/0df95ce1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/0df95ce1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/0df95ce1

Branch: refs/heads/develop
Commit: 0df95ce1f7734aed927b68f7df7dcf1edd7ba603
Parents: cebfd2e
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:22:52 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:22:52 2017 -0700

----------------------------------------------------------------------
 net/oic/src/api/oc_ri.c | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0df95ce1/net/oic/src/api/oc_ri.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_ri.c b/net/oic/src/api/oc_ri.c
index d6180a6..d5779e5 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -251,6 +251,14 @@ oc_ri_alloc_resource(void)
 void
 oc_ri_delete_resource(oc_resource_t *resource)
 {
+    oc_resource_t *tmp;
+
+    SLIST_FOREACH(tmp, &oc_app_resources, next) {
+        if (tmp == resource) {
+            SLIST_REMOVE(&oc_app_resources, tmp, oc_resource, next);
+            break;
+        }
+    }
     os_memblock_put(&oc_resource_pool, resource);
 }
 


[3/3] incubator-mynewt-core git commit: net/oic; add a testcase for basic observe.

Posted by ma...@apache.org.
net/oic; add a testcase for basic observe.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/133a628f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/133a628f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/133a628f

Branch: refs/heads/develop
Commit: 133a628fd0ebff170beb53703af388476dcf1d29
Parents: 4393af4
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:43:03 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:43:03 2017 -0700

----------------------------------------------------------------------
 net/oic/test/src/test_discovery.c      |  17 +--
 net/oic/test/src/test_getset.c         |  24 ++--
 net/oic/test/src/test_observe.c        | 171 ++++++++++++++++++++++++++++
 net/oic/test/src/test_oic.h            |   1 +
 net/oic/test/src/testcases/oic_tests.c |  11 +-
 5 files changed, 201 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_discovery.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_discovery.c b/net/oic/test/src/test_discovery.c
index 4722a1e..c9e1cfd 100644
--- a/net/oic/test/src/test_discovery.c
+++ b/net/oic/test/src/test_discovery.c
@@ -23,6 +23,7 @@
 
 static int test_discovery_state;
 static volatile int test_discovery_done;
+static struct oc_resource *test_res_light;
 
 static void test_discovery_next_step(struct os_event *);
 static struct os_event test_discovery_next_ev = {
@@ -121,15 +122,16 @@ test_discovery_next_step(struct os_event *ev)
         oic_test_reset_tmo("2nd discovery");
         break;
     case 3: {
-        oc_resource_t *res = oc_new_resource("/light/test", 1, 0);
+        test_res_light = oc_new_resource("/light/test", 1, 0);
 
-        oc_resource_bind_resource_type(res, "oic.r.light");
-        oc_resource_bind_resource_interface(res, OC_IF_RW);
-        oc_resource_set_default_interface(res, OC_IF_RW);
+        oc_resource_bind_resource_type(test_res_light, "oic.r.light");
+        oc_resource_bind_resource_interface(test_res_light, OC_IF_RW);
+        oc_resource_set_default_interface(test_res_light, OC_IF_RW);
 
-        oc_resource_set_discoverable(res);
-        oc_resource_set_request_handler(res, OC_GET, test_discovery_get);
-        oc_add_resource(res);
+        oc_resource_set_discoverable(test_res_light);
+        oc_resource_set_request_handler(test_res_light, OC_GET,
+                                        test_discovery_get);
+        oc_add_resource(test_res_light);
         oc_do_ip_discovery(NULL, test_discovery_cb);
         oic_test_reset_tmo("3rd discovery");
         break;
@@ -148,6 +150,7 @@ test_discovery(void)
     while (!test_discovery_done) {
         os_eventq_run(&oic_tapp_evq);
     }
+    oc_delete_resource(test_res_light);
 }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_getset.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_getset.c b/net/oic/test/src/test_getset.c
index 73e6c60..ff59657 100644
--- a/net/oic/test/src/test_getset.c
+++ b/net/oic/test/src/test_getset.c
@@ -23,6 +23,7 @@
 
 static int test_getset_state;
 static volatile int test_getset_done;
+static struct oc_resource *test_res_getset;
 
 static void test_getset_next_step(struct os_event *);
 static struct os_event test_getset_next_ev = {
@@ -80,20 +81,19 @@ test_getset_next_step(struct os_event *ev)
 
     test_getset_state++;
     switch (test_getset_state) {
-    case 1: {
-        oc_resource_t *res;
-
-        res = oc_new_resource("/getset", 1, 0);
-        TEST_ASSERT_FATAL(res);
+    case 1:
+        test_res_getset = oc_new_resource("/getset", 1, 0);
+        TEST_ASSERT_FATAL(test_res_getset);
 
-        oc_resource_bind_resource_interface(res, OC_IF_RW);
-        oc_resource_set_default_interface(res, OC_IF_RW);
+        oc_resource_bind_resource_interface(test_res_getset, OC_IF_RW);
+        oc_resource_set_default_interface(test_res_getset, OC_IF_RW);
 
-        oc_resource_set_request_handler(res, OC_GET, test_getset_get);
-        oc_resource_set_request_handler(res, OC_PUT, test_getset_put);
-        b_rc = oc_add_resource(res);
+        oc_resource_set_request_handler(test_res_getset, OC_GET,
+                                        test_getset_get);
+        oc_resource_set_request_handler(test_res_getset, OC_PUT,
+                                        test_getset_put);
+        b_rc = oc_add_resource(test_res_getset);
         TEST_ASSERT(b_rc == true);
-    }
         /* fall-through */
     case 2:
     case 3:
@@ -121,7 +121,7 @@ test_getset(void)
     while (!test_getset_done) {
         os_eventq_run(&oic_tapp_evq);
     }
-    oc_main_shutdown();
+    oc_delete_resource(test_res_getset);
 }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_observe.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_observe.c b/net/oic/test/src/test_observe.c
new file mode 100644
index 0000000..155e84a
--- /dev/null
+++ b/net/oic/test/src/test_observe.c
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "test_oic.h"
+
+#include <os/os.h>
+#include <oic/oc_api.h>
+
+#include <cborattr/cborattr.h>
+
+#include <oic/../../src/messaging/coap/observe.h>
+
+static int test_observe_state;
+static volatile int test_observe_done;
+static struct oc_resource *test_res_observe;
+
+static void test_observe_next_step(struct os_event *);
+static struct os_event test_observe_next_ev = {
+    .ev_cb = test_observe_next_step
+};
+
+static void
+test_observe_get(struct oc_request *request, oc_interface_mask_t interface)
+{
+    oc_rep_start_root_object();
+    switch (interface) {
+    case OC_IF_BASELINE:
+        oc_process_baseline_interface(request->resource);
+    case OC_IF_R:
+        switch (test_observe_state) {
+        case 1:
+        case 2:
+            /* initial get request */
+        case 3:
+        case 4:
+        case 5:
+        case 6:
+            oc_rep_set_int(root, value, test_observe_state);
+            break;
+        default:
+            break;
+        }
+    default:
+        break;
+    }
+    oc_rep_end_root_object();
+    oc_send_response(request, OC_STATUS_OK);
+}
+
+static void
+test_observe_rsp(struct oc_client_response *rsp)
+{
+    long long rsp_value;
+    struct cbor_attr_t attrs[] = {
+        [0] = {
+            .attribute = "state",
+            .type = CborAttrIntegerType,
+            .addr.integer = &rsp_value,
+            .dflt.integer = 0
+        },
+        [1] = {
+        }
+    };
+    struct os_mbuf *m;
+    uint16_t data_off;
+    int len;
+
+    switch (test_observe_state) {
+    case 1:
+        TEST_ASSERT(rsp->code == OC_STATUS_NOT_FOUND);
+        break;
+    case 2:
+    case 3:
+    case 4:
+        TEST_ASSERT(rsp->code == OC_STATUS_OK);
+        len = coap_get_payload(rsp->packet, &m, &data_off);
+        if (cbor_read_mbuf_attrs(m, data_off, len, attrs)) {
+            TEST_ASSERT(rsp_value == test_observe_state);
+        }
+        break;
+    default:
+        break;
+    }
+    os_eventq_put(&oic_tapp_evq, &test_observe_next_ev);
+}
+
+static void
+test_observe_next_step(struct os_event *ev)
+{
+    bool b_rc;
+    int rc;
+    struct oc_server_handle server;
+
+    test_observe_state++;
+    switch (test_observe_state) {
+    case 1:
+        test_res_observe = oc_new_resource("/observe", 1, 0);
+        TEST_ASSERT_FATAL(test_res_observe);
+
+        oc_resource_bind_resource_interface(test_res_observe, OC_IF_R);
+        oc_resource_set_default_interface(test_res_observe, OC_IF_R);
+        oc_resource_set_observable(test_res_observe);
+
+        oc_resource_set_request_handler(test_res_observe, OC_GET,
+                                        test_observe_get);
+        b_rc = oc_add_resource(test_res_observe);
+        TEST_ASSERT(b_rc == true);
+
+        /*
+         * Observe nonexistent URI
+         */
+        oic_test_get_endpoint(&server);
+        b_rc = oc_do_observe("/observe_wrong", &server, NULL, test_observe_rsp,
+          LOW_QOS);
+        TEST_ASSERT_FATAL(b_rc == true);
+
+        oic_test_reset_tmo("observe1");
+        break;
+    case 2:
+        oic_test_get_endpoint(&server);
+        b_rc = oc_do_observe("/observe", &server, NULL, test_observe_rsp,
+                             LOW_QOS);
+        TEST_ASSERT_FATAL(b_rc == true);
+
+        oic_test_reset_tmo("observe2");
+        break;
+    case 3:
+    case 4:
+        /*
+         * Valid notifications
+         */
+        rc = oc_notify_observers(test_res_observe);
+        TEST_ASSERT(rc == 1); /* one observer */
+        oic_test_reset_tmo("observe3-4");
+        break;
+    case 5:
+        test_observe_done = 1;
+        break;
+    default:
+        TEST_ASSERT_FATAL(0);
+        break;
+    }
+}
+
+void
+test_observe(void)
+{
+    os_eventq_put(&oic_tapp_evq, &test_observe_next_ev);
+
+    while (!test_observe_done) {
+        os_eventq_run(&oic_tapp_evq);
+    }
+    oc_delete_resource(test_res_observe);
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_oic.h
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_oic.h b/net/oic/test/src/test_oic.h
index 5aef7b7..d247226 100644
--- a/net/oic/test/src/test_oic.h
+++ b/net/oic/test/src/test_oic.h
@@ -42,6 +42,7 @@ void oic_test_get_endpoint(struct oc_server_handle *);
 
 void test_discovery(void);
 void test_getset(void);
+void test_observe(void);
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/testcases/oic_tests.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/testcases/oic_tests.c b/net/oic/test/src/testcases/oic_tests.c
index cacd731..aefdb3e 100644
--- a/net/oic/test/src/testcases/oic_tests.c
+++ b/net/oic/test/src/testcases/oic_tests.c
@@ -24,7 +24,7 @@
 #include <mn_socket/mn_socket.h>
 
 #define OIC_TAPP_PRIO       9
-#define OIC_TAPP_STACK_SIZE 1024
+#define OIC_TAPP_STACK_SIZE OS_STACK_ALIGN(1024)
 
 /*
  * How long to wait before declaring discovery process failure.
@@ -33,7 +33,7 @@
 
 static struct os_task oic_tapp;
 static const char *oic_test_phase;
-static os_stack_t oic_tapp_stack[OS_STACK_ALIGN(OIC_TAPP_STACK_SIZE)];
+static os_stack_t oic_tapp_stack[OIC_TAPP_STACK_SIZE];
 struct os_eventq oic_tapp_evq;
 static struct os_callout oic_test_timer;
 static struct oc_server_handle oic_tgt;
@@ -41,7 +41,8 @@ static struct oc_server_handle oic_tgt;
 static void
 oic_test_timer_cb(struct os_event *ev)
 {
-    TEST_ASSERT_FATAL(0, "test_phase: %s\n", oic_test_phase ? oic_test_phase : "unknwn");
+    TEST_ASSERT_FATAL(0, "test_phase: %s\n",
+                      oic_test_phase ? oic_test_phase : "unknwn");
 }
 
 void
@@ -85,6 +86,8 @@ oic_test_handler(void *arg)
     oc_main_init(&test_handler);
     test_discovery();
     test_getset();
+    test_observe();
+    oc_main_shutdown();
     tu_restart();
 }
 
@@ -102,7 +105,7 @@ oic_test_init(void)
 
     rc = os_task_init(&oic_tapp, "oic_test", oic_test_handler, NULL,
                       OIC_TAPP_PRIO, OS_WAIT_FOREVER,
-                      oic_tapp_stack, OS_STACK_ALIGN(OIC_TAPP_STACK_SIZE));
+                      oic_tapp_stack, OIC_TAPP_STACK_SIZE);
     TEST_ASSERT_FATAL(rc == 0);
     oc_evq_set(&oic_tapp_evq);
 


[2/3] incubator-mynewt-core git commit: net/oic; oc_endpoint size is different depending on transport type. Take this into account when comparing them.

Posted by ma...@apache.org.
net/oic; oc_endpoint size is different depending on transport type.
Take this into account when comparing them.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/4393af41
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/4393af41
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/4393af41

Branch: refs/heads/develop
Commit: 4393af41e3938601972ffe8be7e859c67cf57785
Parents: 0df95ce
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:41:44 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:41:44 2017 -0700

----------------------------------------------------------------------
 net/oic/src/api/oc_ri.c              |  2 +-
 net/oic/src/messaging/coap/observe.c | 14 ++++++++------
 net/oic/src/port/oc_connectivity.h   | 14 ++++++++++++++
 net/oic/src/security/oc_dtls.c       |  2 +-
 4 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/api/oc_ri.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_ri.c b/net/oic/src/api/oc_ri.c
index d5779e5..c03458b 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -809,7 +809,7 @@ oc_ri_get_client_cb(const char *uri, oc_server_handle_t *server,
         if (oc_string_len(cb->uri) == strlen(uri) &&
           strncmp(oc_string(cb->uri), uri, strlen(uri)) == 0 &&
           memcmp(&cb->server.endpoint, &server->endpoint,
-            sizeof(oc_endpoint_t)) == 0 &&
+                 oc_endpoint_size(&cb->server.endpoint)) == 0 &&
           cb->method == method) {
             return cb;
         }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/messaging/coap/observe.c
----------------------------------------------------------------------
diff --git a/net/oic/src/messaging/coap/observe.c b/net/oic/src/messaging/coap/observe.c
index 3d45e03..4369360 100644
--- a/net/oic/src/messaging/coap/observe.c
+++ b/net/oic/src/messaging/coap/observe.c
@@ -111,7 +111,7 @@ coap_remove_observer_by_client(oc_endpoint_t *endpoint)
     obs = SLIST_FIRST(&oc_observers);
     while (obs) {
         next = SLIST_NEXT(obs, next);
-        if (memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0) {
+        if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0) {
             obs->resource->num_observers--;
             coap_remove_observer(obs);
             removed++;
@@ -131,7 +131,7 @@ coap_remove_observer_by_token(oc_endpoint_t *endpoint, uint8_t *token,
     obs = SLIST_FIRST(&oc_observers);
     while (obs) {
         next = SLIST_NEXT(obs, next);
-        if (memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0 &&
+        if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0 &&
           obs->token_len == token_len &&
           memcmp(obs->token, token, token_len) == 0) {
             obs->resource->num_observers--;
@@ -153,7 +153,8 @@ coap_remove_observer_by_uri(oc_endpoint_t *endpoint, const char *uri)
     obs = SLIST_FIRST(&oc_observers);
     while (obs) {
         next = SLIST_NEXT(obs, next);
-        if (((memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0)) &&
+        if (((memcmp(&obs->endpoint, endpoint,
+                     oc_endpoint_size(endpoint)) == 0)) &&
           (obs->url == uri || memcmp(obs->url, uri, strlen(obs->url)) == 0)) {
             obs->resource->num_observers--;
             coap_remove_observer(obs);
@@ -173,7 +174,7 @@ coap_remove_observer_by_mid(oc_endpoint_t *endpoint, uint16_t mid)
     obs = SLIST_FIRST(&oc_observers);
     while (obs) {
         next = SLIST_NEXT(obs, next);
-        if (memcmp(&obs->endpoint, endpoint, sizeof(*endpoint)) == 0 &&
+        if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0 &&
           obs->last_mid == mid) {
             obs->resource->num_observers--;
             coap_remove_observer(obs);
@@ -233,8 +234,9 @@ coap_notify_observers(oc_resource_t *resource,
     /* iterate over observers */
     for (obs = SLIST_FIRST(&oc_observers); obs; obs = SLIST_NEXT(obs, next)) {
         /* skip if neither resource nor endpoint match */
-        if (resource != obs->resource &&
-            0 != memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t))) {
+        if ((resource && resource != obs->resource) ||
+            (endpoint && memcmp(&obs->endpoint, endpoint,
+                                oc_endpoint_size(endpoint)) != 0)) {
             continue;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/port/oc_connectivity.h
----------------------------------------------------------------------
diff --git a/net/oic/src/port/oc_connectivity.h b/net/oic/src/port/oc_connectivity.h
index a7cce39..787fbf2 100644
--- a/net/oic/src/port/oc_connectivity.h
+++ b/net/oic/src/port/oc_connectivity.h
@@ -83,6 +83,20 @@ typedef struct oc_endpoint {
     };
 } oc_endpoint_t;
 
+static inline int
+oc_endpoint_size(struct oc_endpoint *oe)
+{
+    if (oe->oe.flags & (IP | IP4)) {
+        return sizeof (struct oc_endpoint_ip);
+    } else if (oe->oe.flags & GATT) {
+        return sizeof (struct oc_endpoint_ble);
+    } else if (oe->oe.flags & SERIAL) {
+        return sizeof (struct oc_endpoint_plain);
+    } else {
+        return sizeof (struct oc_endpoint);
+    }
+}
+
 #define OC_MBUF_ENDPOINT(m)                                            \
     ((struct oc_endpoint *)((uint8_t *)m + sizeof(struct os_mbuf) +    \
                             sizeof(struct os_mbuf_pkthdr)))

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/security/oc_dtls.c
----------------------------------------------------------------------
diff --git a/net/oic/src/security/oc_dtls.c b/net/oic/src/security/oc_dtls.c
index fdd0249..a904d79 100644
--- a/net/oic/src/security/oc_dtls.c
+++ b/net/oic/src/security/oc_dtls.c
@@ -37,7 +37,7 @@ oc_sec_dtls_get_peer(oc_endpoint_t *endpoint)
 {
   oc_sec_dtls_peer_t *peer = oc_list_head(dtls_peers);
   while (peer != NULL) {
-    if (memcmp(&peer->session.addr, endpoint, sizeof(oc_endpoint_t)) == 0)
+    if (memcmp(&peer->session.addr, endpoint, oc_endpoint_size(endpoint)) == 0)
       break;
     peer = oc_list_item_next(peer);
   }